PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+PHRpdGxlPkhUTUxwYXJzZXI8L3RpdGxlPjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNTguMSI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIiB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgLnN5bm9wc2lzLCAuY2xhc3NzeW5vcHNpcyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlZWVlZWU7CiAgICAgICAgICAgIGJvcmRlcjogc29saWQgMXB4ICNhYWFhYWE7CiAgICAgICAgICAgIHBhZGRpbmc6IDAuNWVtOwogICAgICAgIH0KICAgICAgICAucHJvZ3JhbWxpc3RpbmcgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWVlZWZmOwogICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjYWFhYWZmOwogICAgICAgICAgICBwYWRkaW5nOiAwLjVlbTsKICAgICAgICB9CiAgICAgICAgLnZhcmlhYmxlbGlzdCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDNlbTsKICAgICAgICB9CiAgICAgICAgLm5hdmlnYXRpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZlZWVlOwogICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjZmZhYWFhOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwLjVlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41ZW07CiAgICAgICAgfQogICAgICAgIC5uYXZpZ2F0aW9uIGEgewogICAgICAgICAgICBjb2xvcjogIzc3MDAwMDsKICAgICAgICB9CiAgICAgICAgLm5hdmlnYXRpb24gYTp2aXNpdGVkIHsKICAgICAgICAgICAgY29sb3I6ICM1NTAwMDA7CiAgICAgICAgfQogICAgICAgIC5uYXZpZ2F0aW9uIC50aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjAwJTsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+PGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR25vbWUgWE1MIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+PGxpbmsgcmVsPSJ1cCIgaHJlZj0ibGlieG1sLWxpYi5odG1sIiB0aXRsZT0iTGlieG1sIExpYnJhcnkgUmVmZXJlbmNlIj48bGluayByZWw9InByZXZpb3VzIiBocmVmPSJsaWJ4bWwteG1sZXJyb3IuaHRtbCIgdGl0bGU9InhtbGVycm9yIj48bGluayByZWw9Im5leHQiIGhyZWY9ImxpYnhtbC1IVE1MdHJlZS5odG1sIiB0aXRsZT0iSFRNTHRyZWUiPjwvaGVhZD48Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+PHRhYmxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIiBjbGFzcz0ibmF2aWdhdGlvbiIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjIiPjx0ciB2YWxpZ249Im1pZGRsZSI+PHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0ibGlieG1sLXhtbGVycm9yLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9pbWc+PC9hPjwvdGQ+PHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0ibGlieG1sLWxpYi5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9pbWc+PC9hPjwvdGQ+PHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2ltZz48L2E+PC90ZD48dGggd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiPkdub21lIFhNTCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RoPjx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImxpYnhtbC1IVE1MdHJlZS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2ltZz48L2E+PC90ZD48L3RyPjwvdGFibGU+PGRpdiBjbGFzcz0icmVmZW50cnkiIGxhbmc9ImVuIj48YSBuYW1lPSJsaWJ4bWwtSFRNTHBhcnNlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+PGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PGgyPkhUTUxwYXJzZXI8L2gyPjxwPkhUTUxwYXJzZXIgJiM4MjEyOyA8L3A+PC9kaXY+PGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPjxoMj5TeW5vcHNpczwvaDI+PHByZSBjbGFzcz0ic3lub3BzaXMiPgoKCgp0eXBlZGVmICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0Ij5odG1sUGFyc2VyQ3R4dDwvYT47CnR5cGVkZWYgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlckN0eHRQdHIiPmh0bWxQYXJzZXJDdHh0UHRyPC9hPjsKdHlwZWRlZiAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sUGFyc2VyTm9kZUluZm8iPmh0bWxQYXJzZXJOb2RlSW5mbzwvYT47CnR5cGVkZWYgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFNBWEhhbmRsZXIiPmh0bWxTQVhIYW5kbGVyPC9hPjsKdHlwZWRlZiAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sU0FYSGFuZGxlclB0ciI+aHRtbFNBWEhhbmRsZXJQdHI8L2E+Owp0eXBlZGVmICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJJbnB1dCI+aHRtbFBhcnNlcklucHV0PC9hPjsKdHlwZWRlZiAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sUGFyc2VySW5wdXRQdHIiPmh0bWxQYXJzZXJJbnB1dFB0cjwvYT47CnR5cGVkZWYgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbERvY1B0ciI+aHRtbERvY1B0cjwvYT47CnR5cGVkZWYgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbE5vZGVQdHIiPmh0bWxOb2RlUHRyPC9hPjsKc3RydWN0ICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sRWxlbURlc2MiPmh0bWxFbGVtRGVzYzwvYT47CnR5cGVkZWYgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVsZW1EZXNjUHRyIj5odG1sRWxlbURlc2NQdHI8L2E+OwpzdHJ1Y3QgICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxFbnRpdHlEZXNjIj5odG1sRW50aXR5RGVzYzwvYT47CnR5cGVkZWYgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVudGl0eURlc2NQdHIiPmh0bWxFbnRpdHlEZXNjUHRyPC9hPjsKY29uc3QgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sRWxlbURlc2MiPmh0bWxFbGVtRGVzYzwvYT4qIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFRhZ0xvb2t1cCI+aHRtbFRhZ0xvb2t1cDwvYT4gICAgICAgICAgIChjb25zdCA8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbENoYXIiPnhtbENoYXI8L2E+ICp0YWcpOwpjb25zdCA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxFbnRpdHlEZXNjIj5odG1sRW50aXR5RGVzYzwvYT4qIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVudGl0eUxvb2t1cCI+aHRtbEVudGl0eUxvb2t1cDwvYT4gICAgICAoY29uc3QgPGEgaHJlZj0ibGlieG1sLXRyZWUuaHRtbCN4bWxDaGFyIj54bWxDaGFyPC9hPiAqbmFtZSk7CmNvbnN0IDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVudGl0eURlc2MiPmh0bWxFbnRpdHlEZXNjPC9hPiogPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sRW50aXR5VmFsdWVMb29rdXAiPmh0bWxFbnRpdHlWYWx1ZUxvb2t1cDwvYT4gKHVuc2lnbmVkIGludCB2YWx1ZSk7CmludCAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbElzQXV0b0Nsb3NlZCI+aHRtbElzQXV0b0Nsb3NlZDwvYT4gICAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbERvY1B0ciI+aHRtbERvY1B0cjwvYT4gZG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxOb2RlUHRyIj5odG1sTm9kZVB0cjwvYT4gZWxlbSk7CmludCAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEF1dG9DbG9zZVRhZyI+aHRtbEF1dG9DbG9zZVRhZzwvYT4gICAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbERvY1B0ciI+aHRtbERvY1B0cjwvYT4gZG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbENoYXIiPnhtbENoYXI8L2E+ICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxOb2RlUHRyIj5odG1sTm9kZVB0cjwvYT4gZWxlbSk7CmNvbnN0IDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVudGl0eURlc2MiPmh0bWxFbnRpdHlEZXNjPC9hPiogPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sUGFyc2VFbnRpdHlSZWYiPmh0bWxQYXJzZUVudGl0eVJlZjwvYT4gICAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlckN0eHRQdHIiPmh0bWxQYXJzZXJDdHh0UHRyPC9hPiBjdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbENoYXIiPnhtbENoYXI8L2E+ICoqc3RyKTsKaW50ICAgICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sUGFyc2VDaGFyUmVmIj5odG1sUGFyc2VDaGFyUmVmPC9hPiAgICAgICAgICAgICAgICAoPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sUGFyc2VyQ3R4dFB0ciI+aHRtbFBhcnNlckN0eHRQdHI8L2E+IGN0eHQpOwp2b2lkICAgICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZUVsZW1lbnQiPmh0bWxQYXJzZUVsZW1lbnQ8L2E+ICAgICAgICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gY3R4dCk7CjxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlckN0eHRQdHIiPmh0bWxQYXJzZXJDdHh0UHRyPC9hPiA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0Ij5odG1sQ3JlYXRlTWVtb3J5UGFyc2VyQ3R4dDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSk7CmludCAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlRG9jdW1lbnQiPmh0bWxQYXJzZURvY3VtZW50PC9hPiAgICAgICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gY3R4dCk7CjxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbERvY1B0ciI+aHRtbERvY1B0cjwvYT4gIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFNBWFBhcnNlRG9jIj5odG1sU0FYUGFyc2VEb2M8L2E+ICAgICAgICAgICAgICAgICAoPGEgaHJlZj0ibGlieG1sLXRyZWUuaHRtbCN4bWxDaGFyIj54bWxDaGFyPC9hPiAqY3VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sU0FYSGFuZGxlclB0ciI+aHRtbFNBWEhhbmRsZXJQdHI8L2E+IHNheCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpOwo8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxEb2NQdHIiPmh0bWxEb2NQdHI8L2E+ICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZURvYyI+aHRtbFBhcnNlRG9jPC9hPiAgICAgICAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC10cmVlLmh0bWwjeG1sQ2hhciI+eG1sQ2hhcjwvYT4gKmN1ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcpOwo8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxEb2NQdHIiPmh0bWxEb2NQdHI8L2E+ICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxTQVhQYXJzZUZpbGUiPmh0bWxTQVhQYXJzZUZpbGU8L2E+ICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFNBWEhhbmRsZXJQdHIiPmh0bWxTQVhIYW5kbGVyUHRyPC9hPiBzYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJEYXRhKTsKPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sRG9jUHRyIj5odG1sRG9jUHRyPC9hPiAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sUGFyc2VGaWxlIj5odG1sUGFyc2VGaWxlPC9hPiAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKaW50ICAgICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNVVEY4VG9IdG1sIj5VVEY4VG9IdG1sPC9hPiAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm91dGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaW5sZW4pOwppbnQgICAgICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxFbmNvZGVFbnRpdGllcyI+aHRtbEVuY29kZUVudGl0aWVzPC9hPiAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKm91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpvdXRsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlubGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcXVvdGVDaGFyKTsKaW50ICAgICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sSXNTY3JpcHRBdHRyaWJ1dGUiPmh0bWxJc1NjcmlwdEF0dHJpYnV0ZTwvYT4gICAgICAgICAgIChjb25zdCA8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbENoYXIiPnhtbENoYXI8L2E+ICpuYW1lKTsKaW50ICAgICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sSGFuZGxlT21pdHRlZEVsZW0iPmh0bWxIYW5kbGVPbWl0dGVkRWxlbTwvYT4gICAgICAgICAgIChpbnQgdmFsKTsKdm9pZCAgICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sRnJlZVBhcnNlckN0eHQiPmh0bWxGcmVlUGFyc2VyQ3R4dDwvYT4gICAgICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gY3R4dCk7CjxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlckN0eHRQdHIiPmh0bWxQYXJzZXJDdHh0UHRyPC9hPiA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxDcmVhdGVQdXNoUGFyc2VyQ3R4dCI+aHRtbENyZWF0ZVB1c2hQYXJzZXJDdHh0PC9hPiAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFNBWEhhbmRsZXJQdHIiPmh0bWxTQVhIYW5kbGVyUHRyPC9hPiBzYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2h1bmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ibGlieG1sLWVuY29kaW5nLmh0bWwjeG1sQ2hhckVuY29kaW5nIj54bWxDaGFyRW5jb2Rpbmc8L2E+IGVuYyk7CmludCAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlQ2h1bmsiPmh0bWxQYXJzZUNodW5rPC9hPiAgICAgICAgICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gY3R4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2h1bmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVybWluYXRlKTsKPC9wcmU+PC9kaXY+PGRpdiBjbGFzcz0icmVmc2VjdDEiIGxhbmc9ImVuIj48aDI+RGVzY3JpcHRpb248L2gyPjxwPgoKPC9wPjwvZGl2PjxkaXYgY2xhc3M9InJlZnNlY3QxIiBsYW5nPSJlbiI+PGgyPkRldGFpbHM8L2gyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxQYXJzZXJDdHh0Ij48L2E+aHRtbFBhcnNlckN0eHQ8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHhtbFBhcnNlckN0eHQgaHRtbFBhcnNlckN0eHQ7CjwvcHJlPjxwPgoKPC9wPjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sUGFyc2VyQ3R4dFB0ciI+PC9hPmh0bWxQYXJzZXJDdHh0UHRyPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiB4bWxQYXJzZXJDdHh0UHRyIGh0bWxQYXJzZXJDdHh0UHRyOwo8L3ByZT48cD4KCjwvcD48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbFBhcnNlck5vZGVJbmZvIj48L2E+aHRtbFBhcnNlck5vZGVJbmZvPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiB4bWxQYXJzZXJOb2RlSW5mbyBodG1sUGFyc2VyTm9kZUluZm87CjwvcHJlPjxwPgoKPC9wPjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sU0FYSGFuZGxlciI+PC9hPmh0bWxTQVhIYW5kbGVyPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiB4bWxTQVhIYW5kbGVyIGh0bWxTQVhIYW5kbGVyOwo8L3ByZT48cD4KCjwvcD48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbFNBWEhhbmRsZXJQdHIiPjwvYT5odG1sU0FYSGFuZGxlclB0cjwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgeG1sU0FYSGFuZGxlclB0ciBodG1sU0FYSGFuZGxlclB0cjsKPC9wcmU+PHA+Cgo8L3A+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxQYXJzZXJJbnB1dCI+PC9hPmh0bWxQYXJzZXJJbnB1dDwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgeG1sUGFyc2VySW5wdXQgaHRtbFBhcnNlcklucHV0Owo8L3ByZT48cD4KCjwvcD48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbFBhcnNlcklucHV0UHRyIj48L2E+aHRtbFBhcnNlcklucHV0UHRyPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiB4bWxQYXJzZXJJbnB1dFB0ciBodG1sUGFyc2VySW5wdXRQdHI7CjwvcHJlPjxwPgoKPC9wPjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sRG9jUHRyIj48L2E+aHRtbERvY1B0cjwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgeG1sRG9jUHRyIGh0bWxEb2NQdHI7CjwvcHJlPjxwPgoKPC9wPjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sTm9kZVB0ciI+PC9hPmh0bWxOb2RlUHRyPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiB4bWxOb2RlUHRyIGh0bWxOb2RlUHRyOwo8L3ByZT48cD4KCjwvcD48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbEVsZW1EZXNjIj48L2E+c3RydWN0IGh0bWxFbGVtRGVzYzwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBodG1sRWxlbURlc2MgewogICAgY29uc3QgY2hhciAqbmFtZTsJLyogVGhlIHRhZyBuYW1lICovCiAgICBjaGFyIHN0YXJ0VGFnOyAgICAgIC8qIFdoZXRoZXIgdGhlIHN0YXJ0IHRhZyBjYW4gYmUgaW1wbGllZCAqLwogICAgY2hhciBlbmRUYWc7ICAgICAgICAvKiBXaGV0aGVyIHRoZSBlbmQgdGFnIGNhbiBiZSBpbXBsaWVkICovCiAgICBjaGFyIHNhdmVFbmRUYWc7ICAgIC8qIFdoZXRoZXIgdGhlIGVuZCB0YWcgc2hvdWxkIGJlIHNhdmVkICovCiAgICBjaGFyIGVtcHR5OyAgICAgICAgIC8qIElzIHRoaXMgYW4gZW1wdHkgZWxlbWVudCA/ICovCiAgICBjaGFyIGRlcHI7ICAgICAgICAgIC8qIElzIHRoaXMgYSBkZXByZWNhdGVkIGVsZW1lbnQgPyAqLwogICAgY2hhciBkdGQ7ICAgICAgICAgICAvKiAxOiBvbmx5IGluIExvb3NlIERURCwgMjogb25seSBGcmFtZXNldCBvbmUgKi8KICAgIGNoYXIgaXNpbmxpbmU7ICAgICAgLyogaXMgdGhpcyBhIGJsb2NrIDAgb3IgaW5saW5lIDEgZWxlbWVudCAqLwogICAgY29uc3QgY2hhciAqZGVzYzsgICAvKiB0aGUgZGVzY3JpcHRpb24gKi8KCi8qIE5SSyBKYW4uMjAwMwogKiBOZXcgZmllbGRzIGVuY2Fwc3VsYXRpbmcgSFRNTCBzdHJ1Y3R1cmUKICoKICogQnVnczoKICoJVGhpcyBpcyBhIHZlcnkgbGltaXRlZCByZXByZXNlbnRhdGlvbi4gIEl0IGZhaWxzIHRvIHRlbGwgdXMgd2hlbgogKglhbiBlbGVtZW50ICpyZXF1aXJlcyogc3ViZWxlbWVudHMgKHdlIG9ubHkgaGF2ZSB3aGV0aGVyIHRoZXkncmUKICoJYWxsb3dlZCBvciBub3QpLCBhbmQgaXQgZG9lc24ndCB0ZWxsIHVzIHdoZXJlIENEQVRBIGFuZCBQQ0RBVEEKICoJYXJlIGFsbG93ZWQuICBTb21lIGVsZW1lbnQgcmVsYXRpb25zaGlwcyBhcmUgbm90IGZ1bGx5IHJlcHJlc2VudGVkOgogKgl0aGVzZSBhcmUgZmxhZ2dlZCB3aXRoIHRoZSB3b3JkIE1PRElGSUVSCiAqLwogICAgY29uc3QgY2hhcioqIHN1YmVsdHM7CQkvKiBhbGxvd2VkIHN1Yi1lbGVtZW50cyBvZiB0aGlzIGVsZW1lbnQgKi8KICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRzdWJlbHQ7CS8qIHN1YmVsZW1lbnQgZm9yIHN1Z2dlc3RlZCBhdXRvLXJlcGFpcgoJCQkJCSAgIGlmIG5lY2Vzc2FyeSBvciBOVUxMICovCiAgICBjb25zdCBjaGFyKiogYXR0cnNfb3B0OwkJLyogT3B0aW9uYWwgQXR0cmlidXRlcyAqLwogICAgY29uc3QgY2hhcioqIGF0dHJzX2RlcHI7CQkvKiBBZGRpdGlvbmFsIGRlcHJlY2F0ZWQgYXR0cmlidXRlcyAqLwogICAgY29uc3QgY2hhcioqIGF0dHJzX3JlcTsJCS8qIFJlcXVpcmVkIGF0dHJpYnV0ZXMgKi8KfTsKPC9wcmU+PHA+Cgo8L3A+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxFbGVtRGVzY1B0ciI+PC9hPmh0bWxFbGVtRGVzY1B0cjwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgaHRtbEVsZW1EZXNjICpodG1sRWxlbURlc2NQdHI7CjwvcHJlPjxwPgoKPC9wPjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sRW50aXR5RGVzYyI+PC9hPnN0cnVjdCBodG1sRW50aXR5RGVzYzwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBodG1sRW50aXR5RGVzYyB7CiAgICB1bnNpZ25lZCBpbnQgdmFsdWU7CS8qIHRoZSBVTklDT0RFIHZhbHVlIGZvciB0aGUgY2hhcmFjdGVyICovCiAgICBjb25zdCBjaGFyICpuYW1lOwkvKiBUaGUgZW50aXR5IG5hbWUgKi8KICAgIGNvbnN0IGNoYXIgKmRlc2M7ICAgLyogdGhlIGRlc2NyaXB0aW9uICovCn07CjwvcHJlPjxwPgoKPC9wPjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sRW50aXR5RGVzY1B0ciI+PC9hPmh0bWxFbnRpdHlEZXNjUHRyPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBodG1sRW50aXR5RGVzYyAqaHRtbEVudGl0eURlc2NQdHI7CjwvcHJlPjxwPgoKPC9wPjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sVGFnTG9va3VwIj48L2E+aHRtbFRhZ0xvb2t1cCAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVsZW1EZXNjIj5odG1sRWxlbURlc2M8L2E+KiBodG1sVGFnTG9va3VwICAgICAgICAgICAoY29uc3QgPGEgaHJlZj0ibGlieG1sLXRyZWUuaHRtbCN4bWxDaGFyIj54bWxDaGFyPC9hPiAqdGFnKTs8L3ByZT48cD4KTG9va3VwIHRoZSBIVE1MIHRhZyBpbiB0aGUgRWxlbWVudFRhYmxlPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+dGFnPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBUaGUgdGFnIG5hbWUgaW4gbG93ZXJjYXNlCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+dGhlIHJlbGF0ZWQgaHRtbEVsZW1EZXNjUHRyIG9yIE5VTEwgaWYgbm90IGZvdW5kLgo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sRW50aXR5TG9va3VwIj48L2E+aHRtbEVudGl0eUxvb2t1cCAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVudGl0eURlc2MiPmh0bWxFbnRpdHlEZXNjPC9hPiogaHRtbEVudGl0eUxvb2t1cCAgICAgIChjb25zdCA8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbENoYXIiPnhtbENoYXI8L2E+ICpuYW1lKTs8L3ByZT48cD4KTG9va3VwIHRoZSBnaXZlbiBlbnRpdHkgaW4gRW50aXRpZXNUYWJsZQo8L3A+PHA+ClRPRE86IHRoZSBsaW5lYXIgc2NhbiBpcyByZWFsbHkgdWdseSwgYW4gaGFzaCB0YWJsZSBpcyByZWFsbHkgbmVlZGVkLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0Pm5hbWU8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gdGhlIGVudGl0eSBuYW1lCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+dGhlIGFzc29jaWF0ZWQgaHRtbEVudGl0eURlc2NQdHIgaWYgZm91bmQsIE5VTEwgb3RoZXJ3aXNlLgo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sRW50aXR5VmFsdWVMb29rdXAiPjwvYT5odG1sRW50aXR5VmFsdWVMb29rdXAgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxFbnRpdHlEZXNjIj5odG1sRW50aXR5RGVzYzwvYT4qIGh0bWxFbnRpdHlWYWx1ZUxvb2t1cCAodW5zaWduZWQgaW50IHZhbHVlKTs8L3ByZT48cD4KTG9va3VwIHRoZSBnaXZlbiBlbnRpdHkgaW4gRW50aXRpZXNUYWJsZQo8L3A+PHA+ClRPRE86IHRoZSBsaW5lYXIgc2NhbiBpcyByZWFsbHkgdWdseSwgYW4gaGFzaCB0YWJsZSBpcyByZWFsbHkgbmVlZGVkLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PnZhbHVlPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+IHRoZSBlbnRpdHkncyB1bmljb2RlIHZhbHVlCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+dGhlIGFzc29jaWF0ZWQgaHRtbEVudGl0eURlc2NQdHIgaWYgZm91bmQsIE5VTEwgb3RoZXJ3aXNlLgo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sSXNBdXRvQ2xvc2VkIj48L2E+aHRtbElzQXV0b0Nsb3NlZCAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCAgICAgICAgIGh0bWxJc0F1dG9DbG9zZWQgICAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbERvY1B0ciI+aHRtbERvY1B0cjwvYT4gZG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxOb2RlUHRyIj5odG1sTm9kZVB0cjwvYT4gZWxlbSk7PC9wcmU+PHA+ClRoZSBIVE1MIERURCBhbGxvd3MgYSB0YWcgdG8gaW1wbGljaXRseSBjbG9zZSBvdGhlciB0YWdzLgpUaGUgbGlzdCBpcyBrZXB0IGluIGh0bWxTdGFydENsb3NlIGFycmF5LiBUaGlzIGZ1bmN0aW9uIGNoZWNrcwppZiBhIHRhZyBpcyBhdXRvY2xvc2VkIGJ5IG9uZSBvZiBpdCdzIGNoaWxkPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+ZG9jPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICB0aGUgSFRNTCBkb2N1bWVudAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmVsZW08L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBIVE1MIGVsZW1lbnQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPlJldHVybnM8L2VtPjwvc3Bhbj4gOjwvc3Bhbj48L3RkPjx0ZD4xIGlmIGF1dG9jbG9zZWQsIDAgb3RoZXJ3aXNlCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxBdXRvQ2xvc2VUYWciPjwvYT5odG1sQXV0b0Nsb3NlVGFnICgpPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50ICAgICAgICAgaHRtbEF1dG9DbG9zZVRhZyAgICAgICAgICAgICAgICAoPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sRG9jUHRyIj5odG1sRG9jUHRyPC9hPiBkb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDxhIGhyZWY9ImxpYnhtbC10cmVlLmh0bWwjeG1sQ2hhciI+eG1sQ2hhcjwvYT4gKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbE5vZGVQdHIiPmh0bWxOb2RlUHRyPC9hPiBlbGVtKTs8L3ByZT48cD4KVGhlIEhUTUwgRFREIGFsbG93cyBhIHRhZyB0byBpbXBsaWNpdGx5IGNsb3NlIG90aGVyIHRhZ3MuClRoZSBsaXN0IGlzIGtlcHQgaW4gaHRtbFN0YXJ0Q2xvc2UgYXJyYXkuIFRoaXMgZnVuY3Rpb24gY2hlY2tzCmlmIHRoZSBlbGVtZW50IG9yIG9uZSBvZiBpdCdzIGNoaWxkcmVuIHdvdWxkIGF1dG9jbG9zZSB0aGUKZ2l2ZW4gdGFnLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmRvYzwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIEhUTUwgZG9jdW1lbnQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5uYW1lPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBUaGUgdGFnIG5hbWUKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5lbGVtPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICB0aGUgSFRNTCBlbGVtZW50CjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+MSBpZiBhdXRvY2xvc2UsIDAgb3RoZXJ3aXNlCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxQYXJzZUVudGl0eVJlZiI+PC9hPmh0bWxQYXJzZUVudGl0eVJlZiAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbEVudGl0eURlc2MiPmh0bWxFbnRpdHlEZXNjPC9hPiogaHRtbFBhcnNlRW50aXR5UmVmICAgICg8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gY3R4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ibGlieG1sLXRyZWUuaHRtbCN4bWxDaGFyIj54bWxDaGFyPC9hPiAqKnN0cik7PC9wcmU+PHA+CnBhcnNlIGFuIEhUTUwgRU5USVRZIHJlZmVyZW5jZXMKPC9wPjxwPgpbNjhdIEVudGl0eVJlZiA6Oj0gJyZhbXA7JyBOYW1lICc7JzwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmN0eHQ8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGFuIEhUTUwgcGFyc2VyIGNvbnRleHQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5zdHI8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGxvY2F0aW9uIHRvIHN0b3JlIHRoZSBlbnRpdHkgbmFtZQo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+UmV0dXJuczwvZW0+PC9zcGFuPiA6PC9zcGFuPjwvdGQ+PHRkPnRoZSBhc3NvY2lhdGVkIGh0bWxFbnRpdHlEZXNjUHRyIGlmIGZvdW5kLCBvciBOVUxMIG90aGVyd2lzZSwKICAgICAgICBpZiBub24tTlVMTCAqc3RyIHdpbGwgaGF2ZSB0byBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLgo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sUGFyc2VDaGFyUmVmIj48L2E+aHRtbFBhcnNlQ2hhclJlZiAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCAgICAgICAgIGh0bWxQYXJzZUNoYXJSZWYgICAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlckN0eHRQdHIiPmh0bWxQYXJzZXJDdHh0UHRyPC9hPiBjdHh0KTs8L3ByZT48cD4KcGFyc2UgUmVmZXJlbmNlIGRlY2xhcmF0aW9ucwo8L3A+PHA+Cls2Nl0gQ2hhclJlZiA6Oj0gJyZhbXA7IycgWzAtOV0rICc7JyB8CiAgICAgICAgICAgICAgICAgJyZhbXA7PEdUS0RPQ0xJTksgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiIEhSRUY9IngiPng8L0dUS0RPQ0xJTks+JyBbMC05YS1mQS1GXSsgJzsnPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y3R4dDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYW4gSFRNTCBwYXJzZXIgY29udGV4dAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+UmV0dXJuczwvZW0+PC9zcGFuPiA6PC9zcGFuPjwvdGQ+PHRkPnRoZSB2YWx1ZSBwYXJzZWQgKGFzIGFuIGludCkKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbFBhcnNlRWxlbWVudCI+PC9hPmh0bWxQYXJzZUVsZW1lbnQgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICBodG1sUGFyc2VFbGVtZW50ICAgICAgICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gY3R4dCk7PC9wcmU+PHA+CnBhcnNlIGFuIEhUTUwgZWxlbWVudCwgdGhpcyBpcyBoaWdobHkgcmVjdXJzaXZlCjwvcD48cD4KWzM5XSBlbGVtZW50IDo6PSBFbXB0eUVsZW1UYWcgfCBTVGFnIGNvbnRlbnQgRVRhZwo8L3A+PHA+Cls0MV0gQXR0cmlidXRlIDo6PSBOYW1lIEVxIEF0dFZhbHVlPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y3R4dDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYW4gSFRNTCBwYXJzZXIgY29udGV4dAo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sQ3JlYXRlTWVtb3J5UGFyc2VyQ3R4dCI+PC9hPmh0bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0ICgpPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sUGFyc2VyQ3R4dFB0ciI+aHRtbFBhcnNlckN0eHRQdHI8L2E+IGh0bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpOzwvcHJlPjxwPgpDcmVhdGUgYSBwYXJzZXIgY29udGV4dCBmb3IgYW4gSFRNTCBpbi1tZW1vcnkgZG9jdW1lbnQuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+YnVmZmVyPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhIHBvaW50ZXIgdG8gYSBjaGFyIGFycmF5CjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+c2l6ZTwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIHNpemUgb2YgdGhlIGFycmF5CjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+dGhlIG5ldyBwYXJzZXIgY29udGV4dCBvciBOVUxMCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxQYXJzZURvY3VtZW50Ij48L2E+aHRtbFBhcnNlRG9jdW1lbnQgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgICAgICAgICBodG1sUGFyc2VEb2N1bWVudCAgICAgICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gY3R4dCk7PC9wcmU+PHA+CnBhcnNlIGFuIEhUTUwgZG9jdW1lbnQgKGFuZCBidWlsZCBhIHRyZWUgaWYgdXNpbmcgdGhlIHN0YW5kYXJkIFNBWAppbnRlcmZhY2UpLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmN0eHQ8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGFuIEhUTUwgcGFyc2VyIGNvbnRleHQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPlJldHVybnM8L2VtPjwvc3Bhbj4gOjwvc3Bhbj48L3RkPjx0ZD4wLCAtMSBpbiBjYXNlIG9mIGVycm9yLiB0aGUgcGFyc2VyIGNvbnRleHQgaXMgYXVnbWVudGVkCiAgICAgICAgICAgICAgIGFzIGEgcmVzdWx0IG9mIHRoZSBwYXJzaW5nLgo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sU0FYUGFyc2VEb2MiPjwvYT5odG1sU0FYUGFyc2VEb2MgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxEb2NQdHIiPmh0bWxEb2NQdHI8L2E+ICBodG1sU0FYUGFyc2VEb2MgICAgICAgICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbENoYXIiPnhtbENoYXI8L2E+ICpjdXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxTQVhIYW5kbGVyUHRyIj5odG1sU0FYSGFuZGxlclB0cjwvYT4gc2F4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyRGF0YSk7PC9wcmU+PHA+ClBhcnNlIGFuIEhUTUwgaW4tbWVtb3J5IGRvY3VtZW50LiBJZiBzYXggaXMgbm90IE5VTEwsIHVzZSB0aGUgU0FYIGNhbGxiYWNrcwp0byBoYW5kbGUgcGFyc2UgZXZlbnRzLiBJZiBzYXggaXMgTlVMTCwgZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgRE9NCmJlaGF2aW9yIGFuZCByZXR1cm4gYSB0cmVlLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmN1cjwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIHhtbENoYXIKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5lbmNvZGluZzwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYSBmcmVlIGZvcm0gQyBzdHJpbmcgZGVzY3JpYmluZyB0aGUgSFRNTCBkb2N1bWVudCBlbmNvZGluZywgb3IgTlVMTAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PnNheDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIFNBWCBoYW5kbGVyIGJsb2NrCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+dXNlckRhdGE8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gaWYgdXNpbmcgU0FYLCB0aGlzIHBvaW50ZXIgd2lsbCBiZSBwcm92aWRlZCBvbiBjYWxsYmFja3MuIAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+UmV0dXJuczwvZW0+PC9zcGFuPiA6PC9zcGFuPjwvdGQ+PHRkPnRoZSByZXN1bHRpbmcgZG9jdW1lbnQgdHJlZSB1bmxlc3MgU0FYIGlzIE5VTEwgb3IgdGhlIGRvY3VtZW50IGlzCiAgICBub3Qgd2VsbCBmb3JtZWQuCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxQYXJzZURvYyI+PC9hPmh0bWxQYXJzZURvYyAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbERvY1B0ciI+aHRtbERvY1B0cjwvYT4gIGh0bWxQYXJzZURvYyAgICAgICAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC10cmVlLmh0bWwjeG1sQ2hhciI+eG1sQ2hhcjwvYT4gKmN1ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcpOzwvcHJlPjxwPgpwYXJzZSBhbiBIVE1MIGluLW1lbW9yeSBkb2N1bWVudCBhbmQgYnVpbGQgYSB0cmVlLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmN1cjwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIHhtbENoYXIKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5lbmNvZGluZzwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYSBmcmVlIGZvcm0gQyBzdHJpbmcgZGVzY3JpYmluZyB0aGUgSFRNTCBkb2N1bWVudCBlbmNvZGluZywgb3IgTlVMTAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+UmV0dXJuczwvZW0+PC9zcGFuPiA6PC9zcGFuPjwvdGQ+PHRkPnRoZSByZXN1bHRpbmcgZG9jdW1lbnQgdHJlZQo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sU0FYUGFyc2VGaWxlIj48L2E+aHRtbFNBWFBhcnNlRmlsZSAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbERvY1B0ciI+aHRtbERvY1B0cjwvYT4gIGh0bWxTQVhQYXJzZUZpbGUgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sU0FYSGFuZGxlclB0ciI+aHRtbFNBWEhhbmRsZXJQdHI8L2E+IHNheCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpOzwvcHJlPjxwPgpwYXJzZSBhbiBIVE1MIGZpbGUgYW5kIGJ1aWxkIGEgdHJlZS4gQXV0b21hdGljIHN1cHBvcnQgZm9yIFpMSUIvQ29tcHJlc3MKY29tcHJlc3NlZCBkb2N1bWVudCBpcyBwcm92aWRlZCBieSBkZWZhdWx0IGlmIGZvdW5kIGF0IGNvbXBpbGUtdGltZS4KSXQgdXNlIHRoZSBnaXZlbiBTQVggZnVuY3Rpb24gYmxvY2sgdG8gaGFuZGxlIHRoZSBwYXJzaW5nIGNhbGxiYWNrLgpJZiBzYXggaXMgTlVMTCwgZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgRE9NIHRyZWUgYnVpbGRpbmcgcm91dGluZXMuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+ZmlsZW5hbWU8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBmaWxlbmFtZQo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmVuY29kaW5nPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhIGZyZWUgZm9ybSBDIHN0cmluZyBkZXNjcmliaW5nIHRoZSBIVE1MIGRvY3VtZW50IGVuY29kaW5nLCBvciBOVUxMCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+c2F4PC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICB0aGUgU0FYIGhhbmRsZXIgYmxvY2sKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD51c2VyRGF0YTwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiBpZiB1c2luZyBTQVgsIHRoaXMgcG9pbnRlciB3aWxsIGJlIHByb3ZpZGVkIG9uIGNhbGxiYWNrcy4gCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+dGhlIHJlc3VsdGluZyBkb2N1bWVudCB0cmVlIHVubGVzcyBTQVggaXMgTlVMTCBvciB0aGUgZG9jdW1lbnQgaXMKICAgIG5vdCB3ZWxsIGZvcm1lZC4KPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbFBhcnNlRmlsZSI+PC9hPmh0bWxQYXJzZUZpbGUgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxEb2NQdHIiPmh0bWxEb2NQdHI8L2E+ICBodG1sUGFyc2VGaWxlICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcpOzwvcHJlPjxwPgpwYXJzZSBhbiBIVE1MIGZpbGUgYW5kIGJ1aWxkIGEgdHJlZS4gQXV0b21hdGljIHN1cHBvcnQgZm9yIFpMSUIvQ29tcHJlc3MKY29tcHJlc3NlZCBkb2N1bWVudCBpcyBwcm92aWRlZCBieSBkZWZhdWx0IGlmIGZvdW5kIGF0IGNvbXBpbGUtdGltZS48L3A+PHA+Cgo8L3A+PGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIj48Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRib2R5Pjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5maWxlbmFtZTwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIGZpbGVuYW1lCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+ZW5jb2Rpbmc8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGEgZnJlZSBmb3JtIEMgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIEhUTUwgZG9jdW1lbnQgZW5jb2RpbmcsIG9yIE5VTEwKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPlJldHVybnM8L2VtPjwvc3Bhbj4gOjwvc3Bhbj48L3RkPjx0ZD50aGUgcmVzdWx0aW5nIGRvY3VtZW50IHRyZWUKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iVVRGOFRvSHRtbCI+PC9hPlVURjhUb0h0bWwgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgICAgICAgICBVVEY4VG9IdG1sICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICpvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqb3V0bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICppbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppbmxlbik7PC9wcmU+PHA+ClRha2UgYSBibG9jayBvZiBVVEYtOCBjaGFycyBpbiBhbmQgdHJ5IHRvIGNvbnZlcnQgaXQgdG8gYW4gQVNDSUkKcGx1cyBIVE1MIGVudGl0aWVzIGJsb2NrIG9mIGNoYXJzIG91dC48L3A+PHA+Cgo8L3A+PGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIj48Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRib2R5Pjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5vdXQ8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBieXRlcyB0byBzdG9yZSB0aGUgcmVzdWx0CjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+b3V0bGVuPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICB0aGUgbGVuZ3RoIG9mIDxpPjx0dD5vdXQ8L3R0PjwvaT4KPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5pbjwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIFVURi04IGNoYXJzCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+aW5sZW48L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBsZW5ndGggb2YgPGk+PHR0PmluPC90dD48L2k+CjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+MCBpZiBzdWNjZXNzLCAtMiBpZiB0aGUgdHJhbnNjb2RpbmcgZmFpbHMsIG9yIC0xIG90aGVyd2lzZQpUaGUgdmFsdWUgb2YgPGk+PHR0PmlubGVuPC90dD48L2k+IGFmdGVyIHJldHVybiBpcyB0aGUgbnVtYmVyIG9mIG9jdGV0cyBjb25zdW1lZAogICAgYXMgdGhlIHJldHVybiB2YWx1ZSBpcyBwb3NpdGl2ZSwgZWxzZSB1bnByZWRpY3RhYmxlLgpUaGUgdmFsdWUgb2YgPGk+PHR0Pm91dGxlbjwvdHQ+PC9pPiBhZnRlciByZXR1cm4gaXMgdGhlIG51bWJlciBvZiBvY3RldHMgY29uc3VtZWQuCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxFbmNvZGVFbnRpdGllcyI+PC9hPmh0bWxFbmNvZGVFbnRpdGllcyAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCAgICAgICAgIGh0bWxFbmNvZGVFbnRpdGllcyAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKm91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpvdXRsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlubGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcXVvdGVDaGFyKTs8L3ByZT48cD4KVGFrZSBhIGJsb2NrIG9mIFVURi04IGNoYXJzIGluIGFuZCB0cnkgdG8gY29udmVydCBpdCB0byBhbiBBU0NJSQpwbHVzIEhUTUwgZW50aXRpZXMgYmxvY2sgb2YgY2hhcnMgb3V0LjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0Pm91dDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIGJ5dGVzIHRvIHN0b3JlIHRoZSByZXN1bHQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5vdXRsZW48L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBsZW5ndGggb2YgPGk+PHR0Pm91dDwvdHQ+PC9pPgo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmluPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgVVRGLTggY2hhcnMKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5pbmxlbjwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIGxlbmd0aCBvZiA8aT48dHQ+aW48L3R0PjwvaT4KPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5xdW90ZUNoYXI8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gdGhlIHF1b3RlIGNoYXJhY3RlciB0byBlc2NhcGUgKCcgb3IgIikgb3IgemVyby4KPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPlJldHVybnM8L2VtPjwvc3Bhbj4gOjwvc3Bhbj48L3RkPjx0ZD4wIGlmIHN1Y2Nlc3MsIC0yIGlmIHRoZSB0cmFuc2NvZGluZyBmYWlscywgb3IgLTEgb3RoZXJ3aXNlClRoZSB2YWx1ZSBvZiA8aT48dHQ+aW5sZW48L3R0PjwvaT4gYWZ0ZXIgcmV0dXJuIGlzIHRoZSBudW1iZXIgb2Ygb2N0ZXRzIGNvbnN1bWVkCiAgICBhcyB0aGUgcmV0dXJuIHZhbHVlIGlzIHBvc2l0aXZlLCBlbHNlIHVucHJlZGljdGFibGUuClRoZSB2YWx1ZSBvZiA8aT48dHQ+b3V0bGVuPC90dD48L2k+IGFmdGVyIHJldHVybiBpcyB0aGUgbnVtYmVyIG9mIG9jdGV0cyBjb25zdW1lZC4KPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbElzU2NyaXB0QXR0cmlidXRlIj48L2E+aHRtbElzU2NyaXB0QXR0cmlidXRlICgpPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50ICAgICAgICAgaHRtbElzU2NyaXB0QXR0cmlidXRlICAgICAgICAgICAoY29uc3QgPGEgaHJlZj0ibGlieG1sLXRyZWUuaHRtbCN4bWxDaGFyIj54bWxDaGFyPC9hPiAqbmFtZSk7PC9wcmU+PHA+CkNoZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyBvZiBjb250ZW50IHR5cGUgU2NyaXB0PC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+bmFtZTwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYW4gYXR0cmlidXRlIG5hbWUKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPlJldHVybnM8L2VtPjwvc3Bhbj4gOjwvc3Bhbj48L3RkPjx0ZD4xIGlzIHRoZSBhdHRyaWJ1dGUgaXMgYSBzY3JpcHQgMCBvdGhlcndpc2UKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbEhhbmRsZU9taXR0ZWRFbGVtIj48L2E+aHRtbEhhbmRsZU9taXR0ZWRFbGVtICgpPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50ICAgICAgICAgaHRtbEhhbmRsZU9taXR0ZWRFbGVtICAgICAgICAgICAoaW50IHZhbCk7PC9wcmU+PHA+ClNldCBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyB2YWx1ZSBmb3IgaGFuZGxpbmcgSFRNTCBvbWl0dGVkIHRhZ3MuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+dmFsPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBpbnQgMCBvciAxIAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+UmV0dXJuczwvZW0+PC9zcGFuPiA6PC9zcGFuPjwvdGQ+PHRkPnRoZSBsYXN0IHZhbHVlIGZvciAwIGZvciBubyBoYW5kbGluZywgMSBmb3IgYXV0byBpbnNlcnRpb24uCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9Imh0bWxGcmVlUGFyc2VyQ3R4dCI+PC9hPmh0bWxGcmVlUGFyc2VyQ3R4dCAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgICAgICAgIGh0bWxGcmVlUGFyc2VyQ3R4dCAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlckN0eHRQdHIiPmh0bWxQYXJzZXJDdHh0UHRyPC9hPiBjdHh0KTs8L3ByZT48cD4KRnJlZSBhbGwgdGhlIG1lbW9yeSB1c2VkIGJ5IGEgcGFyc2VyIGNvbnRleHQuIEhvd2V2ZXIgdGhlIHBhcnNlZApkb2N1bWVudCBpbiBjdHh0LSZndDtteURvYyBpcyBub3QgZnJlZWQuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y3R4dDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYW4gSFRNTCBwYXJzZXIgY29udGV4dAo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJodG1sQ3JlYXRlUHVzaFBhcnNlckN0eHQiPjwvYT5odG1sQ3JlYXRlUHVzaFBhcnNlckN0eHQgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJsaWJ4bWwtSFRNTHBhcnNlci5odG1sI2h0bWxQYXJzZXJDdHh0UHRyIj5odG1sUGFyc2VyQ3R4dFB0cjwvYT4gaHRtbENyZWF0ZVB1c2hQYXJzZXJDdHh0ICAoPGEgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCNodG1sU0FYSGFuZGxlclB0ciI+aHRtbFNBWEhhbmRsZXJQdHI8L2E+IHNheCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaHVuaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJsaWJ4bWwtZW5jb2RpbmcuaHRtbCN4bWxDaGFyRW5jb2RpbmciPnhtbENoYXJFbmNvZGluZzwvYT4gZW5jKTs8L3ByZT48cD4KQ3JlYXRlIGEgcGFyc2VyIGNvbnRleHQgZm9yIHVzaW5nIHRoZSBIVE1MIHBhcnNlciBpbiBwdXNoIG1vZGUKVGhlIHZhbHVlIG9mIDxpPjx0dD5maWxlbmFtZTwvdHQ+PC9pPiBpcyB1c2VkIGZvciBmZXRjaGluZyBleHRlcm5hbCBlbnRpdGllcwphbmQgZXJyb3Ivd2FybmluZyByZXBvcnRzLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PnNheDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYSBTQVggaGFuZGxlcgo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PnVzZXJfZGF0YTwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgVGhlIHVzZXIgZGF0YSByZXR1cm5lZCBvbiBTQVggY2FsbGJhY2tzCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y2h1bms8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBjaGFycwo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PnNpemU8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIG51bWJlciBvZiBjaGFycyBpbiB0aGUgYXJyYXkKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5maWxlbmFtZTwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYW4gb3B0aW9uYWwgZmlsZSBuYW1lIG9yIFVSSQo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmVuYzwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYW4gb3B0aW9uYWwgZW5jb2RpbmcKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPlJldHVybnM8L2VtPjwvc3Bhbj4gOjwvc3Bhbj48L3RkPjx0ZD50aGUgbmV3IHBhcnNlciBjb250ZXh0IG9yIE5VTEwKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0iaHRtbFBhcnNlQ2h1bmsiPjwvYT5odG1sUGFyc2VDaHVuayAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCAgICAgICAgIGh0bWxQYXJzZUNodW5rICAgICAgICAgICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwjaHRtbFBhcnNlckN0eHRQdHIiPmh0bWxQYXJzZXJDdHh0UHRyPC9hPiBjdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaHVuaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZXJtaW5hdGUpOzwvcHJlPjxwPgpQYXJzZSBhIENodW5rIG9mIG1lbW9yeTwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmN0eHQ8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGFuIFhNTCBwYXJzZXIgY29udGV4dAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmNodW5rPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhbiBjaGFyIGFycmF5CjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+c2l6ZTwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIHNpemUgaW4gYnl0ZSBvZiB0aGUgY2h1bmsKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD50ZXJtaW5hdGU8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGxhc3QgY2h1bmsgaW5kaWNhdG9yCjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5SZXR1cm5zPC9lbT48L3NwYW4+IDo8L3NwYW4+PC90ZD48dGQ+emVybyBpZiBubyBlcnJvciwgdGhlIHhtbFBhcnNlckVycm9ycyBvdGhlcndpc2UuCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PHRhYmxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIiBjbGFzcz0ibmF2aWdhdGlvbiIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gZm9vdGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPjx0ciB2YWxpZ249Im1pZGRsZSI+PHRkIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sIj48Yj4mbHQ7Jmx0O6B4bWxlcnJvcjwvYj48L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImxpYnhtbC1IVE1MdHJlZS5odG1sIj48Yj5IVE1MdHJlZaAmZ3Q7Jmd0OzwvYj48L2E+PC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4K