PCEtLSBJbWFnZSBEaW1lbnNpb25zIEZpeCDigJQg2KzZhNmI2q/bjNix24wg2KfYsiBDTFMgLS0+CjxzdHlsZT4KaW1nOm5vdChbd2lkdGhdKTpub3QoW2hlaWdodF0pOm5vdChbc3R5bGUqPSJ3aWR0aCJdKTpub3QoW3N0eWxlKj0iaGVpZ2h0Il0pIHsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKfQo8L3N0eWxlPgoKCjwhLS0gU2tpcCBOYXZpZ2F0aW9uIC0tPgo8YSBocmVmPSIjbWFpbi1jb250ZW50IiBjbGFzcz0ic2tpcC1uYXYiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwMHB4O2xlZnQ6MDtiYWNrZ3JvdW5kOiNlZjU0MGE7Y29sb3I6d2hpdGU7cGFkZGluZzoxMHB4IDIwcHg7ei1pbmRleDo5OTk5O2ZvbnQtc2l6ZToxNnB4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlci1yYWRpdXM6MCAwIDVweCAwOyI+2LHZgdiq2YYg2KjZhyDZhdit2KrZiNin24wg2KfYtdmE24w8L2E+Cgo8IS0tIFRpdGxlICsgTWV0YSBEZXNjcmlwdGlvbiDYp9iyINiq2YbYuNuM2YXYp9iqINi12YHYrdmHINin2LXZhNuMINin2LnZhdin2YQg2YXbjOKAjNi02YcgLS0+CjwhLS0gT3ZlcnJpZGU6INmE2LrZiCBub2luZGV4IENNUyDigJQg2LXZgdit2KfYqiDZhdmH2YUg2KfbjNmG2K/aqdizINio2LTZhiAtLT4KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93LCBtYXgtc25pcHBldDotMSwgbWF4LWltYWdlLXByZXZpZXc6bGFyZ2UiPgo8bWV0YSBuYW1lPSJnb29nbGVib3QiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3ciPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjZWY1NDBhIj4KCjwhLS0gT0cgVGFncyAtLT4KPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSLYp9mE2YjYp9mGINmF2KfYsdqp2KogLdiu2LHbjNivINiq2qkg2Ygg2LnZhdiv2Ycg2YTZiNin2LLZhSDYrtin2Ybar9uM2Iwg2b7ZiNi02KfaqSDZiCDYotix2KfbjNi024wiPgo8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9ItmB2LHZiNi02q/Yp9mHINin24zZhtiq2LHZhtiq24wg2b7Yrti0INi52YXYr9mHINmE2YjYp9iy2YUg2K7Yp9mG2q/bjNiMINm+2YjYtNin2qnYjCDYotix2KfbjNi024wg2Ygg2KfYqNiy2KfYsdii2YTYp9iqINio2Kcg2KjZh9iq2LHbjNmGINmC24zZhdiqIj4KPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy5hbHZhbm1hcmtldC5jb20vaW1hZ2VzL2xvZ28ucG5nIj4KPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cuYWx2YW5tYXJrZXQuY29tIj4KPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9IndlYnNpdGUiPgo8bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSLYp9mE2YjYp9mGINmF2KfYsdqp2KoiPgo8bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJmYV9JUiI+Cgo8IS0tIFR3aXR0ZXIgQ2FyZCAtLT4KPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIj4KPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0i2KfZhNmI2KfZhiDZhdin2LHaqdiqIC0g2K7YsduM2K8g2KraqSDZiCDYudmF2K/ZhyDZhNmI2KfYstmFINiu2KfZhtqv24zYjCDZvtmI2LTYp9qpINmIINii2LHYp9uM2LTbjCI+CjxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9ItmB2LHZiNi02q/Yp9mHINin24zZhtiq2LHZhtiq24wg2b7Yrti0INi52YXYr9mHINmE2YjYp9iy2YUg2K7Yp9mG2q/bjNiMINm+2YjYtNin2qnYjCDYotix2KfbjNi024wg2KjZh9iv2KfYtNiq24zYjCDYp9io2LLYp9ix2KLZhNin2KrYjCDYudi32LEg2Ygg2KfYr9qp2YTZhiDYqNinINio2YfYqtix24zZhiDZgtuM2YXYqiI+CjxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LmFsdmFubWFya2V0LmNvbS9pbWFnZXMvbG9nby5wbmciPgo8IS0tIENhbm9uaWNhbCDYqtmI2LPYtyBDTVMg2KrZiNmE24zYryDZhduM4oCM2LTZhyAtLT4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWZsYW5nPSJmYSIgaHJlZj0iaHR0cHM6Ly93d3cuYWx2YW5tYXJrZXQuY29tIj4KCjwhLS0gQXBwbGUgVG91Y2ggSWNvbiAtLT4KPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSJodHRwczovL3d3dy5hbHZhbm1hcmtldC5jb20vZmF2aWNvbi5pY28iPgoKPCEtLSBQcmVjb25uZWN0ICYgRE5TLVByZWZldGNoIC0tPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldCIgY3Jvc3NvcmlnaW4+CjwhLS0gZ29mdGluby5jb20gcHJlY29ubmVjdCByZW1vdmVkIC0tPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0Ij4KPCEtLSBnb2Z0aW5vLmNvbSBkbnMtcHJlZmV0Y2ggcmVtb3ZlZCAtLT4KPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vdHJ1c3RzZWFsLmVuYW1hZC5pciI+Cgo8IS0tIEZvbnQgUHJlbG9hZCAtLT4KPGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSJhc3NldC90aGVtZS9pcmFueWVrYW53ZWJyZWd1bGFyZmFudW0ud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L3dvZmYyIiBjcm9zc29yaWdpbj4KCjwhLS0gQ1dWOiBDTFMgRml4IOKAlCDYsdmB2Lkg2KzYp9io2KzYp9uM24wg2KrYtdin2YjbjNixIC0tPgo8c3R5bGU+CmltZzpub3QoW3dpZHRoXSk6bm90KFtoZWlnaHRdKTpub3QoW3N0eWxlKj0id2lkdGg6MTAwJSJdKTpub3QoLnN3aXBlci1zbGlkZSBpbWcpOm5vdCgubXloZWFkZXIgaW1nKTpub3QoLmNhdGVnb3J5LWhlYWRlciBpbWcpIHsKICAgIGFzcGVjdC1yYXRpbzogMTYvOSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50Owp9Ci8qIE5hdmlnYXRpb24gT3B0aW1pemF0aW9uIOKAlCDZhdiu2YHbjCDaqdix2K/ZhiDYstuM2LHZhdmG2Ygg2KrYpyBob3ZlciAqLwouaGF2ZS1jaGlsZCA+IHVsIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KLmhhdmUtY2hpbGQ6aG92ZXIgPiB1bCB7CiAgICBkaXNwbGF5OiBibG9jazsKfQo8L3N0eWxlPgoKPCEtLSBEZWZlciBhbGwgSlMgLS0+CjxzY3JpcHQ+CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFtzcmNdJykuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICBpZiAoIXMuYXN5bmMgJiYgIXMuZGVmZXIpIHsKICAgICAgICBzLmRlZmVyID0gdHJ1ZTsKICAgIH0KfSk7Cjwvc2NyaXB0PgoKPCEtLSBSZW1vdmUgRHVwbGljYXRlIENTUyAtLT4KPHNjcmlwdD4KdmFyIGNzc0ZpbGVzID0ge307CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJzdHlsZXNoZWV0Il0nKS5mb3JFYWNoKGZ1bmN0aW9uKGxpbmspIHsKICAgIHZhciBocmVmID0gbGluay5ocmVmOwogICAgaWYoY3NzRmlsZXNbaHJlZl0pIHsKICAgICAgICBsaW5rLnJlbW92ZSgpOwogICAgfSBlbHNlIHsKICAgICAgICBjc3NGaWxlc1tocmVmXSA9IHRydWU7CiAgICB9Cn0pOwo8L3NjcmlwdD4KCjwhLS0gU2NoZW1hIENsZWFudXAg4oCUINit2LDZgSBTY2hlbWEg2YfYp9uMINi02qnYs9iq2YcgQ01TIC0tPgo8c2NyaXB0Pgp2YXIgX3NjaGVtYUNsZWFudXBJbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgdmFyIHNjcmlwdHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzY3JpcHRbdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiJdJyk7CiAgICBpZihzY3JpcHRzLmxlbmd0aCA+IDApIHsKICAgICAgICBjbGVhckludGVydmFsKF9zY2hlbWFDbGVhbnVwSW50ZXJ2YWwpOwogICAgICAgIHNjcmlwdHMuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcy50ZXh0Q29udGVudCB8fCAnJzsKICAgICAgICAgICAgLy8g2K3YsNmBIFNpdGVOYXZpZ2F0aW9uRWxlbWVudCDYtNqp2LPYqtmHICh1cmwg2LTaqdiz2KrZhykKICAgICAgICAgICAgaWYoY29udGVudC5pbmRleE9mKCciU2l0ZU5hdmlnYXRpb25FbGVtZW50IicpICE9PSAtMSAmJiBjb250ZW50LmluZGV4T2YoJy9odHRwczovLycpICE9PSAtMSkgewogICAgICAgICAgICAgICAgcy5yZW1vdmUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyDYrdiw2YEgV2ViUGFnZSDYtNqp2LPYqtmHICjYqNiv2YjZhiB1cmwpCiAgICAgICAgICAgIGlmKGNvbnRlbnQuaW5kZXhPZignIldlYlBhZ2UiJykgIT09IC0xICYmIGNvbnRlbnQuaW5kZXhPZignInVybCInKSA9PT0gLTEpIHsKICAgICAgICAgICAgICAgIHMucmVtb3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KfSwgMTAwKTsKPC9zY3JpcHQ+Cgo8IS0tIFNjaGVtYSBPcmdhbml6YXRpb24gLS0+CjxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CnsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAibmFtZSI6ICLYp9mE2YjYp9mGINmF2KfYsdqp2KoiLAogICJ1cmwiOiAiaHR0cHM6Ly93d3cuYWx2YW5tYXJrZXQuY29tIiwKICAibG9nbyI6ICJodHRwczovL3d3dy5hbHZhbm1hcmtldC5jb20vaW1hZ2VzL2xvZ28ucG5nIiwKICAidGVsZXBob25lIjogIis5ODkxNjgzMzU2NTIiLAogICJzYW1lQXMiOiBbImh0dHBzOi8vdC5tZS9hbHZhbm1hcmtlZXQiLCAiaHR0cHM6Ly9ydWJpa2EuaXIvYWx2YW5tYXJrZWV0Il0KfQo8L3NjcmlwdD4KCjwhLS0gU2NoZW1hIFdlYlNpdGUgLS0+CjxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CnsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAiQHR5cGUiOiAiV2ViU2l0ZSIsCiAgIm5hbWUiOiAi2KfZhNmI2KfZhiDZhdin2LHaqdiqIiwKICAidXJsIjogImh0dHBzOi8vd3d3LmFsdmFubWFya2V0LmNvbSIsCiAgInBvdGVudGlhbEFjdGlvbiI6IHsKICAgICJAdHlwZSI6ICJTZWFyY2hBY3Rpb24iLAogICAgInRhcmdldCI6ICJodHRwczovL3d3dy5hbHZhbm1hcmtldC5jb20vc2VhcmNoL3tzZWFyY2hfdGVybV9zdHJpbmd9IiwKICAgICJxdWVyeS1pbnB1dCI6ICJyZXF1aXJlZCBuYW1lPXNlYXJjaF90ZXJtX3N0cmluZyIKICB9Cn0KPC9zY3JpcHQ+Cgo8IS0tIFNjaGVtYSBXZWJQYWdlIC0tPgo8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgp7CiAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgIkB0eXBlIjogIldlYlBhZ2UiLAogICJuYW1lIjogItin2YTZiNin2YYg2YXYp9ix2qnYqiAtINiu2LHbjNivINiq2qkg2Ygg2LnZhdiv2Ycg2YTZiNin2LLZhSDYrtin2Ybar9uM2Iwg2b7ZiNi02KfaqSDZiCDYotix2KfbjNi024wiLAogICJ1cmwiOiAiaHR0cHM6Ly93d3cuYWx2YW5tYXJrZXQuY29tIiwKICAiZGVzY3JpcHRpb24iOiAi2YHYsdmI2LTar9in2Ycg2KfbjNmG2KrYsdmG2KrbjCDZvtiu2LQg2LnZhdiv2Ycg2YTZiNin2LLZhSDYrtin2Ybar9uM2Iwg2b7ZiNi02KfaqdiMINii2LHYp9uM2LTbjCDZiCDYp9io2LLYp9ix2KLZhNin2Kog2KjYpyDYqNmH2KrYsduM2YYg2YLbjNmF2KoiLAogICJkYXRlUHVibGlzaGVkIjogIjIwMjQtMDEtMDEiLAogICJkYXRlTW9kaWZpZWQiOiAiMjAyNi0wOC0xOCIsCiAgInB1Ymxpc2hlciI6IHsKICAgICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgIm5hbWUiOiAi2KfZhNmI2KfZhiDZhdin2LHaqdiqIgogIH0KfQo8L3NjcmlwdD4KCjwhLS0gU2NoZW1hIEJyZWFkY3J1bWJMaXN0IC0tPgo8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgp7CiAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgIkB0eXBlIjogIkJyZWFkY3J1bWJMaXN0IiwKICAiaXRlbUxpc3RFbGVtZW50IjogWwogICAgewogICAgICAiQHR5cGUiOiAiTGlzdEl0ZW0iLAogICAgICAicG9zaXRpb24iOiAxLAogICAgICAibmFtZSI6ICLYrtin2YbZhyIsCiAgICAgICJpdGVtIjogImh0dHBzOi8vd3d3LmFsdmFubWFya2V0LmNvbSIKICAgIH0KICBdCn0KPC9zY3JpcHQ+Cgo8IS0tIEFjY2Vzc2liaWxpdHk6IFNraXAgTmF2aWdhdGlvbiArIEZvcm0gTGFiZWxzIC0tPgo8c2NyaXB0PgovLyBTa2lwIE5hdmlnYXRpb24KKGZ1bmN0aW9uKCl7CiAgICB2YXIgY2hlY2tCb2R5ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgaWYoZG9jdW1lbnQuYm9keSkgewogICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrQm9keSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyDYp9i22KfZgdmHINqp2LHYr9mGIGlkINio2YcgbWFpbiB0YWcKICAgICAgICAgICAgdmFyIG1haW5UYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtYWluJyk7CiAgICAgICAgICAgIGlmKG1haW5UYWcgJiYgIW1haW5UYWcuaWQpIHsKICAgICAgICAgICAgICAgIG1haW5UYWcuaWQgPSAnbWFpbi1jb250ZW50JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHNraXBOYXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgICAgICAgIHNraXBOYXYuaHJlZiA9ICcjbWFpbi1jb250ZW50JzsKICAgICAgICAgICAgc2tpcE5hdi5jbGFzc05hbWUgPSAnc2tpcC1uYXYnOwogICAgICAgICAgICBza2lwTmF2LnRleHRDb250ZW50ID0gJ9ix2YHYqtmGINio2Ycg2YXYrdiq2YjYp9uMINin2LXZhNuMJzsKICAgICAgICAgICAgc2tpcE5hdi5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTAwcHg7bGVmdDowO2JhY2tncm91bmQ6I2VmNTQwYTtjb2xvcjp3aGl0ZTtwYWRkaW5nOjEwcHggMjBweDt6LWluZGV4Ojk5OTk7Zm9udC1zaXplOjE2cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLXJhZGl1czowIDAgNXB4IDA7JzsKICAgICAgICAgICAgc2tpcE5hdi5vbmZvY3VzID0gZnVuY3Rpb24oKXsgdGhpcy5zdHlsZS50b3AgPSAnMCc7IH07CiAgICAgICAgICAgIHNraXBOYXYub25ibHVyID0gZnVuY3Rpb24oKXsgdGhpcy5zdHlsZS50b3AgPSAnLTEwMHB4JzsgfTsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoc2tpcE5hdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKICAgICAgICB9CiAgICB9LCA1MCk7Cn0pKCk7CgovLyBGb3JtIExhYmVscwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKXsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0Om5vdChbYXJpYS1sYWJlbF0pOm5vdChbdHlwZT0iaGlkZGVuIl0pOm5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKScpLmZvckVhY2goZnVuY3Rpb24oaW5wdXQpIHsKICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgfHwgJyc7CiAgICAgICAgdmFyIG5hbWUgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSB8fCAnJzsKICAgICAgICBpZihwbGFjZWhvbGRlcikgewogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBwbGFjZWhvbGRlcik7CiAgICAgICAgfSBlbHNlIGlmKG5hbWUgPT09ICdxJykgewogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAn2KzYs9iq2KzZiCDZhdit2LXZiNmEJyk7CiAgICAgICAgfSBlbHNlIGlmKGlucHV0LmNsb3Nlc3QoJy5xdWFudGl0eSwgLnF0eSwgW2NsYXNzKj0icXVhbnRpdHkiXScpKSB7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICfYqti52K/Yp9ivJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ9mI2LHZiNiv24wnKTsKICAgICAgICB9CiAgICB9KTsKfSk7Cjwvc2NyaXB0PgoKCjwhLS0gQWNjZXNzaWJpbGl0eSBGaXgg4oCUINin2LXZhNin2K0gQVJJQSDZiCBMaW5rcyAtLT4KPHN0eWxlPgovKiDZhdiu2YHbjCDaqdix2K/ZhiDZhNuM2YbaqeKAjNmH2KfbjCDYqNiv2YjZhiDZhdiq2YYg2KfYsiDYtdmB2K3Zh+KAjNiu2YjYp9mGICovCmE6bm90KFthcmlhLWxhYmVsXSk6bm90KFthcmlhLWxhYmVsbGVkYnldKTpub3QoW3RpdGxlXSk6bm90KDplbXB0eSk6bm90KFtocmVmXj0iIyJdKSB7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Cjwvc3R5bGU+CjxzY3JpcHQ+CihmdW5jdGlvbigpewogICAgLy8g2KfYtdmE2KfYrSDYr9qp2YXZhyBuYXYtcmV2aWV3LXRhYgogICAgdmFyIHJldmlld1RhYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtcmV2aWV3LXRhYicpOwogICAgaWYocmV2aWV3VGFiKSB7CiAgICAgICAgcmV2aWV3VGFiLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICfYqtioINmG2LjYsdin2KonKTsKICAgICAgICByZXZpZXdUYWIuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RhYicpOwogICAgICAgIHJldmlld1RhYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCAnbmF2LXJldmlldycpOwogICAgfQogICAgCiAgICAvLyDYp9i12YTYp9itINmE24zZhtqp4oCM2YfYp9uMINio2K/ZiNmGINmF2KrZhgogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYScpLmZvckVhY2goZnVuY3Rpb24obGluaykgewogICAgICAgIHZhciB0ZXh0ID0gKGxpbmsudGV4dENvbnRlbnQgfHwgJycpLnRyaW0oKTsKICAgICAgICB2YXIgYXJpYUxhYmVsID0gbGluay5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKTsKICAgICAgICB2YXIgdGl0bGUgPSBsaW5rLmdldEF0dHJpYnV0ZSgndGl0bGUnKTsKICAgICAgICB2YXIgaGFzSW1nID0gbGluay5xdWVyeVNlbGVjdG9yKCdpbWdbYWx0XScpOwogICAgICAgIAogICAgICAgIGlmKCF0ZXh0ICYmICFhcmlhTGFiZWwgJiYgIXRpdGxlICYmICFoYXNJbWcpIHsKICAgICAgICAgICAgdmFyIGljb24gPSBsaW5rLnF1ZXJ5U2VsZWN0b3IoJ2ksIHNwYW4uZ2x5cGhpY29uLCBzcGFuLmljb24sIHNwYW4uZmEnKTsKICAgICAgICAgICAgaWYoaWNvbikgewogICAgICAgICAgICAgICAgdmFyIGljb25DbGFzcyA9IGljb24uY2xhc3NOYW1lIHx8ICcnOwogICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gJ9mE24zZhtqpJzsKICAgICAgICAgICAgICAgIGlmKGljb25DbGFzcy5pbmNsdWRlcygnZWRpdCcpIHx8IGljb25DbGFzcy5pbmNsdWRlcygncGVuY2lsJykgfHwgaWNvbkNsYXNzLmluY2x1ZGVzKCdmYS1lZGl0JykgfHwgaWNvbkNsYXNzLmluY2x1ZGVzKCdtZGktcGVuY2lsJykpIHsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICfZiNuM2LHYp9uM2LQnOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmKGljb25DbGFzcy5pbmNsdWRlcygnZGVsZXRlJykgfHwgaWNvbkNsYXNzLmluY2x1ZGVzKCd0cmFzaCcpIHx8IGljb25DbGFzcy5pbmNsdWRlcygnZmEtdHJhc2gnKSkgewogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJ9it2LDZgSc7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoaWNvbkNsYXNzLmluY2x1ZGVzKCdzZWFyY2gnKSB8fCBpY29uQ2xhc3MuaW5jbHVkZXMoJ2ZhLXNlYXJjaCcpKSB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAn2KzYs9iq2KzZiCc7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoaWNvbkNsYXNzLmluY2x1ZGVzKCdjbG9zZScpIHx8IGljb25DbGFzcy5pbmNsdWRlcygndGltZXMnKSB8fCBpY29uQ2xhc3MuaW5jbHVkZXMoJ2ZhLXRpbWVzJykpIHsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICfYqNiz2KrZhic7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoaWNvbkNsYXNzLmluY2x1ZGVzKCdzaGFyZScpIHx8IGljb25DbGFzcy5pbmNsdWRlcygnZmEtc2hhcmUnKSkgewogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJ9in2LTYqtix2KfaqeKAjNqv2LDYp9ix24wnOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmKGljb25DbGFzcy5pbmNsdWRlcygnaGVhcnQnKSB8fCBpY29uQ2xhc3MuaW5jbHVkZXMoJ2xpa2UnKSB8fCBpY29uQ2xhc3MuaW5jbHVkZXMoJ2ZhLWhlYXJ0JykpIHsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICfYudmE2KfZgtmH4oCM2YXZhtiv24wnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBsYWJlbCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyDZhNuM2YbaqSDYqNiv2YjZhiDZhdiq2YYg2Ygg2KjYr9mI2YYg2KLbjNqp2YjZhgogICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAn2YTbjNmG2qknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwp9KSgpOwo8L3NjcmlwdD4KCjwhLS0gUGVyZm9ybWFuY2U6IFJlc291cmNlIEhpbnRzICsgUHJlbG9hZCAtLT4KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tIiBjcm9zc29yaWdpbj4KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQiIGNyb3Nzb3JpZ2luPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iLy9jZG5qcy5jbG91ZGZsYXJlLmNvbSI+CjxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSIvL2Nkbi5qc2RlbGl2ci5uZXQiPgoKCgoKPCEtLSBTY2hlbWEgQ2xlYW51cCDigJQg2K3YsNmBIFNpdGVOYXZpZ2F0aW9uRWxlbWVudCDYrtix2KfYqCBDTVMgLS0+CjxzY3JpcHQ+CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFt0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICBpZihzLnRleHRDb250ZW50LmluZGV4T2YoJ1NpdGVOYXZpZ2F0aW9uRWxlbWVudCcpICE9PSAtMSkgcy5yZW1vdmUoKTsKICAgIH0pOwp9KTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFt0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICBpZihzLnRleHRDb250ZW50LmluZGV4T2YoJ1NpdGVOYXZpZ2F0aW9uRWxlbWVudCcpICE9PSAtMSkgcy5yZW1vdmUoKTsKICAgIH0pOwp9KTsKc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFt0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICBpZihzLnRleHRDb250ZW50LmluZGV4T2YoJ1NpdGVOYXZpZ2F0aW9uRWxlbWVudCcpICE9PSAtMSkgcy5yZW1vdmUoKTsKICAgIH0pOwp9LCAxMDAwKTsKc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFt0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICBpZihzLnRleHRDb250ZW50LmluZGV4T2YoJ1NpdGVOYXZpZ2F0aW9uRWxlbWVudCcpICE9PSAtMSkgcy5yZW1vdmUoKTsKICAgIH0pOwp9LCAzMDAwKTsKPC9zY3JpcHQ+CjwhLS0gUGVyZm9ybWFuY2U6IERlZmVyIG5vbi1jcml0aWNhbCBDU1MgLS0+CjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AbWRpL2ZvbnRANy40LjQ3L2Nzcy9tYXRlcmlhbGRlc2lnbmljb25zLm1pbi5jc3MiIGFzPSJzdHlsZSIgb25sb2FkPSJ0aGlzLm9ubG9hZD1udWxsO3RoaXMucmVsPSdzdHlsZXNoZWV0JyI+Cjxub3NjcmlwdD48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQG1kaS9mb250QDcuNC40Ny9jc3MvbWF0ZXJpYWxkZXNpZ25pY29ucy5taW4uY3NzIj48L25vc2NyaXB0Pgo8IS0tIFBlcmZvcm1hbmNlOiBHb29nbGUgQW5hbHl0aWNzIFByZWNvbm5lY3QgLS0+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iIGNyb3Nzb3JpZ2luPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iPgo=

متاسفانه موردی برای شما پیدا نشد.