PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPjxodG1sPjxoZWFkPjx0aXRsZT5BcGFjaGUgU2FuZGVzaGEyL0MgLSBJbnN0YWxsYXRpb24gR3VpZGU8L3RpdGxlPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCI+CiAgICAgICAgICBAaW1wb3J0IHVybCgiLi4vc3R5bGUvbWF2ZW4tYmFzZS5jc3MiKTsKICAgICAgICAgIAoJCQkgICAgQGltcG9ydCB1cmwoIi4uL3N0eWxlL21hdmVuLWNsYXNzaWMuY3NzIik7PC9zdHlsZT48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3N0eWxlL3ByaW50LmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJwcmludCI+PC9saW5rPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPjwvbWV0YT48L2hlYWQ+PGJvZHkgY2xhc3M9ImNvbXBvc2l0ZSI+PGRpdiBpZD0iYmFubmVyIj48YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIiBpZD0ib3JnYW5pemF0aW9uTG9nbyI+PGltZyBhbHQ9IkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIiBzcmM9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9pbWFnZXMvYXNmLWxvZ28uZ2lmIj48L2ltZz48L2E+PGEgaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvc2FuZGVzaGEyL2MiIGlkPSJwcm9qZWN0TG9nbyI+PGltZyBhbHQ9IkFwYWNoZSBTYW5kZXNoYTIvQyIgc3JjPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9zYW5kZXNoYTIvYy9pbWFnZXMvc2FuZGVzaGEyY19sb2dvLmpwZyI+PC9pbWc+PC9hPjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJicmVhZGNydW1icyI+PGRpdiBjbGFzcz0ieGxlZnQiPgogICAgICAgICAgICAgICAgCUxhc3QgcHVibGlzaGVkOiAwNSBPY3RvYmVyIDIwMDcKICAgICAgICAgICAgICAgICAgfCBEb2MgZm9yIDAuOTE8L2Rpdj48ZGl2IGNsYXNzPSJ4cmlnaHQiPjwvZGl2PjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJsZWZ0Q29sdW1uIj48ZGl2IGlkPSJuYXZjb2x1bW4iPjxkaXYgaWQ9Im1lbnVBcGFjaGVfU2FuZGVzaGEyX0MiPjxoNT5BcGFjaGUgU2FuZGVzaGEyL0M8L2g1Pjx1bD48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL2luZGV4Lmh0bWwiPkFwYWNoZSBTYW5kZXNoYTIvQyBIb21lPC9hPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vZG93bmxvYWQuY2dpIj5Eb3dubG9hZCBTYW5kZXNoYTIvQzwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9kb3dubG9hZC5jZ2kiPlJlbGVhc2VzPC9hPjwvbGk+PC91bD48L2xpPjxsaSBjbGFzcz0iZXhwYW5kZWQiPjxhIGhyZWY9Ii4uL2RvY3MvaW5kZXguaHRtbCI+RG9jdW1lbnRhdGlvbjwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9kb2NzL2luc3RhbGxhdGlvbmd1aWRlLmh0bWwiPkluc3RhbGxhdGlvbiBHdWlkZTwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vZG9jcy9zYW5kZXNoYTJjX21hbnVhbC5odG1sIj5TYW5kZXNoYTIvQyBtYW51YWw8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vbGlzdHNfaXNzdWVzLmh0bWwiPkdldCBJbnZvbHZlZDwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9saXN0c19pc3N1ZXMuaHRtbCI+TWFpbGluZyBMaXN0cyAmYW1wOyBJc3N1ZSBUcmFja2luZzwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vc3ZuLmh0bWwiPkNoZWNrb3V0IFNvdXJjZSBDb2RlPC9hPjwvbGk+PC91bD48L2xpPjxsaSBjbGFzcz0iZXhwYW5kZWQiPjxhIGhyZWY9Ii4uL2NvZGluZ19jb252ZW50aW9ucy5odG1sIj5EZXZlbG9wZXIgR3VpZGVsaW5lczwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9jb2RpbmdfY29udmVudGlvbnMuaHRtbCI+Q29kaW5nIENvbnZlbnRpb248L2E+PC9saT48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL3ZlcnNpb25pbmcuaHRtbCI+VmVyc2lvbm5pbmc8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vdGVhbS1saXN0Lmh0bWwiPlByb2plY3QgSW5mb3JtYXRpb248L2E+PHVsPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vdGVhbS1saXN0Lmh0bWwiPlByb2plY3QgVGVhbTwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy93ZWJzZXJ2aWNlcy9zYW5kZXNoYS90cnVuay9jLyIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPlNvdXJjZSBDb2RlPC9hPjwvbGk+PC91bD48L2xpPjwvdWw+PC9kaXY+PGEgaHJlZj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvIiB0aXRsZT0iQnVpbHQgYnkgTWF2ZW4iIGlkPSJwb3dlcmVkQnkiPjxpbWcgYWx0PSJCdWlsdCBieSBNYXZlbiIgc3JjPSIuLi9pbWFnZXMvbG9nb3MvbWF2ZW4tYnV0dG9uLTEucG5nIj48L2ltZz48L2E+PC9kaXY+PC9kaXY+PGRpdiBpZD0iYm9keUNvbHVtbiI+PGRpdiBjbGFzcz0iY29udGVudEJveCI+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGEgbmFtZT0iQXBhY2hlX1NhbmRlc2hhMl9DX0luc3RhbGxhdGlvbl9HdWlkZSI+PC9hPjxoMj5BcGFjaGUgU2FuZGVzaGEyL0MgSW5zdGFsbGF0aW9uIEd1aWRlPC9oMj48cD5UaGlzIGRvY3VtZW50IGd1aWRlcyB5b3Ugb24gaG93IHRvIGluc3RhbGwgU2FuZGVzaGEyL0Mgd2l0aCBBeGlzMi9DLCBhbmQKcnVuIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudCBzYW1wbGVzIG9uIExpbnV4IGFuZCBNaWNyb3NvZnQgV2luZG93cyBvcGVyYXRpbmcKc3lzdGVtcy48L3A+PHA+VGhpcyByZWxlYXNlIGNvbWVzIGluIHR3byBmb3Jtcywgc291cmNlIGFuZCBiaW5hcnkuIFRoaXMgZG9jdW1lbnQgY292ZXJzCmJvdGggZm9ybXMuPC9wPjxwPlBsZWFzZSBzZW5kIHlvdXIgZmVlZGJhY2sgdG8gdGhlIGRldmVsb3BlciBtYWlsaW5nIGxpc3Q6IDxhIGhyZWY9Im1haWx0bzpjLWRldkBheGlzLmFwYWNoZS5vcmciPmMtZGV2QGF4aXMuYXBhY2hlLm9yZzwvYT4KKFN1YnNjcmlwdGlvbiBkZXRhaWxzIGFyZSBhdmFpbGFibGUgb24gdGhlIDxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL3NhbmRlc2hhL3NhbmRlc2hhMi9jIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+U2FuZGVzaGEyIHNpdGU8L2E+LikgUGxlYXNlCnJlbWVtYmVyIHRvIHByZWZpeCB0aGUgc3ViamVjdCB3aXRoIFtBeGlzMl0uPC9wPjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IkNvbnRlbnRzIj48L2E+PGgzPkNvbnRlbnRzPC9oMz48dWw+CiAgPGxpPjxhIGhyZWY9IiNsaW51eCI+SW5zdGFsbGluZyBhbmQgUnVubmluZyBvbiBMaW51eDwvYT4KICAgIDx1bD4KICAgICAgPGxpPjxhIGhyZWY9IiNsaW51eF9zb3VyY2UiPlVzaW5nIHRoZSBTb3VyY2UgUmVsZWFzZTwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iI2xpbnV4X2JpbmFyeSI+VXNpbmcgdGhlIEJpbmFyeSBSZWxlYXNlPC9hPjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPjxhIGhyZWY9IiN3aW4iPkluc3RhbGxpbmcgYW5kIFJ1bm5pbmcgb24gTWljcm9zb2Z0IFdpbmRvd3MgKHdpbjMyKTwvYT4KICAgIDx1bD4KICAgICAgPGxpPjxhIGhyZWY9IiN3aW5fc291cmNlIj5Vc2luZyB0aGUgU291cmNlIFJlbGVhc2U8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiN3aW5fYmluYXJ5Ij5Vc2luZyB0aGUgQmluYXJ5IFJlbGVhc2U8L2E+PC9saT4KICAgIDwvdWw+CiAgPC9saT4KPC91bD48cD48YSBpZD0ibGludXgiPjwvYT48L3A+PC9kaXY+PGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV9fSW5zdGFsbGluZ19hbmRfUnVubmluZ19vbl9MaW51eCI+PC9hPjxoMz4xLiBJbnN0YWxsaW5nIGFuZCBSdW5uaW5nIG9uIExpbnV4PC9oMz48cD5UaGlzIGNhbiBiZSBkb25lIHVzaW5nIGJpbmFyeSBvciBzb3VyY2UgZGlzdHJpYnV0aW9ucy4gKDxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL3NhbmRlc2hhL3NhbmRlc2hhMi9jL2Rvd25sb2FkLmNnaSIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPkRvd25sb2FkPC9hPiB0aGUgdHdvCmRpc3RyaWJ1dGlvbnMpPC9wPjxwPjxhIGlkPSJsaW51eF9zb3VyY2UiPjwvYT48L3A+PC9kaXY+PGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8xX19JbnN0YWxsaW5nX1NhbmRlc2hhMl9DX1NvdXJjZV9SZWxlYXNlX29uX0xpbnV4Ij48L2E+PGgzPjEuMS4gSW5zdGFsbGluZyBTYW5kZXNoYTIvQyBTb3VyY2UgUmVsZWFzZSBvbiBMaW51eDwvaDM+PHA+VGhpcyB2ZXJzaW9uIG9mIFNhbmRlc2hhMi9DIGRlcGVuZHMgb24gQXhpczIvQyAxLjEuMCA8YSBocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzMi9jL2Rvd25sb2FkLmNnaSIgY2xhc3M9ImV4dGVybmFsTGluayIgdGl0bGU9IkV4dGVybmFsIExpbmsiPkRvd25sb2FkIEF4aXMyL0M8L2E+IGZyb20gIGFuZAppbnN0YWxsLiA8L3A+PG9sPgogICAgPGxpPiBEb3dubG9hZCBTYW5kZXNoYTIgc291cmNlIGRpc3RyaWJ1dGlvbjwvbGk+CiAgICA8bGk+IEV4dHJhY3QgdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gYW5kIGdvIHRvIGV4dHJhY3RlZCBkaXJlY3Rvcnk8L2xpPgogICAgPGxpPiBSdW4gY29uZmlndXJlIHdpdGggQVhJUzIgaW5jbHVkZSBwYXRoLgogICAgICAgIDxwcmU+Li9jb25maWd1cmUgLS1wcmVmaXg9Jmx0O2F4aXMyY19kZXBsb3lfcGF0aCZndDsgLS1lbmFibGUtc3RhdGljPW5vIC0td2l0aC1heGlzMj0mbHQ7YXhpczJjX2luY2x1ZGVfcGF0aCZndDs8L3ByZT4KICAgIDwvbGk+CiAgICA8bGk+UnVuIG1ha2UgYW5kIG1ha2UgaW5zdGFsbDwvbGk+Cjwvb2w+PHA+ClRoaXMgd2lsbCBpbnN0YWxsIHRoZSBTYW5kZXNoYTIvQyBhcyBhIG1vZHVsZSBpbiBBeGlzMi9DIGluICZsdDtheGlzMmNfZGVwbG95X3BhdGgmZ3Q7L21vZHVsZXMgZm9sZGVyLiBUaGUgbW9kdWxlCmZvbGRlciBjb250YWlucyB0aGUgU2FuZGVzaGEyL0MgbGlicmFyaWVzIGFuZCB0aGUgbW9kdWxlLnhtbCBmaWxlLgoKCjxhIGlkPSJsaW51eF9iaW5hcnkiPjwvYT48L3A+PC9kaXY+PGRpdiBjbGFzcz0ic3Vic2VjdGlvbiI+PGEgbmFtZT0iMV8yX19JbnN0YWxsaW5nX1NhbmRlc2hhMl9DX0JpbmFyeV9SZWxlYXNlX29uX0xpbnV4Ij48L2E+PGgzPjEuMi4gSW5zdGFsbGluZyBTYW5kZXNoYTIvQyBCaW5hcnkgUmVsZWFzZSBvbiBMaW51eDwvaDM+PHA+U2FuZGVzaGEyL0MgYmluYXJ5IGRpc3RyaWJ1dGlvbiBmb3IgTGludXggaGFzIHRoZSBmb2xsb3dpbmcgZm9sZGVyIHN0cnVjdHVyZS4gPC9wPgogICAgPGRpdiBjbGFzcz0ic291cmNlIj48cHJlPiAgIAogICAgU2FuZGVzaGEyCiAgICAgICAgfAogICAgICAgICsgLSBtb2R1bGVzL3NhbmRlc2hhMiAoc2FuZGVzaGEyIG1vZHVsZSBsaWJyYXJ5IGFuZCBtb2R1bGUueG1sIGZpbGUpCiAgICAgICAgKyAtIGRvY3MKICAgICAgICArIC0gY29uZmlnIChDb250YWluIHNhbXBsZSBtb2R1bGUueG1sIGFuZCBheGlzMi54bWwgZmlsZXMpCiAgICAgICAgfAogICAgICAgICsgLSBzYW1wbGVzCiAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgKyAtIHNvdXJjZSBmaWxlcyBvZiBzYW1wbGVzIGluIGZvbGRlcnMKICAgICAgICArIC0gc2VydmljZXMgKENvbnRhaW4gc2FtcGxlIHNlcnZpY2UpCiAgICAgICAgfAogICAgICAgICsgLSBpbmNsdWRlICggaGVhZGVyIGZpbGVzKQogICAgICAgICsgLSBiaW4gKGRhdGFiYXNlIHNjcmlwdHMpCiAgICAgICAgKyAtIGJpbi9zYW1wbGVzICggc2FtcGxlIGV4ZWN1dGFibGVzKQoKPC9wcmU+PC9kaXY+CiAgPHA+CiAgICBUbyBkZXBsb3kgU2FuZGVzaGEyL0MgaW4gQXhpczIvQyBydW5uaW5nIGVudmlyb25tZW50IGNvcHkgdGhlIG1vZHVsZXMvc2FuZGVzaGEyIGludG8gJmx0O2F4aXMyY19kZXBsb3lfcGF0aCZndDsvbW9kdWxlcyBmb2xkZXIuCiAgICBEbyB0aGUgbmVjZXNzYXJ5IGNoYW5nZXMgdG8gdGhlICZsdDtheGlzMmNfZGVwbG95X3BhdGgmZ3Q7L2F4aXMyLnhtbCB0byBydW4gU2FuZGVzaGEyL0MoUmVmZXIgdG8gdGhlIHNhbXBsZSBjb25maWcvYXhpczIueG1sCiAgICBmb3IgaGVscCkuCjwvcD48cD48YSBpZD0id2luIj48L2E+PC9wPjwvZGl2PjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjJfX0luc3RhbGxpbmdfYW5kX1J1bm5pbmdfb25fTWljcm9zb2Z0X1dpbmRvd3MiPjwvYT48aDM+Mi4gSW5zdGFsbGluZyBhbmQgUnVubmluZyBvbiBNaWNyb3NvZnQgV2luZG93czwvaDM+PHA+VGhpcyB0b28gY2FuIGJlIGRvbmUgdXNpbmcgYmluYXJ5IG9yIHNvdXJjZSBkaXN0cmlidXRpb25zLiAoPGEgaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvc2FuZGVzaGEvc2FuZGVzaGEyL2MvZG93bmxvYWQuY2dpIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+RG93bmxvYWQ8L2E+IHRoZSB0d28KZGlzdHJpYnV0aW9ucy4pPC9wPjxwPjxhIGlkPSJ3aW5fc291cmNlIj48L2E+PC9wPjwvZGl2PjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9IjJfMV9fSW5zdGFsbGluZ19TYW5kZXNoYTJfQ19Tb3VyY2VfUmVsZWFzZV9vbl9XaW5kb3dzIj48L2E+PGgzPjIuMS4gSW5zdGFsbGluZyBTYW5kZXNoYTIvQyBTb3VyY2UgUmVsZWFzZSBvbiBXaW5kb3dzPC9oMz48b2w+CiAgICA8bGk+IFlvdSBuZWVkIHRvIGhhdmUgdW56aXBlZCBBeGlzMi9DIDEuMS4wIHJlbGVhc2UgYmluYXJ5IHRvIHNvbWUgZm9sZGVyLjwvbGk+CiAgICA8bGk+IFNhbmRlc2hhMi9DIGNhbiBiZSB1c2VkIHdpdGggb25lIG9mIGZvbGxvd2luZyB0d28gZGF0YWJhc2Ugc3lzdGVtcy4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPnNxbGl0ZTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+TXlTUUw8L2xpPgogICAgICAgICAgICAgPC91bD4KICAgICAgICAgU28gaW5zdGFsbCBvbmUgb2YgYWJvdmUgZGF0YWJhc2Ugc3lzdGVtcyBvbiB5b3VyIG1hY2hpbmUuCiAgICA8L2xpPgogICAgPGxpPiBPbiB5b3VyIGNtZC5leGUgY2QgdG8gJmx0O3NhbmRlc2hhMiBzcmMmZ3Q7XGJ1aWxkXHdpbjMyIDxicj48L2JyPgogICAgICBFZGl0IGNvbmZpZ3VyZS5pbiBmaWxlIHdpdGggeW91ciBiaW5hcnkgbG9jYXRpb25zLiA8YnI+PC9icj4KICAgICAgVG8gc2VsZWN0IE15U1FMIGhhdmUgeW91ciBjb25maWd1cmUuaW4gZW50cnkgIFdJVEhfTVlTUUwgPSAxLiA8YnI+PC9icj4gICAgICAKICAgICAgVG8gU2VsZWN0IFNxbGl0ZSBoYXZlIHlvdXIgY29uZmlndXJlLmluIGVudHJ5IFdJVEhfU1FMSVRFID0gMS4gCiAgICA8L2xpPgogICAgPGxpPiBUbyBzZXQgbmVjZXNzYXJ5IGVudmlyb25tZW50IHZhcmlhYmxlcyBvbiBjb21tYW5kIGxpbmUgcnVuIHZjdmFyczMyLmJhdCBmaWxlLiA8L2xpPgogICAgPGxpPiBSdW4gbm1ha2UgZGlzdCBjb21tYW5kIG9uIGNvbW1hbmQgbGluZS4gVGhpcyB3aWxsIGJ1aWxkIHRoZSBTYW5kZXNoYTIvQyBiaW5hcnkgYW5kIHNhbXBsZXMgdG8gYSBkaXJlY3Rvcnkgc2FuZGVzaGEyIGluICZsdDtzYW5kZXNoYTIgc3JjJmd0O1xidWlsZFxzYW5kZXNoYTIuIDwvbGk+Cjwvb2w+PHA+PGEgaWQ9ImJpbl9iaW5hcmllcyI+PC9hPjwvcD48L2Rpdj48ZGl2IGNsYXNzPSJzdWJzZWN0aW9uIj48YSBuYW1lPSIyX18yX19JbnN0YWxsaW5nX1NhbmRlc2hhMl9DX0JpbmFyeV9SZWxlYXNlX29uX1dpbmRvd3MiPjwvYT48aDM+Mi4gMi4gSW5zdGFsbGluZyBTYW5kZXNoYTIvQyBCaW5hcnkgUmVsZWFzZSBvbiBXaW5kb3dzPC9oMz48cD5TYW5kZXNoYTIvQyBiaW5hcnkgZGlzdHJpYnV0aW9uIHdpbGwgaGF2ZSBmb2xsb3dpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZS4gPC9wPgogICAgPGRpdiBjbGFzcz0ic291cmNlIj48cHJlPgogICAgU2FuZGVzaGEyCiAgICAgICAgfAogICAgICAgICsgLSBTYW5kZXNoYTIgKHNhbmRlc2hhMiBtb2R1bGUgZGxsIGFuZCBtb2R1bGUueG1sIGZpbGUpCiAgICAgICAgfAogICAgICAgICsgLSBzYW1wbGVzCiAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgKyAtIGJpbiAKICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICArIC0gc291cmNlIGZpbGVzIG9mIHNhbXBsZXMgaW4gZm9sZGVycwogICAgICAgIHwKICAgICAgICArIC0gaW5jbHVkZSAoIGhlYWRlciBmaWxlcykKCiAgICAKICAgIDwvcHJlPjwvZGl2PgogIDxvbD4gICAgCiAgICA8bGk+IENvcHkgU2FuZGVzaGEyIGRpcmVjdG9yeSAoIGNvbnRhaW5pbmcgc2FuZGVzaGEyIGRsbCBhbmQgbW9kdWxlLnhtbCApIHRvICZsdDtBWElTMkNfSE9NRSZndDtcbW9kdWxlcyBkaXJlY3RvcnkuPC9saT4KICAgIDxsaT4gQ29weSBSTVNhbXBsZVNlcnZpY2UgZGlyZWN0b3J5IGluIHNhbXBsZXNcYmluIGRpcmVjdG9yeSB0byAmbHQ7QVhJUzJDX0hPTUUmZ3Q7XHNlcnZpY2VzIGRpcmVjdG9yeSA8L2xpPgogICAgPGxpPiBDb3B5IGF4aXMyLnhtbCBmaWxlIGluIFNhbmRlc2hhMiBkaXJlY3RvcnkgdG8gJmx0O0FYSVMyQ19IT01FJmd0OyA8L2xpPgogICAgPC9vbD48cD4KICAgIE5vdyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoZSBzYW1wbGVzLgogICAgPC9wPjwvZGl2PjxkaXYgY2xhc3M9InN1YnNlY3Rpb24iPjxhIG5hbWU9Ik5vdGVzIj48L2E+PGgzPk5vdGVzPC9oMz48b2w+CjxsaT4KICAgICAgICBTYW5kZXNoYTIvQyBoYXMgdHdvIG1haW4gc3RvcmFnZSBtZWNoYW5pc21zIGNhbGwgaW4tbWVtb3J5IGFuZCBwZXJzaXN0ZW50LiBUaGUgcGVyc2lzdGVudCBzdG9yYWdlIGNvdWxkIHVzZQogICAgICAgIGVpdGhlciBzcWxpdGUgb3IgTXlTUUwgYXMgaXQncyBkYXRhYmFzZSBtYW5hZ2VyLiA8YnI+PC9icj4KICAgICAgICBCeSBkZWZhdWx0IHNhbmRlc2hhMiB1c2UgdGhlIHBlcnNpc3RlbnQgc3RvcmFnZSB3aXRoIHNxbGl0ZSBhcyB0aGUgZGF0YWJhc2UuIDxicj48L2JyPgogICAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBzcWxpdGUzLmggaW4gL3Vzci9pbmNsdWRlIGluY2x1ZGUgZGlyZWN0b3J5LiBJZiB5b3UgaGF2ZSBkaWZmZXJlbnQgaW5jbHVkZSBwYXRoIGZvcgogICAgICAgIHNxbGl0ZTMuaCB0aGVuIGFkZCB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtc3FsaXRlPSZsdDtzcWxpdGUgaW5jbHVkZSBmaWxlIHBhdGgmZ3Q7IHRvIHRoZSBjb25maWd1cmUgb3B0aW9ucwogICAgICAgIGFib3ZlLiBJZiBpcyBhc3N1bWVkIHRoYXQgbGlic3FsaXRlMy5zbyBpcyBpbiB0aGUgL3Vzci9saWIgZm9sZGVyIDxicj48L2JyPgogICAgICAgIFRvIHJ1biBzYW1wbGVzIGluIHBlcnNpc3RlbnQvc3FsaXRlIG1vZGUgY29weSBzYW5kZXNoYTJjL2NvbmZpZy9zcWxpdGVfc2NoZW1hLnNoLy5iYXQgdG8gYSBkaXJlY3Rvcnkgd2hlcmUgeW91CiAgICAgICAgd2lsbCBjcmVhdGUgeW91ciBzcWxpdGUgZGF0YWJhc2UgZmlsZSBhbmQgZXhlY3V0ZSBpdCB0byBjcmVhdGUgdGhlIGRhdGFiYXNlIHNjaGVtYS4gc3FsaXRlMyBpcyBhbiBlbWJlZGRlZCAKICAgICAgICBkYXRhYmFzZSB3aGljaCBuZWVkIG5vIGNvbmZpZ3VyYXRpb24uIElmIHlvdSB1c2UgQXhpczIvQyBBcGFjaGUyIG1vZHVsZSBpbnN0ZWFkIG9mIHNpbXBsZV9heGlzMl9zZXJ2ZXIgbWFrZSAKICAgICAgICBzdXJlIHRoYXQgQXBhY2hlMiB1c2VyIGNhbiBhY2Nlc3MgdGhlIHNxbGl0ZSBkYXRhYmFzZSBmaWxlcyBzYW5kZXNoYTJfc3ZyX2RiIGFuZCBzYW5kZXNoYTJfY2xpZW50X2RiLiA8YnI+PC9icj4KCiAgICAgICAgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBpbi1tZW1vcnkgc3RvcmFnZSBpbnN0ZWFkLCBjaGFuZ2UgdGhlIGVudHJ5IGluIHRoZSBzYW5kZXNoYTJfY29uc3RhbnRzLmgKICAgICAgICBmaWxlLiA8YnI+PC9icj4KPHByZT4jZGVmaW5lIFNBTkRFU0hBMl9ERUZBVUxUX1NUT1JBR0VfTUdSICJwZXJzaXN0ZW50IiAKYXMKI2RlZmluZSBTQU5ERVNIQTJfREVGQVVMVF9TVE9SQUdFX01HUiAiaW5tZW1vcnkiLiA8L3ByZT4KCiAgICAgICAgPHA+T3IgeW91IGNhbiBjaGFuZ2UgdGhlIGZvbGxvd2luZyBlbnRyeSBpbiB0aGUgbW9kdWxlLnhtbCBmaWxlLjwvcD4KICAgICAgICA8cD4KICAgICAgICA8L3A+PHA+Jmx0O3BhcmFtZXRlciBuYW1lPSJTdG9yYWdlTWFuYWdlciIgbG9ja2VkPSJmYWxzZSImZ3Q7aW5tZW1vcnkmbHQ7cGFyYW1ldGVyJmd0OzwvcD4KICAgICAgICA8cD4mbHQ7cGFyYW1ldGVyIG5hbWU9IlN0b3JhZ2VNYW5hZ2VyIiBsb2NrZWQ9ImZhbHNlIiZndDtwZXJzaXN0ZW50Jmx0O3BhcmFtZXRlciZndDs8L3A+CiAgICAgICAgCgogICAgICAgIDxwPgogICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSBwZXJzaXN0ZW50IHN0b3JhZ2Ugd2l0aCBNeVNRTCB0aGVuIGFkZCB0aGUgb3B0aW9uIC0td2l0aC1teXNxbD0mbHQ7TXlTUUwgaW5jbHVkZSBmaWxlIHBhdGgmZ3Q7CiAgICAgICAgdG8gdGhlIGNvbmZpZ3VyZSBvcHRpb25zIGFib3ZlLiBJdCBpcyBhc3N1bWVkIHRoYXQgbGlibXlzcWxjbGllbnQuc28gaXMgaW4gL3Vzci9saWIgZm9sZGVyLiBJdCBpcyByZWNvbW1lbmRlZAogICAgICAgIHRvIHVzZSBNeVNRTCBkYXRhYmFzZSBmb3IgYW55IHNlcmlvdXMgdXNlLiBJdCBpcyBub3QgaW5jbHVkZWQgYXMgYXMgdGhlIGRlZmF1bHQgZGF0YWJhc2UgYmVjYXVzZSBvZiBsaWNlbnNpbmcgaXNzdWVzLgogICAgICAgIFRvIHJ1biBzYW1wbGVzIGluIHBlcnNpc3RlbnQvbXlzcWwgbW9kZSBydW4gc2FuZGVzaGEyYy9jb25maWcvbXlzcWxfc2NoZW1hLnNoIGFuZCBzYW5kZXNoYTJjL2NvbmZpZy9pbml0X215c3FsLnNoCiAgICAgICAgdG8gY3JlYXRlIHRoZSBkYXRhYmFzZSBzY2hlbWEuIFRoZSBkYXRhYmFzZSBwYXJhbWV0ZXJzIGZvciBNeVNRTCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gbW9kdWxlLnhtbC4gVGhlIGRlZmF1bHRzIGZvciBzZXJ2ZXIsIHVzZXIgYW5kIHBhc3N3b3JkIGFyZSBsb2NhbGhvc3QsIGcsZy4KICAgICAgICA8L3A+CjwvbGk+CjxsaT4KICAgICAgIFNhbmRlc2hhMi9DIG1vZHVsZSBpcyBpbnN0YWxsZWQgaW50byAmbHQ7YXhpczJjX2RlcGxveV9wYXRoJmd0Oy9tb2R1bGVzL3NhbmRlc2hhMmMgZGlyZWN0b3J5LiBUaGUgaW5zdGFsbGVkIG1vZHVsZSBjb250YWluCiAgICAgICBsaWJzYW5kZXNoYTIuc28sIG1vZHVsZS54bWwuIFRoZSBzYW1wbGUgY2xpZW50cyBhcmUgaW5zdGFsbGVkIGludG8gJmx0O2F4aXMyY19kZXBsb3lfcGF0aCZndDsvYmluL3NhbXBsZXMKICAgICAgIGRpcmVjdG9yeS4gU2FtcGxlIHNlcnZpY2VzIGFyZSBpbnN0YWxsZWQgaW50byAmbHQ7YXhpczJjX2RlcGxveV9wYXRoJmd0Oy9zZXJ2aWNlcyBkaXJlY3RvcnkuCgo8L2xpPgo8L29sPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48ZGl2IGlkPSJmb290ZXIiPjxkaXYgY2xhc3M9InhyaWdodCI+qSAyMDA1LTIwMDcsIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9kaXY+PGRpdiBjbGFzcz0iY2xlYXIiPjxocj48L2hyPjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+Cg==