# require(devtools)
# install_github('rCharts', 'ramnathv')
1. 高级人才招聘
Invalid .internal.selfref detected and fixed by taking a (shallow) copy of the data.table so that := can add this new column by reference. At an earlier point, this data.table has been copied by R (or been created manually using structure() or similar). Avoid key<-, names<- and attr<- which in R currently (and oddly) may copy the whole data.table. Use set* syntax instead to avoid copying: ?set, ?setnames and ?setattr. Also, in R<=v3.0.2, list(DT1,DT2) copied the entire DT1 and DT2 (R's list() used to copy named objects); please upgrade to R>v3.0.2 if that is biting. If this message doesn't help, please report to datatable-help so the root cause can be fixed.n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
Invalid .internal.selfref detected and fixed by taking a (shallow) copy of the data.table so that := can add this new column by reference. At an earlier point, this data.table has been copied by R (or been created manually using structure() or similar). Avoid key<-, names<- and attr<- which in R currently (and oddly) may copy the whole data.table. Use set* syntax instead to avoid copying: ?set, ?setnames and ?setattr. Also, in R<=v3.0.2, list(DT1,DT2) copied the entire DT1 and DT2 (R's list() used to copy named objects); please upgrade to R>v3.0.2 if that is biting. If this message doesn't help, please report to datatable-help so the root cause can be fixed.It seems your data is too big for client-side DataTables. You may consider server-side processing: http://rstudio.github.io/DT/server.htmlIt seems your data is too big for client-side DataTables. You may consider server-side processing: http://rstudio.github.io/DT/server.html
4.智联招聘
k.zl.new%>%
.[,地址a:= paste("<a href='",地址1,"' target='blank' >链接1</a>",sep="")]%>%
.[,地址b:= paste("<a href='",地址2,"' target='blank' >链接2</a>",sep="")]%>%
select(.,-地址1,-地址2)%>%
datatable(., escape = FALSE,
caption = 'Table 3: 事业单位招聘信息汇总' ,options = list(
pageLength = 50, autoWidth = TRUE
))
```
LS0tCnRpdGxlOiAi5bCx5Lia5L+h5oGv54is6JmrIFYgMC45MiIKYXV0aG9yOiAi6ams6Iux6L6JIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBmaWdfY2FwdGlvbjogeWVzCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdGhlbWU6IGx1bWVuCi0tLQpgYGB7cn0KIyByZXF1aXJlKGRldnRvb2xzKQojIGluc3RhbGxfZ2l0aHViKCdyQ2hhcnRzJywgJ3JhbW5hdGh2JykKCmBgYAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CiAgbG9hZHBhY2tzIDwtIGZ1bmN0aW9uKGsubGlzdCkgewogICAgay5uZXcgPC0gay5saXN0WyEoay5saXN0ICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKClbLCAiUGFja2FnZSJdKV0KICAgIGlmIChsZW5ndGgoay5uZXcpKSAKICAgICAgaW5zdGFsbC5wYWNrYWdlcyhrLm5ldykKICAgIGxhcHBseShldmFsKGsubGlzdCksIHJlcXVpcmUsIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKICB9ICAjIOiHquWKqOWuieijheOAgeWKoOi9veWRvT8/Pwpsb2FkcGFja3MoYygnZGF0YS50YWJsZScsJ2dncGxvdDInLCdkcGx5cicsJ3Jlc2hhcGUyJywiZm9yZWlnbiIsInJlYWRzdGF0YTEzIiwiZG9CeSIsInBsbSIsInBsb3RsdWNrIiwiY29ycmdyYW0iLCJzdGF0bW9kIiwiZ21ubCIsIkFFUiIsInBseXIiLCJsdWJyaWRhdGUiLCJSU1FMaXRlIiwiZ3JpZEV4dHJhIiwiZ2d0aGVtZXMiLCJySmF2YSIsInhsc3giLCJtYWdyaXR0ciIsImZvcmNhdHMiLCJncmlkIiwiUk15U1FMIiwia25pdHIiLCJwbG90bHkiLCJwcmV0dHlkb2MiLCJEVCIsIiBkaWNocm9tYXQiLCJSQ29sb3JCcmV3ZXIiLCJyQ2hhcnRzIiwicnZlc3QiKSkKCmxpYnJhcnkoZGV2dG9vbHMpCiMgaW5zdGFsbF9naXRodWIoJ2xjaGlmZm9uL1JFbWFwJykKbGlicmFyeShSRW1hcCkKCnBhcihmYW1pbHk9IlNUS2FpdGkiKQojZm9yY2F0czo6ZmN0X2luZnJlcQoKIyBpZiAoIXJlcXVpcmVOYW1lc3BhY2UoImRldnRvb2xzIiwgcXVpZXRseSA9IFRSVUUpKQojICAgaW5zdGFsbC5wYWNrYWdlcygiZGV2dG9vbHMiKQojIAojIGRldnRvb2xzOjppbnN0YWxsX2dpdGh1YigicnN0dWRpby9odG1sdG9vbHMiKQojIGRldnRvb2xzOjppbnN0YWxsX2dpdGh1YigicnN0dWRpby9zaGlueSIpCiMgZGV2dG9vbHM6Omluc3RhbGxfZ2l0aHViKCJyc3R1ZGlvL21pbmlVSSIpCiMgZGV2dG9vbHM6Omluc3RhbGxfZ2l0aHViKCJyc3R1ZGlvL2FkZGluZXhhbXBsZXMiKSAKCiMg6ZmE5Yqg5Li76aKYCnRoZW1lX1B1YmxpY2F0aW9uIDwtIGZ1bmN0aW9uKGJhc2Vfc2l6ZT0xNCwgYmFzZV9mYW1pbHk9IlNUS2FpdGkiKSB7CiAgICAgIGxpYnJhcnkoZ3JpZCkKICAgICAgbGlicmFyeShnZ3RoZW1lcykKICAgICAgKHRoZW1lX2ZvdW5kYXRpb24oYmFzZV9zaXplPWJhc2Vfc2l6ZSwgYmFzZV9mYW1pbHk9YmFzZV9mYW1pbHkpCiAgICAgICArIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gcmVsKDEuMiksIGhqdXN0ID0gMC41KSwKICAgICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dCgpLAogICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9IE5BKSwKICAgICAgICAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9IE5BKSwKICAgICAgICAgICAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9IE5BKSwKICAgICAgICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLHNpemUgPSByZWwoMSkpLAogICAgICAgICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoYW5nbGU9OTAsdmp1c3QgPTIpLAogICAgICAgICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQodmp1c3QgPSAtMC4yKSwKICAgICAgICAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KCksIAogICAgICAgICAgICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyPSJibGFjayIpLAogICAgICAgICAgICAgICBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKCksCiAgICAgICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2xpbmUoY29sb3VyPSIjZjBmMGYwIiksCiAgICAgICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgIGxlZ2VuZC5rZXkgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gTkEpLAogICAgICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwKICAgICAgICAgICAgICAgbGVnZW5kLmJveCA9ICJob3Jpem9udGFsIiAsICNsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiLAogICAgICAgICAgICAgICBsZWdlbmQua2V5LnNpemU9IHVuaXQoMC4yLCAiY20iKSwKICAgICAgICAgICAgICAgbGVnZW5kLnNwYWNpbmcgPSB1bml0KDAsICJjbSIpLAogICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZT0iaXRhbGljIiksCiAgICAgICAgICAgICAgIHBsb3QubWFyZ2luPXVuaXQoYygxMCw1LDUsNSksIm1tIiksCiAgICAgICAgICAgICAgIHN0cmlwLmJhY2tncm91bmQ9ZWxlbWVudF9yZWN0KGNvbG91cj0iI2YwZjBmMCIsZmlsbD0iI2YwZjBmMCIpLAogICAgICAgICAgICAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2U9ImJvbGQiKQogICAgICAgICAgKSkKICAgICAgCn0KCnNjYWxlX2ZpbGxfUHVibGljYXRpb24gPC0gZnVuY3Rpb24oLi4uKXsKICAgICAgbGlicmFyeShzY2FsZXMpCiAgICAgIGRpc2NyZXRlX3NjYWxlKCJmaWxsIiwiUHVibGljYXRpb24iLG1hbnVhbF9wYWwodmFsdWVzID0gYygiIzM4NmNiMCIsIiNmZGI0NjIiLCIjN2ZjOTdmIiwiI2VmM2IyYyIsIiM2NjI1MDYiLCIjYTZjZWUzIiwiI2ZiOWE5OSIsIiM5ODRlYTMiLCIjZmZmZjMzIikpLCAuLi4pCgp9CgpzY2FsZV9jb2xvdXJfUHVibGljYXRpb24gPC0gZnVuY3Rpb24oLi4uKXsKICAgICAgbGlicmFyeShzY2FsZXMpCiAgICAgIGRpc2NyZXRlX3NjYWxlKCJjb2xvdXIiLCJQdWJsaWNhdGlvbiIsbWFudWFsX3BhbCh2YWx1ZXMgPSBjKCIjMzg2Y2IwIiwiI2ZkYjQ2MiIsIiM3ZmM5N2YiLCIjZWYzYjJjIiwiIzY2MjUwNiIsIiNhNmNlZTMiLCIjZmI5YTk5IiwiIzk4NGVhMyIsIiNmZmZmMzMiKSksIC4uLikKCn0KCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgpgYGB7ciAsIGluY2x1ZGU9RkFMU0V9CiMg5LiL6L295pWw5o2u5Luj56CBCmVtYmVkX2RhdGE9IGZ1bmN0aW9uKHg9IG10Y2FycywgZmlsZW5hbWU9ICJmaWxlLmNzdiIsIGxhYmVsPSAi5pWw5o2u5LiL6L29Iil7CgogICMgQ3JlYXRlIGVuY29kZWQgQmFzZTY0IGRhdGFzdHJlYW0gCiAgZW5jb2RlX2RhdGE9IGZ1bmN0aW9uKHgpewogICAgd3JpdGUuY3N2KHgsICIuL2ZpbGUuY3N2IixmaWxlRW5jb2RpbmcgPSAiQ1A5MzYiKQogICAgZW5jPSBzcHJpbnRmKCdkYXRhOnRleHQvY3N2O2Jhc2U2NCwlcycsIG9wZW5zc2w6OmJhc2U2NF9lbmNvZGUocGFzdGUwKHJlYWRMaW5lcygiLi9maWxlLmNzdiIpLCBjb2xsYXBzZT0iXG4iKSkgKQogICAgdW5saW5rKCIuL2ZpbGUuY3N2IikKICAgIHJldHVybihlbmMpCiAgfQoKICAjIFN0cmluZyByZXN1bHQgcmVhZHkgdG8gYmUgcGxhY2VkIGluIHJtYXJrZG93bgogIHBhc3RlMCgiPGEgZG93bmxvYWQ9JyIsIGZpbGVuYW1lLCAiJyBocmVmPSIsIGVuY29kZV9kYXRhKHgpLCAiPiIsIGxhYmVsLCAiPC9hPiIpCgp9CmBgYAojIDEuIOmrmOe6p+S6uuaJjeaLm+iBmApgYGB7ciDnm67lvZXkv6Hmga/niKzlj5YsIGluY2x1ZGU9RkFMU0V9CmYuZ2V0IDwtIGZ1bmN0aW9uKGsubnVtKSB7Cmsud2VibmFtZSA8LSAgcGFzdGUoImh0dHA6Ly93d3cuZ2FveGlhb2pvYi5jb20vemhhb3Bpbi9ib3NoaXJlbmNhaXpoYW9waW4vaW5kZXhfIixrLm51bSwiLmh0bWwiLHNlcD0iIikKd2ViPC1yZWFkX2h0bWwoay53ZWJuYW1lLGVuY29kaW5nID0gJ2NwOTM2JykKCmsubGluayA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5saXN0X2JfaW5mbyBoMiBhIiklPiUgaHRtbF9hdHRyKC4sICJocmVmIikKay5saW5rMiA8LWsubGluayU+JXBhc3RlKCdbTGlua10oJywgLiwgc2VwPScnKSU+JXBhc3RlKC4sICcpJywgc2VwPScnKQprLnRpdGxlIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLmxpc3RfYl9pbmZvIGgyIGEiKSAlPiUgaHRtbF9hdHRyKC4sICJ0aXRsZSIpCmsubmFtZSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5saXN0X2JfaW5mbyBwIGEiKSAlPiUgaHRtbF90ZXh0KC4pCgprLmRheTwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLmxpc3RfYl9kYXRlIC5kYXkiKSAlPiUgaHRtbF90ZXh0KC4pCmsueW0gPC0gd2ViICU+JSBodG1sX25vZGVzKCIubGlzdF9iX2RhdGUgLnltIikgJT4lIGh0bWxfdGV4dCguKQoKCmRhdGEudGFibGUo5pel5pyfPXBhc3RlKGsueW0sc3Vic3RyKGsuZGF5LDEsMiksc2VwPSIuIiks5oCn6LSoPWsubmFtZSzpopjnm649ay50aXRsZSzpk77mjqU9ay5saW5rMixrLmxpbmspCn0KCiMgay5hIDwtIGRhdGEudGFibGUoYygxOjEwMCkpJT4lYXBwbHkoLiwxLGYuZ2V0KSU+JQojICBkby5jYWxsKHJiaW5kLmZpbGwgLC4pJT4lCiMgIGRhdGEudGFibGUoKSU+JQojICAuW2dyZXBsKCJ2aWV3LnBocCIsay5saW5rKT09RixdICMg5Y675o6J5peg5rOV6YeH6ZuG55qE6ZO+5o6lCgoKCmBgYAoKYGBge3IgOC4xNmRhdGEsIGVjaG89RkFMU0V9CiMjIyAyMDE35bm0OOaciDE25pel55qE5pWw5o2u5bqTCiMgay5hbGwuc2ltcGxlMSA8LSBkYXRhLnRhYmxlKGMoMTozMDApKSU+JWFwcGx5KC4sMSxmLmdldCklPiUKIyAgIGRvLmNhbGwocmJpbmQuZmlsbCAsLiklPiUKIyAgIGRhdGEudGFibGUoKSU+JQojICAgLltncmVwbCgidmlldy5waHAiLGsubGluayk9PUYsXSAjIOWOu+aOieaXoOazlemHh+mbhueahOmTvuaOpQojIAojIGsuYWxsLnNpbXBsZTIgPC0gZGF0YS50YWJsZShjKDMwMTo0MDApKSU+JWFwcGx5KC4sMSxmLmdldCklPiUKIyAgIGRvLmNhbGwocmJpbmQuZmlsbCAsLiklPiUKIyAgIGRhdGEudGFibGUoKSU+JQojICAgLltncmVwbCgidmlldy5waHAiLGsubGluayk9PUYsXSAjIOWOu+aOieaXoOazlemHh+mbhueahOmTvuaOpQojIAojIGsuYSA8LSByYmluZC5maWxsKGsuYWxsLnNpbXBsZTEsay5hbGwuc2ltcGxlMiklPiUKIyAgIGRhdGEudGFibGUoKQoKYGBgCgpgYGB7ciDnvZHpobXlhbfkvZPkv6Hmga8sIGVjaG89RkFMU0V9CmYuaW5mb3IgPC0gZnVuY3Rpb24oay53ZWJuYW1lKSB7CndlYjwtcmVhZF9odG1sKGsud2VibmFtZSxlbmNvZGluZyA9ICdjcDkzNicpCmtrIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLmFydGljbGVfZmVubGVpIikgJT4lIGh0bWxfdGV4dCgpCnVubGlzdChzdHJzcGxpdChraywgIlxyXG4gICAgICAgICIpKSU+JQogIGdzdWIoIl4uKj/vvJoiLCIiLC4pJT4lCiAgZ3N1YigiIFxyXG4gICAgICAiLCIiLC4pJT4lCiAgdCguKSU+JQogIGRhdGEudGFibGUoKQp9CgpgYGAKCmBgYHtyICwgZWNobz1GQUxTRX0KIyMjIDIwMTflubQ45pyIMTbml6XnmoTmlbDmja7lupMKI+eIrOWPluaVsOaNrgojIGsuYjEgPC0gay5hWzE6MzAwMCxrLmxpbmtdJT4lZGF0YS50YWJsZSguKSU+JWFwcGx5KC4sMSxmLmluZm9yKSU+JWRvLmNhbGwocmJpbmQuZmlsbCAsLiklPiVkYXRhLnRhYmxlKCkKIyBrLmIyIDwtIGsuYVszMDAxOjYyMTYsay5saW5rXSU+JWRhdGEudGFibGUoLiklPiVhcHBseSguLDEsZi5pbmZvciklPiVkby5jYWxsKHJiaW5kLmZpbGwgLC4pJT4lZGF0YS50YWJsZSgpCmBgYAoKYGBge3Ig5pWw5o2u5ZCI5bm2LCBpbmNsdWRlPUZBTFNFfQojIOi9veWFpTIwMTflubQ45pyIMTbnmoTmlbDmja7vvIzmiJbmm7TmlrDnmoTmlbDmja4Kay5jIDwtIGZyZWFkKCJpY29udiAtZiBjcDkzNiAtdCBVVEYtOCAuL2Jvc2hpam9iLmNzdiIpJT4lLlss5pel5pyfOj15bWQo5pel5pyfKV0lPiVzZWxlY3QoLiwtMSkgIyU+JS5b5pel5pyfIT0iMjAxNy0wOC0xNiJdCgojICMg5ZCI5bm25pWw5o2uCiMgay5iIDwtIHJiaW5kLmZpbGwoay5iMSxrLmIyKSU+JQojICAgZGF0YS50YWJsZSgpCiMgbmFtZXMoay5iKSA8LSBjKCLlj5HluIPml7bpl7QiLCLmiKrmraLml6XmnJ8iLCLmiYDlsZ7nnIHku70iLCLlt6XkvZzlnLDngrkiLCLpq5jmoKHliIbnsbsiLCLmi5vogZjkurrmlbAiLCLmiqXlkI3mlrnlvI8iLCLpnIDmsYLlrabnp5EiKQojIGsuYyA8LSBkYXRhLnRhYmxlKGsuYSxrLmIpCiMgCiMgay5jWyzmiYDlsZ7nnIHku706PWdzdWIoIiAiLCIiLOaJgOWxnuecgeS7vSldJT4lCiMgICAuWyzlt6XkvZzlnLDngrk6PWdzdWIoIiAiLCIiLOW3peS9nOWcsOeCuSldJT4lCiMgICAuWyzml6XmnJ86PWdzdWIoIihbLl0pIiwiIizml6XmnJ8pXSU+JQojICAgLlss5pel5pyfOj15bWQo5pel5pyfKV0KIyAKIyAjIHdyaXRlLmNzdihrLmMsImJvc2hpam9iLmNzdiIsZmlsZUVuY29kaW5nID0gImNwOTM2IikKIyAKIyBrLmMlPiVzZWxlY3QoLiwtay5saW5rKSU+JWthYmxlKC4sIGZvcm1hdCA9ICJtYXJrZG93biIpCiMgCiMgay5jJT4lc2VsZWN0KC4sLWsubGluaykKIyAKIyBuYW1lcyhrLmMpCmBgYAoKYGBge3IgcGFydDHmlbDmja7mm7TmlrAsIGluY2x1ZGU9RkFMU0V9CiMg5pyq5pu05paw55qE5pWw5o2u5bqT5Li6ay5jCgojIOiOt+WPluaWsOWinumDqOWIhgprLmEuYWRkIDwtIGRhdGEudGFibGUoYygxOjEwKSklPiVhcHBseSguLDEsZi5nZXQpJT4lCiAgZG8uY2FsbChyYmluZC5maWxsICwuKSU+JQogIGRhdGEudGFibGUoKSU+JQogIC5bZ3JlcGwoInZpZXcucGhwIixrLmxpbmspPT1GLF0lPiUKICAuWyFrLmxpbmslaW4lay5jWyxrLmxpbmtdLF0gIyDljrvmjonml6Dms5Xph4fpm4bnmoTpk77mjqUKCiMg5aaC5p6c5paw5aKe6YOo5YiG5aSn5LqOMO+8jOWImei/m+ihjOivpue7huS/oeaBr+mHh+mbhu+8jOWinui/m+ihjOS/oeaBr+WQiOW5tu+8jOWQpuWImei1i+WAvGsuYy5uZXfkuLrml6fmlbDmja5rLmMKaWYobnJvdyhrLmEuYWRkKSE9MCkgIHsKICBrLmIuYWRkIDwtIGsuYS5hZGRbLGsubGlua10lPiVkYXRhLnRhYmxlKC4pJT4lYXBwbHkoLiwxLGYuaW5mb3IpJT4lZG8uY2FsbChyYmluZC5maWxsICwuKSU+JWRhdGEudGFibGUoKQpuYW1lcyhrLmIuYWRkKSA8LSBjKCLlj5HluIPml7bpl7QiLCLmiKrmraLml6XmnJ8iLCLmiYDlsZ7nnIHku70iLCLlt6XkvZzlnLDngrkiLCLpq5jmoKHliIbnsbsiLCLmi5vogZjkurrmlbAiLCLmiqXlkI3mlrnlvI8iLCLpnIDmsYLlrabnp5EiKQogIGsuYy5uZXcgPC0gZGF0YS50YWJsZShrLmEuYWRkLGsuYi5hZGQpJT4lLlss5omA5bGe55yB5Lu9Oj1nc3ViKCIgIiwiIizmiYDlsZ7nnIHku70pXSU+JQogIC5bLOW3peS9nOWcsOeCuTo9Z3N1YigiICIsIiIs5bel5L2c5Zyw54K5KV0lPiUKICAuWyzml6XmnJ86PWdzdWIoIihbLl0pIiwiIizml6XmnJ8pXSU+JQogIC5bLOaXpeacnzo9eW1kKOaXpeacnyldCiAgay5jLmFsbCA8LSByYmluZC5maWxsKGsuYy5uZXcsay5jKSU+JWRhdGEudGFibGUoKQp9CgppZihucm93KGsuYS5hZGQpPT0wKSAgay5jLmFsbCA8LSBrLmMKCiMgay5jLmFsbCA8LWsuYy5hbGxbLC5TRFsxLF0sYnk9Lijml6XmnJ8s6aKY55uuKV0g5YmU6Zmk6YeN5aSN6aG5CgoKIyDkv53lrZjmlrDmlbDmja4Kd3JpdGUuY3N2KGsuYy5hbGwsImJvc2hpam9iLmNzdiIsZmlsZUVuY29kaW5nID0gImNwOTM2IikKCmsuYy5hbGwgPC1rLmMuYWxsJT4lc2VsZWN0KC4s5pel5pyfLOaAp+i0qCzpopjnm64s5oiq5q2i5pel5pyfLOaJgOWxnuecgeS7vSzlt6XkvZzlnLDngrks6auY5qCh5YiG57G7LOaLm+iBmOS6uuaVsCzmiqXlkI3mlrnlvI8s6ZyA5rGC5a2m56eRLOmTvuaOpSxrLmxpbmspCgpgYGAKCgpgYGB7ciAsIGVjaG89RkFMU0UsZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9NX0KIyBrLmMuYWxsWywuTixieT3miYDlsZ7nnIHku71dJT4lLltvcmRlcigtTildJT4lLltOPjEwXSU+JXJlbWFwQyguLG1hcHR5cGUgPSAiY2hpbmEiLGNvbG9yID0gYygicmVkIiwiZ29sZCIsInllbGxvdyIsICJza3libHVlIiwid2hpdGUiKSx0aGVtZSA9IGdldF90aGVtZSgiQnJpZ2h0IikpJT4lcGxvdCguKQoKCmsucHlhIDwtIGsuYy5hbGwlPiUuWyzlubTmnIg6PXltZChwYXN0ZShzdWJzdHIo5pel5pyfLDEsNyksIi0wMSIsc2VwPSIiKSldJT4lCiAgLlssLk4sYnk9LijmiYDlsZ7nnIHku70s5bm05pyILOaAp+i0qCldJT4lLltvcmRlcigtTildCgoKay5weWFb5omA5bGe55yB5Lu9PT0i5YyX5LqsIixdJT4lCiAgcGxvdF9seSguLCB4ID0gfuW5tOaciCwgeSA9IH5OLCBjb2xvciA9IH7mgKfotKgpICU+JQogIGFkZF9saW5lcygpCgojIGsucHlhW+aJgOWxnuecgeS7vT09IuWMl+S6rCIm5oCn6LSoPT0i56eR56CU5Lq65omNIixdJT4lLltvcmRlcigt5bm05pyIKV0KIyAKIyAKIyAjIOmdnuWNmuWjq+WQjgojIGsuYy5hbGxbZ3JlcGwoIuWNmuWjq+WQjiIs6aKY55uuKT09RiZncmVwbCgi5Lit5Zu956eR5a2m6ZmiIizpopjnm64pPT1GJuaJgOWxnuecgeS7vT09IuWMl+S6rCIsXSU+JXNlbGVjdCguLC1rLmxpbmspJT4la2FibGUoLiwgZm9ybWF0ID0gIm1hcmtkb3duIikgIybmgKfotKg9PSLnp5HnoJTkurrmiY0iCgprLmMuYWxsJT4lLlssbGluazo9IHBhc3RlKCI8YSBocmVmPSciLGsubGluaywiJyB0YXJnZXQ9J2JsYW5rJyA+6ZO+5o6lPC9hPiIsc2VwPSIiKV0lPiUKICBzZWxlY3QoLiwt6ZO+5o6lLC1rLmxpbmssLeW3peS9nOWcsOeCuSwt6auY5qCh5YiG57G7KSU+JQogIGRhdGF0YWJsZSguLCBlc2NhcGUgPSBGQUxTRSwKICBjYXB0aW9uID0gJ1RhYmxlIDE6IOmrmOerr+S6uuaJjeaLm+iBmOS/oeaBr+axh+aAuycgLG9wdGlvbnMgPSBsaXN0KAogIHBhZ2VMZW5ndGggPSA1MCwgYXV0b1dpZHRoID0gVFJVRQopKQpgYGAKYGBge3IgLCBlY2hvPUZBTFNFfQprLmMuYWxsW2dyZXBsKCLpg6giLOmimOebrik9PVQsXSU+JS5bLGxpbms6PSBwYXN0ZSgiPGEgaHJlZj0nIixrLmxpbmssIicgdGFyZ2V0PSdibGFuaycgPumTvuaOpTwvYT4iLHNlcD0iIildJT4lCiAgc2VsZWN0KC4sLemTvuaOpSwtay5saW5rKSU+JQogIGRhdGF0YWJsZSguLCBlc2NhcGUgPSBGQUxTRSwKICBjYXB0aW9uID0gJ1RhYmxlIDI6IOmrmOerr+S6uuaJjeaLm+iBmOS/oeaBr+axh+aAuy3pg6gnKQpgYGAKIyAyLuS8geS4muaLm+iBmAoKYGBge3IgLCBlY2hvPUZBTFNFfQojIyAyLjEg55uu5b2V5L+h5oGv54is5Y+WCmYuZ2V0LmVudGVyIDwtIGZ1bmN0aW9uKGsubnVtKSB7Cmsud2VibmFtZSA8LSAgcGFzdGUoImh0dHA6Ly93d3cuZ2FveGlhb2pvYi5jb20vemhhb3Bpbi9xaXllL2luZGV4XyIsay5udW0sIi5odG1sIixzZXA9IiIpCndlYjwtcmVhZF9odG1sKGsud2VibmFtZSxlbmNvZGluZyA9ICdjcDkzNicpCmsuZGF5PC0gd2ViICU+JSBodG1sX25vZGVzKCIubHRpdGxlIHNtYWxsIikgJT4lIGh0bWxfdGV4dCguKSU+JWdzdWIoIihbLigpXSkiLCIiLC4pCmsudGl0bGUgPC0gd2ViICU+JSBodG1sX25vZGVzKCIubHRpdGxlIGEiKSAlPiUgaHRtbF90ZXh0KC4pJT4lZ3N1YigiKFsuXSkiLCIiLC4pCmsubGluayA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5sdGl0bGUgYSIpJT4lIGh0bWxfYXR0ciguLCAiaHJlZiIpCmsubGluazIgPC1rLmxpbmslPiVwYXN0ZSgnW0xpbmtdKCcsIC4sIHNlcD0nJyklPiVwYXN0ZSguLCAnKScsIHNlcD0nJykKCmsubmFtZSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5saXN0X2JfaW5mbyBwIGEiKSAlPiUgaHRtbF90ZXh0KC4pCgprLnBsYWNlIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLnN0eWxlMiAubGNvbXBhbnkiKSAlPiUgaHRtbF90ZXh0KC4pCmsubnVtIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLnN0eWxlMiAubHNhbGFyeSIpICU+JSBodG1sX3RleHQoLikKay5kZWFkbGluZSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5zdHlsZTIgLmx0aW1lIikgJT4lIGh0bWxfdGV4dCguKQoKCmRhdGEudGFibGUo5pel5pyfPWsuZGF5LOmimOebrj1rLnRpdGxlLOWcsOeCuT1rLnBsYWNlLOaLm+iBmOS6uuaVsD1rLm51bSzmiKrmraLml7bpl7Q9ay5kZWFkbGluZSzpk77mjqU9ay5saW5rMixrLmxpbmspCn0KCmYuZ2V0LmZpbmFuY2UgPC0gZnVuY3Rpb24oay5udW0pIHsKay53ZWJuYW1lIDwtICBwYXN0ZSgiaHR0cDovL3d3dy5nYW94aWFvam9iLmNvbS96aGFvcGluL3lpbmhhbmd6aGFvcGluaHVpL2luZGV4XyIsay5udW0sIi5odG1sIixzZXA9IiIpCndlYjwtcmVhZF9odG1sKGsud2VibmFtZSxlbmNvZGluZyA9ICdjcDkzNicpCmsuZGF5PC0gd2ViICU+JSBodG1sX25vZGVzKCIubHRpdGxlIHNtYWxsIikgJT4lIGh0bWxfdGV4dCguKSU+JWdzdWIoIihbLigpXSkiLCIiLC4pCmsudGl0bGUgPC0gd2ViICU+JSBodG1sX25vZGVzKCIubHRpdGxlIGEiKSAlPiUgaHRtbF90ZXh0KC4pJT4lZ3N1YigiKFsuXSkiLCIiLC4pCmsubGluayA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5sdGl0bGUgYSIpJT4lIGh0bWxfYXR0ciguLCAiaHJlZiIpCmsubGluazIgPC1rLmxpbmslPiVwYXN0ZSgnW0xpbmtdKCcsIC4sIHNlcD0nJyklPiVwYXN0ZSguLCAnKScsIHNlcD0nJykKCmsubmFtZSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5saXN0X2JfaW5mbyBwIGEiKSAlPiUgaHRtbF90ZXh0KC4pCgprLnBsYWNlIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLnN0eWxlMiAubGNvbXBhbnkiKSAlPiUgaHRtbF90ZXh0KC4pCmsubnVtIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLnN0eWxlMiAubHNhbGFyeSIpICU+JSBodG1sX3RleHQoLikKay5kZWFkbGluZSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5zdHlsZTIgLmx0aW1lIikgJT4lIGh0bWxfdGV4dCguKQpkYXRhLnRhYmxlKOaXpeacnz1rLmRheSzpopjnm649ay50aXRsZSzlnLDngrk9ay5wbGFjZSzmi5vogZjkurrmlbA9ay5udW0s5oiq5q2i5pe26Ze0PWsuZGVhZGxpbmUs6ZO+5o6lPWsubGluazIsay5saW5rKQp9CgojIGsuYSA8LSBkYXRhLnRhYmxlKGMoMToxMDApKSU+JWFwcGx5KC4sMSxmLmdldCklPiUKIyAgZG8uY2FsbChyYmluZC5maWxsICwuKSU+JQojICBkYXRhLnRhYmxlKCklPiUKIyAgLltncmVwbCgidmlldy5waHAiLGsubGluayk9PUYsXSAjIOWOu+aOieaXoOazlemHh+mbhueahOmTvuaOpQoKCgpgYGAKCmBgYHtyICwgZWNobz1GQUxTRX0gCiMjIyAyMDE35bm0OOaciDE25pel55qE5pWw5o2u5bqTCiMgay5hLmVuIDwtIGRhdGEudGFibGUoYygxOjE1MikpJT4lYXBwbHkoLiwxLGYuZ2V0LmVudGVyKSU+JQojICAgZG8uY2FsbChyYmluZC5maWxsICwuKSU+JQojICAgZGF0YS50YWJsZSgpJT4lCiMgICAuW2dyZXBsKCJ2aWV3LnBocCIsay5saW5rKT09RixdICMg5Y675o6J5peg5rOV6YeH6ZuG55qE6ZO+5o6lCiMgCiMgay5hLmZpbiA8LSBkYXRhLnRhYmxlKGMoMTo2NykpJT4lYXBwbHkoLiwxLGYuZ2V0LmZpbmFuY2UpJT4lCiMgICBkby5jYWxsKHJiaW5kLmZpbGwgLC4pJT4lCiMgICBkYXRhLnRhYmxlKCklPiUKIyAgIC5bZ3JlcGwoInZpZXcucGhwIixrLmxpbmspPT1GLF0gIyDljrvmjonml6Dms5Xph4fpm4bnmoTpk77mjqUKIyAKIyAjIOS/neWtmOaWsOaVsOaNrgojIHdyaXRlLmNzdihrLmEuZW4sImVudGVycHJpY2UuY3N2IixmaWxlRW5jb2RpbmcgPSAiY3A5MzYiKQojIHdyaXRlLmNzdihrLmEuZmluLCJmaW5hbmNlLmNzdiIsZmlsZUVuY29kaW5nID0gImNwOTM2IikKYGBgCgpgYGB7ciAsIGVjaG89RkFMU0V9CiMjIDIuMiDmlbDmja7lkIjlubYKIyDovb3lhaUyMDE35bm0OOaciDE255qE5pWw5o2u77yM5oiW5pu05paw55qE5pWw5o2uCmsuYS5lbjEgPC0gZnJlYWQoImljb252IC1mIGNwOTM2IC10IFVURi04IC4vZW50ZXJwcmljZS5jc3YiKSU+JXNlbGVjdCguLC0xKSAjJT4lLlvml6XmnJ8hPSIwODE2Il0Kay5hLmZpbjEgPC0gZnJlYWQoImljb252IC1mIGNwOTM2IC10IFVURi04IC4vZmluYW5jZS5jc3YiKSU+JXNlbGVjdCguLC0xKSAjJT4lLlvml6XmnJ8hPSIwODE2Il0KIyAjIOWQiOW5tuaVsOaNrgojIGsuYiA8LSByYmluZC5maWxsKGsuYjEsay5iMiklPiUKIyAgIGRhdGEudGFibGUoKQojIG5hbWVzKGsuYikgPC0gYygi5Y+R5biD5pe26Ze0Iiwi5oiq5q2i5pel5pyfIiwi5omA5bGe55yB5Lu9Iiwi5bel5L2c5Zyw54K5Iiwi6auY5qCh5YiG57G7Iiwi5oub6IGY5Lq65pWwIiwi5oql5ZCN5pa55byPIiwi6ZyA5rGC5a2m56eRIikKIyBrLmMgPC0gZGF0YS50YWJsZShrLmEsay5iKQojIAojIGsuY1ss5omA5bGe55yB5Lu9Oj1nc3ViKCIgIiwiIizmiYDlsZ7nnIHku70pXSU+JQojICAgLlss5bel5L2c5Zyw54K5Oj1nc3ViKCIgIiwiIizlt6XkvZzlnLDngrkpXSU+JQojICAgLlss5pel5pyfOj1nc3ViKCIoWy5dKSIsIiIs5pel5pyfKV0lPiUKIyAgIC5bLOaXpeacnzo9eW1kKOaXpeacnyldCiMgCiMgIyB3cml0ZS5jc3Yoay5jLCJib3NoaWpvYi5jc3YiLGZpbGVFbmNvZGluZyA9ICJjcDkzNiIpCiMgCiMgay5jJT4lc2VsZWN0KC4sLWsubGluayklPiVrYWJsZSguLCBmb3JtYXQgPSAibWFya2Rvd24iKQojIAojIGsuYyU+JXNlbGVjdCguLC1rLmxpbmspCiMgCiMgbmFtZXMoay5jKQpgYGAKCgpgYGB7ciAsIGVjaG89RkFMU0V9CiMjIDIuMyDmlbDmja7mm7TmlrAKIyDmnKrmm7TmlrDnmoTmlbDmja7lupPkuLprLmEuZW4xIGsuYS5maW4xCgojIOiOt+WPluaWsOWinumDqOWIhgprLmEuZW4gPC0gZGF0YS50YWJsZShjKDE6MTApKSU+JWFwcGx5KC4sMSxmLmdldC5lbnRlciklPiUKICBkby5jYWxsKHJiaW5kLmZpbGwgLC4pJT4lCiAgZGF0YS50YWJsZSgpJT4lCiAgLltncmVwbCgidmlldy5waHAiLGsubGluayk9PUYsXSU+JQogIC5bIWsubGluayVpbiVrLmEuZW4xWyxrLmxpbmtdLF0KCmsuYS5maW4gPC0gZGF0YS50YWJsZShjKDE6MTApKSU+JWFwcGx5KC4sMSxmLmdldC5maW5hbmNlKSU+JQogIGRvLmNhbGwocmJpbmQuZmlsbCAsLiklPiUKICBkYXRhLnRhYmxlKCklPiUKICAuW2dyZXBsKCJ2aWV3LnBocCIsay5saW5rKT09RixdJT4lCiAgLlshay5saW5rJWluJWsuYS5maW4xWyxrLmxpbmtdLF0KCmsuZW50ZXIubmV3IDwtIHJiaW5kLmZpbGwoay5hLmVuLGsuYS5lbjEpJT4lZGF0YS50YWJsZSgpCmsuZmluLm5ldyA8LSByYmluZC5maWxsKGsuYS5maW4say5hLmZpbjEpJT4lZGF0YS50YWJsZSgpCgoKIyDkv53lrZjmlrDmlbDmja4Kd3JpdGUuY3N2KGsuZW50ZXIubmV3LCJlbnRlcnByaWNlLmNzdiIsZmlsZUVuY29kaW5nID0gImNwOTM2IikKd3JpdGUuY3N2KGsuZmluLm5ldywiZmluYW5jZS5jc3YiLGZpbGVFbmNvZGluZyA9ICJjcDkzNiIpCgpgYGAKIyMgMi4xIOS8geS4mgpgYGB7ciAsIGVjaG89RkFMU0V9CmsuZW50ZXIubmV3JT4laGVhZCguLDQwMCklPiUuWyxsaW5rOj0gcGFzdGUoIjxhIGhyZWY9JyIsay5saW5rLCInIHRhcmdldD0nYmxhbmsnID7pk77mjqU8L2E+IixzZXA9IiIpXSU+JQogIHNlbGVjdCguLC3pk77mjqUsLWsubGluayklPiUKICBkYXRhdGFibGUoLiwgZXNjYXBlID0gRkFMU0UsCiAgY2FwdGlvbiA9ICdUYWJsZSAzOiDkvIHkuJrogZjkv6Hmga/msYfmgLsnICxvcHRpb25zID0gbGlzdCgKICBwYWdlTGVuZ3RoID0gNTAsIGF1dG9XaWR0aCA9IFRSVUUKKSkKYGBgCiMjIDIuMiDpk7booYwKYGBge3IgLCBlY2hvPUZBTFNFfQprLmZpbi5uZXclPiVoZWFkKC4sNDAwKSU+JS5bLGxpbms6PSBwYXN0ZSgiPGEgaHJlZj0nIixrLmxpbmssIicgdGFyZ2V0PSdibGFuaycgPumTvuaOpTwvYT4iLHNlcD0iIildJT4lCiAgc2VsZWN0KC4sLemTvuaOpSwtay5saW5rKSU+JQogIGRhdGF0YWJsZSguLCBlc2NhcGUgPSBGQUxTRSwKICBjYXB0aW9uID0gJ1RhYmxlIDQ6IOmTtuihjOiBmOS/oeaBr+axh+aAuycgLG9wdGlvbnMgPSBsaXN0KAogIHBhZ2VMZW5ndGggPSA1MCwgYXV0b1dpZHRoID0gVFJVRQopKQoKIyAlPiVrYWJsZSguLCBmb3JtYXQgPSAibWFya2Rvd24iKSAKYGBgCgoKIyAzLuaUv+W6nOS6i+S4muWNleS9jeaLm+iBmAoKYGBge3IgLCBlY2hvPUZBTFNFfQojIyAzLjEg55uu5b2V5L+h5oGv54is5Y+WCmYuZ2V0LnNoaXllZGFud2VpIDwtIGZ1bmN0aW9uKGsubnVtKSB7Cmsud2VibmFtZSA8LSAgcGFzdGUoImh0dHA6Ly93d3cuZ2FveGlhb2pvYi5jb20vemhhb3Bpbi9zaGl5ZWRhbndlaS9pbmRleF8iLGsubnVtLCIuaHRtbCIsc2VwPSIiKQp3ZWI8LXJlYWRfaHRtbChrLndlYm5hbWUsZW5jb2RpbmcgPSAnY3A5MzYnKQprLmRheTwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLmx0aXRsZSBzbWFsbCIpICU+JSBodG1sX3RleHQoLiklPiVnc3ViKCIoWy4oKV0pIiwiIiwuKQprLnRpdGxlIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLmx0aXRsZSBhIikgJT4lIGh0bWxfdGV4dCguKSU+JWdzdWIoIihbLl0pIiwiIiwuKQprLmxpbmsgPC0gd2ViICU+JSBodG1sX25vZGVzKCIubHRpdGxlIGEiKSU+JSBodG1sX2F0dHIoLiwgImhyZWYiKQprLmxpbmsyIDwtay5saW5rJT4lcGFzdGUoJ1tMaW5rXSgnLCAuLCBzZXA9JycpJT4lcGFzdGUoLiwgJyknLCBzZXA9JycpCgprLm5hbWUgPC0gd2ViICU+JSBodG1sX25vZGVzKCIubGlzdF9iX2luZm8gcCBhIikgJT4lIGh0bWxfdGV4dCguKQoKay5wbGFjZSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5zdHlsZTIgLmxjb21wYW55IikgJT4lIGh0bWxfdGV4dCguKQprLm51bSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5zdHlsZTIgLmxzYWxhcnkiKSAlPiUgaHRtbF90ZXh0KC4pCmsuZGVhZGxpbmUgPC0gd2ViICU+JSBodG1sX25vZGVzKCIuc3R5bGUyIC5sdGltZSIpICU+JSBodG1sX3RleHQoLikKCgpkYXRhLnRhYmxlKOaXpeacnz1rLmRheSzpopjnm649ay50aXRsZSzlnLDngrk9ay5wbGFjZSzmi5vogZjkurrmlbA9ay5udW0s5oiq5q2i5pe26Ze0PWsuZGVhZGxpbmUs6ZO+5o6lPWsubGluazIsay5saW5rKQp9CgpmLmdldC5zeWR3IDwtIGZ1bmN0aW9uKGsubnVtKSB7Cmsud2VibmFtZSA8LSAgcGFzdGUoImh0dHA6Ly93d3cuZ2FveGlhb2pvYi5jb20vemhhb3Bpbi9zeWR3L2d1YW5iYW4vaW5kZXhfIixrLm51bSwiLmh0bWwiLHNlcD0iIikKd2ViPC1yZWFkX2h0bWwoay53ZWJuYW1lLGVuY29kaW5nID0gJ2NwOTM2JykKay5kYXk8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5sdGl0bGUgc21hbGwiKSAlPiUgaHRtbF90ZXh0KC4pJT4lZ3N1YigiKFsuKCldKSIsIiIsLikKay50aXRsZSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5sdGl0bGUgYSIpICU+JSBodG1sX3RleHQoLiklPiVnc3ViKCIoWy5dKSIsIiIsLikKay5saW5rIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLmx0aXRsZSBhIiklPiUgaHRtbF9hdHRyKC4sICJocmVmIikKay5saW5rMiA8LWsubGluayU+JXBhc3RlKCdbTGlua10oJywgLiwgc2VwPScnKSU+JXBhc3RlKC4sICcpJywgc2VwPScnKQoKay5uYW1lIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLmxpc3RfYl9pbmZvIHAgYSIpICU+JSBodG1sX3RleHQoLikKCmsucGxhY2UgPC0gd2ViICU+JSBodG1sX25vZGVzKCIuc3R5bGUyIC5sY29tcGFueSIpICU+JSBodG1sX3RleHQoLikKay5udW0gPC0gd2ViICU+JSBodG1sX25vZGVzKCIuc3R5bGUyIC5sc2FsYXJ5IikgJT4lIGh0bWxfdGV4dCguKQprLmRlYWRsaW5lIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLnN0eWxlMiAubHRpbWUiKSAlPiUgaHRtbF90ZXh0KC4pCmRhdGEudGFibGUo5pel5pyfPWsuZGF5LOmimOebrj1rLnRpdGxlLOWcsOeCuT1rLnBsYWNlLOaLm+iBmOS6uuaVsD1rLm51bSzmiKrmraLml7bpl7Q9ay5kZWFkbGluZSzpk77mjqU9ay5saW5rMixrLmxpbmspCn0KCiMgay5hIDwtIGRhdGEudGFibGUoYygxOjEwMCkpJT4lYXBwbHkoLiwxLGYuZ2V0KSU+JQojICBkby5jYWxsKHJiaW5kLmZpbGwgLC4pJT4lCiMgIGRhdGEudGFibGUoKSU+JQojICAuW2dyZXBsKCJ2aWV3LnBocCIsay5saW5rKT09RixdICMg5Y675o6J5peg5rOV6YeH6ZuG55qE6ZO+5o6lCgoKCmBgYAoKYGBge3IgLCBlY2hvPUZBTFNFfQojIyMgMjAxN+W5tDjmnIgxNuaXpeeahOaVsOaNruW6kwojIGsuYS5zaGl5ZWRhbndlaSA8LSBkYXRhLnRhYmxlKGMoMTo2NjUpKSU+JWFwcGx5KC4sMSxmLmdldC5zaGl5ZWRhbndlaSklPiUKIyAgIGRvLmNhbGwocmJpbmQuZmlsbCAsLiklPiUKIyAgIGRhdGEudGFibGUoKSU+JQojICAgLltncmVwbCgidmlldy5waHAiLGsubGluayk9PUYsXSAjIOWOu+aOieaXoOazlemHh+mbhueahOmTvuaOpQojIAojIGsuYS5zeWR3IDwtIGRhdGEudGFibGUoYygxOjEyOCkpJT4lYXBwbHkoLiwxLGYuZ2V0LnN5ZHcpJT4lCiMgICBkby5jYWxsKHJiaW5kLmZpbGwgLC4pJT4lCiMgICBkYXRhLnRhYmxlKCklPiUKIyAgIC5bZ3JlcGwoInZpZXcucGhwIixrLmxpbmspPT1GLF0gIyDljrvmjonml6Dms5Xph4fpm4bnmoTpk77mjqUKIyAKIyAjIOS/neWtmOaWsOaVsOaNrgojIHdyaXRlLmNzdihrLmEuc2hpeWVkYW53ZWksInNoaXllZGFud2VpLmNzdiIsZmlsZUVuY29kaW5nID0gImNwOTM2IikKIyB3cml0ZS5jc3Yoay5hLnN5ZHcsInN5ZHcuY3N2IixmaWxlRW5jb2RpbmcgPSAiY3A5MzYiKQpgYGAKCmBgYHtyICwgZWNobz1GQUxTRX0KIyMgMy4yIOaVsOaNruWQiOW5tgojIOi9veWFpTIwMTflubQ45pyIMTbnmoTmlbDmja7vvIzmiJbmm7TmlrDnmoTmlbDmja4Kay5hLnNoaXllZGFud2VpMSA8LSBmcmVhZCgiaWNvbnYgLWYgY3A5MzYgLXQgVVRGLTggLi9zaGl5ZWRhbndlaS5jc3YiKSU+JXNlbGVjdCguLC0xKSAjJT4lLlvml6XmnJ8hPSIwODE2Il0Kay5hLnN5ZHcxIDwtIGZyZWFkKCJpY29udiAtZiBjcDkzNiAtdCBVVEYtOCAuL3N5ZHcuY3N2IiklPiVzZWxlY3QoLiwtMSkgIyU+JS5b5pel5pyfIT0iMDgxNiJdCiMgIyDlkIjlubbmlbDmja4KIyBrLmIgPC0gcmJpbmQuZmlsbChrLmIxLGsuYjIpJT4lCiMgICBkYXRhLnRhYmxlKCkKIyBuYW1lcyhrLmIpIDwtIGMoIuWPkeW4g+aXtumXtCIsIuaIquatouaXpeacnyIsIuaJgOWxnuecgeS7vSIsIuW3peS9nOWcsOeCuSIsIumrmOagoeWIhuexuyIsIuaLm+iBmOS6uuaVsCIsIuaKpeWQjeaWueW8jyIsIumcgOaxguWtpuenkSIpCiMgay5jIDwtIGRhdGEudGFibGUoay5hLGsuYikKIyAKIyBrLmNbLOaJgOWxnuecgeS7vTo9Z3N1YigiICIsIiIs5omA5bGe55yB5Lu9KV0lPiUKIyAgIC5bLOW3peS9nOWcsOeCuTo9Z3N1YigiICIsIiIs5bel5L2c5Zyw54K5KV0lPiUKIyAgIC5bLOaXpeacnzo9Z3N1YigiKFsuXSkiLCIiLOaXpeacnyldJT4lCiMgICAuWyzml6XmnJ86PXltZCjml6XmnJ8pXQojIAojICMgd3JpdGUuY3N2KGsuYywiYm9zaGlqb2IuY3N2IixmaWxlRW5jb2RpbmcgPSAiY3A5MzYiKQojIAojIGsuYyU+JXNlbGVjdCguLC1rLmxpbmspJT4la2FibGUoLiwgZm9ybWF0ID0gIm1hcmtkb3duIikKIyAKIyBrLmMlPiVzZWxlY3QoLiwtay5saW5rKQojIAojIG5hbWVzKGsuYykKYGBgCgoKYGBge3IgLCBlY2hvPUZBTFNFfQojIyAzLjMg5pWw5o2u5pu05pawCiMg5pyq5pu05paw55qE5pWw5o2u5bqT5Li6ay5hLmVuMSBrLmEuZmluMQoKIyDojrflj5bmlrDlop7pg6jliIYKay5hLnNoaXllZGFud2VpIDwtIGRhdGEudGFibGUoYygxOjEwKSklPiVhcHBseSguLDEsZi5nZXQuc2hpeWVkYW53ZWkpJT4lCiAgZG8uY2FsbChyYmluZC5maWxsICwuKSU+JQogIGRhdGEudGFibGUoKSU+JQogIC5bZ3JlcGwoInZpZXcucGhwIixrLmxpbmspPT1GLF0lPiUKICAuWyFrLmxpbmslaW4lay5hLnNoaXllZGFud2VpMVssay5saW5rXSxdCgprLmEuc3lkdyA8LSBkYXRhLnRhYmxlKGMoMToxMCkpJT4lYXBwbHkoLiwxLGYuZ2V0LnN5ZHcpJT4lCiAgZG8uY2FsbChyYmluZC5maWxsICwuKSU+JQogIGRhdGEudGFibGUoKSU+JQogIC5bZ3JlcGwoInZpZXcucGhwIixrLmxpbmspPT1GLF0lPiUKICAuWyFrLmxpbmslaW4lay5hLnN5ZHcxWyxrLmxpbmtdLF0KCmsuc2hpeWVkYW53ZWkubmV3IDwtIHJiaW5kLmZpbGwoay5hLnNoaXllZGFud2VpLGsuYS5zaGl5ZWRhbndlaTEpJT4lZGF0YS50YWJsZSgpCmsuc3lkdy5uZXcgPC0gcmJpbmQuZmlsbChrLmEuc3lkdyxrLmEuc3lkdzEpJT4lZGF0YS50YWJsZSgpCgoKIyDkv53lrZjmlrDmlbDmja4Kd3JpdGUuY3N2KGsuc2hpeWVkYW53ZWkubmV3LCJzaGl5ZWRhbndlaS5jc3YiLGZpbGVFbmNvZGluZyA9ICJjcDkzNiIpCndyaXRlLmNzdihrLnN5ZHcubmV3LCJzeWR3LmNzdiIsZmlsZUVuY29kaW5nID0gImNwOTM2IikKCmBgYAojIyAzLjEg5LqL5Lia5Y2V5L2NCmBgYHtyICwgZWNobz1GQUxTRX0Kay5zaGl5ZWRhbndlaS5uZXclPiVoZWFkKC4sMjAwMCklPiUuWyxsaW5rOj0gcGFzdGUoIjxhIGhyZWY9JyIsay5saW5rLCInIHRhcmdldD0nYmxhbmsnID7pk77mjqU8L2E+IixzZXA9IiIpXSU+JQogIHNlbGVjdCguLC3pk77mjqUsLWsubGluayklPiUKICBkYXRhdGFibGUoLiwgZXNjYXBlID0gRkFMU0UsCiAgY2FwdGlvbiA9ICdUYWJsZSAzOiDkuovkuJrljZXkvY3mi5vogZjkv6Hmga/msYfmgLsnICxvcHRpb25zID0gbGlzdCgKICBwYWdlTGVuZ3RoID0gNTAsIGF1dG9XaWR0aCA9IFRSVUUKKSkKYGBgCiMjIDMuMiDlm73mnInkvIHkuJoKYGBge3IgLCBlY2hvPUZBTFNFfQprLnN5ZHcubmV3JT4laGVhZCguLDEwMDApJT4lLlssbGluazo9IHBhc3RlKCI8YSBocmVmPSciLGsubGluaywiJyB0YXJnZXQ9J2JsYW5rJyA+6ZO+5o6lPC9hPiIsc2VwPSIiKV0lPiUKICBzZWxlY3QoLiwt6ZO+5o6lLC1rLmxpbmspJT4lCiAgZGF0YXRhYmxlKC4sIGVzY2FwZSA9IEZBTFNFLAogIGNhcHRpb24gPSAnVGFibGUgNDog5Zu95pyJ5LyB5Lia5oub6IGY5L+h5oGv5rGH5oC7JyAsb3B0aW9ucyA9IGxpc3QoCiAgcGFnZUxlbmd0aCA9IDUwLCBhdXRvV2lkdGggPSBUUlVFCikpCgojICU+JWthYmxlKC4sIGZvcm1hdCA9ICJtYXJrZG93biIpIApgYGAKIyA0LuaZuuiBlOaLm+iBmApgYGB7ciwgZWNobz1GQUxTRX0KZi5nZXQuemhpbGlhbiA8LSBmdW5jdGlvbihrLm51bSkgewprLndlYiA8LSAiaHR0cDovL3NvdS56aGFvcGluLmNvbS9qb2JzL3NlYXJjaHJlc3VsdC5hc2h4P2psPSVFNSU4QyU5NyVFNCVCQSVBQyUyYiVFNCVCOCU4QSVFNiVCNSVCNyUyYiVFNSVCOSVCRiVFNSVCNyU5RSUyYiVFNiVCNyVCMSVFNSU5QyVCMyUyYiVFNiU5RCVBRCVFNSVCNyU5RSZzbT0wJnNmPTAmc3Q9OTk5OTkmZWw9MSZldD0yJmlzYWR2PTEmc2c9NTA4N2Q1NjQxODk1NDQ3YjliNjAzOGI4Mzc5ZWVlMmYmcD0iCmsud2VibmFtZSA8LSAgcGFzdGUoay53ZWIsay5udW0sc2VwPSIiKQoKd2ViPC1yZWFkX2h0bWwoay53ZWJuYW1lKQoKay5sMSA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi56d21jIGEiKSU+JSBodG1sX2F0dHIoLiwiaHJlZiIpJT4lZGF0YS50YWJsZSguKQprLmwyIDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLnp3bWMgYSIpJT4lIGh0bWxfdGV4dCguKSU+JWRhdGEudGFibGUoLikKay5sMyA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5nc21jIGE6bnRoLWNoaWxkKDEpIiklPiUgaHRtbF9hdHRyKC4sImhyZWYiKSU+JWRhdGEudGFibGUoLikKay5sNCA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5nc21jIGE6bnRoLWNoaWxkKDEpIiklPiUgaHRtbF90ZXh0KC4pJT4lZGF0YS50YWJsZSguKQprLmw1IDwtIHdlYiAlPiUgaHRtbF9ub2RlcygiLnp3eXgiKSU+JSBodG1sX3RleHQoLiklPiVkYXRhLnRhYmxlKC4pJT4lLlstMSxdCmsubDYgPC0gd2ViICU+JSBodG1sX25vZGVzKCIuZ3pkZCIpJT4lIGh0bWxfdGV4dCguKSU+JWRhdGEudGFibGUoLiklPiUuWy0xLF0Kay5sNyA8LSB3ZWIgJT4lIGh0bWxfbm9kZXMoIi5neHNqIHNwYW4iKSU+JSBodG1sX3RleHQoLiklPiVkYXRhLnRhYmxlKC4pCmsubDggPC0gd2ViICU+JSBodG1sX25vZGVzKCIubmV3bGlzdF9kZWF0aWxfbGFzdCIpJT4lIGh0bWxfdGV4dCguKSU+JWRhdGEudGFibGUoLikKCmsudCA8LSBkYXRhLnRhYmxlKGsubDIsay5sNCxrLmw1LGsubDYsay5sNyxrLmwxLGsubDMsay5sOCkKCm5hbWVzKGsudCkgPC1jKCLogYzkvY3lkI3np7AiLCLlhazlj7jlkI3np7AiLCLogYzkvY3mnIjolqoiLCLlt6XkvZzlnLDngrkiLCLlj5HluIPml6XmnJ8iLCLlnLDlnYAxIiwi5Zyw5Z2AMiIsIuWkh+azqCIpCgprLnQKfQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFfQojIGsuemwgPC0gZGF0YS50YWJsZShjKDE6MzAwKSklPiVhcHBseSguLDEsZi5nZXQuemhpbGlhbiklPiUKIyAgIGRvLmNhbGwocmJpbmQuZmlsbCAsLiklPiUKIyAgIGRhdGEudGFibGUoKQojIAojIHdyaXRlLmNzdihrLnpsLCJ6aGlsaWFuLmNzdiIsZmlsZUVuY29kaW5nID0gInV0Zi04IikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRX0Kay56bDA8LSBmcmVhZCgiaWNvbnYgLWYgdXRmLTggLXQgVVRGLTggLi96aGlsaWFuLmNzdiIpJT4lc2VsZWN0KC4sLTEpIAoKIyDojrflj5bmlrDlop7pg6jliIYKay56bDIgPC0gZGF0YS50YWJsZShjKDE6NSkpJT4lYXBwbHkoLiwxLGYuZ2V0LnpoaWxpYW4pJT4lCiAgZG8uY2FsbChyYmluZC5maWxsICwuKSU+JQogIGRhdGEudGFibGUoKSU+JQogIC5bIWDogYzkvY3lkI3np7BgJWluJWsuemwwWyxg6IGM5L2N5ZCN56ewYF0mIWDlhazlj7jlkI3np7BgJWluJWsuemwwWyxg5YWs5Y+45ZCN56ewYF0sXQoKay56bC5uZXcgPC0gcmJpbmQuZmlsbChrLnpsMixrLnpsMCklPiVkYXRhLnRhYmxlKCkKCgojIOS/neWtmOaWsOaVsOaNrgp3cml0ZS5jc3Yoay56bC5uZXcsInpoaWxpYW4uY3N2IixmaWxlRW5jb2RpbmcgPSAidXRmLTgiKQpgYGAKCmBgYHtyfQprLnpsLm5ldyU+JQogIC5bLOWcsOWdgGE6PSBwYXN0ZSgiPGEgaHJlZj0nIizlnLDlnYAxLCInIHRhcmdldD0nYmxhbmsnID7pk77mjqUxPC9hPiIsc2VwPSIiKV0lPiUKICAuWyzlnLDlnYBiOj0gcGFzdGUoIjxhIGhyZWY9JyIs5Zyw5Z2AMiwiJyB0YXJnZXQ9J2JsYW5rJyA+6ZO+5o6lMjwvYT4iLHNlcD0iIildJT4lCiAgc2VsZWN0KC4sLeWcsOWdgDEsLeWcsOWdgDIpJT4lCiAgZGF0YXRhYmxlKC4sIGVzY2FwZSA9IEZBTFNFLAogIGNhcHRpb24gPSAnVGFibGUgMzog5LqL5Lia5Y2V5L2N5oub6IGY5L+h5oGv5rGH5oC7JyAsb3B0aW9ucyA9IGxpc3QoCiAgcGFnZUxlbmd0aCA9IDUwLCBhdXRvV2lkdGggPSBUUlVFCikpCmBgYAoKYGBgCgo=