-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtampermonkey-backup-firefox-2021-05-06T04-12-43-272Z.txt
1 lines (1 loc) · 63.5 KB
/
tampermonkey-backup-firefox-2021-05-06T04-12-43-272Z.txt
1
{"created_by":"Tampermonkey","version":"1","scripts":[{"name":"超星网课助手(改)(查题可用)","options":{"check_for_updates":true,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_prototypes":false,"noframes":null,"run_at":null,"override":{"use_includes":[],"orig_includes":[],"merge_includes":true,"use_matches":[],"orig_matches":["*://*.chaoxing.com/*","*://*.edu.cn/*","*://*.nbdlib.cn/*","*://*.hnsyu.net/*"],"merge_matches":true,"use_excludes":[],"orig_excludes":[],"merge_excludes":true,"use_connects":[],"merge_connects":true,"use_blockers":[],"orig_run_at":"document-end","orig_noframes":null,"orig_connects":["cx.icodef.com"]}},"storage":{"ts":1620274346681,"data":{}},"enabled":true,"position":1,"uuid":"603a1f6e-b864-49f7-8ba6-5088a49e08a6","source":"Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDotoXmmJ/nvZHor77liqnmiYso5pS5KSjmn6Xpopjlj6/nlKgpCi8vIEB2ZXJzaW9uICAgICAgNC43LjUKLy8gQG5hbWVzcGFjZSAgICBjb2Rlcl90cQovLyBAZGVzY3JpcHRpb24gIOiHquWKqOaMguacuueci+WwlOmbhU1PT0PvvIzmlK/mjIHop4bpopHjgIHpn7PpopHjgIHmlofmoaPjgIHlm77kuaboh6rliqjlrozmiJDvvIznq6DoioLmtYvpqozoh6rliqjnrZTpopjmj5DkuqTvvIzmlK/mjIHoh6rliqjliIfmjaLku7vliqHngrnjgIHmjILmnLrpmIXor7vml7bplb/jgIHoh6rliqjnmbvlvZXnrYnvvIzop6PpmaTlkITnsbvlip/og73pmZDliLbvvIzlvIDmlL7oh6rlrprkuYnlj4LmlbAKLy8gQGF1dGhvciAgICAgICBjb2Rlcl90cQovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmNoYW94aW5nLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouZWR1LmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vKi5uYmRsaWIuY24vKgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmhuc3l1Lm5ldC8qCi8vIEBjb25uZWN0ICAgICAgY3guaWNvZGVmLmNvbQovLyBAcnVuLWF0ICAgICAgIGRvY3VtZW50LWVuZAovLyBAZ3JhbnQgICAgICAgIHVuc2FmZVdpbmRvdwovLyBAZ3JhbnQgICAgICAgIEdNX3htbGh0dHBSZXF1ZXN0Ci8vIEBncmFudCAgICAgICAgR01fc2V0VmFsdWUKLy8gQGdyYW50ICAgICAgICBHTV9nZXRWYWx1ZQovLyBAZ3JhbnQgICAgICAgIEdNX3NldENsaXBib2FyZAovLyBAbGljZW5zZSAgICAgIE1JVAovLyBAc3VwcG9ydFVSTCAgIGh0dHA6Ly9iYnMudGFtcGVybW9ua2V5Lm5ldC5jbi9mb3J1bS5waHA/bW9kPXZpZXd0aHJlYWQmdGlkPTE1Ci8vIEBob21lcGFnZSAgICAgaHR0cDovL2Jicy50YW1wZXJtb25rZXkubmV0LmNuL2ZvcnVtLnBocD9tb2Q9dmlld3RocmVhZCZ0aWQ9MTUKLy8gPT0vVXNlclNjcmlwdD09CgovLyDorr7nva7kv67mlLnlkI7vvIzpnIDopoHliLfmlrDmiJbph43mlrDmiZPlvIDnvZHor77pobXpnaLmiY3kvJrnlJ/mlYgKdmFyIHNldHRpbmcgPSB7CiAgICAgICAgLy8gNUUzID09IDUwMDDvvIznp5HlraborrDmlbDms5XvvIzooajnpLrmr6vnp5LmlbAKICAgICAgICB0aW1lOiA1RTMgLy8g6buY6K6k5ZON5bqU6YCf5bqm5Li6Neenku+8jOS4jeW7uuiuruWwj+S6jjXnp5IKICAgICAgICAsIHRva2VuOiAnU29zdFhwVUZDamZkTnJFSicgLy8gdG9rZW7lj6/ku6Xlop7liqDlubblj5HmrKHmlbDvvIznlKjmnaXmiZPnoIHvvIzph4fpm4bpopjlupPlpZblirEu6L+Z5LiN5piv5b+F6aG755Sz6K+355qELOayoeaciXRva2Vu5Lmf5Y+v5Lul5q2j5bi45L2/55SoLnRva2Vu5piv5oiR5Lus6K+G5Yir55So5oi355qE5LiA5Liq5Luk54mMLOiEmuacrOS8muaUtumbhuS9oOeahOato+ehruetlOahiCzmiJHku6zkvJrnlKh0b2tlbuadpeWvuei/meS6m+aVsOaNrui/m+ihjOe7n+iuoeWSjOaLpuaIquaBtuaEj+eahOaPkOS6pC7lj6blpJbkvJrnlKh0b2tlbui/m+ihjOmZkOa1geaTjeS9nChpcOS4jeWPr+mdoCks6Ziy5q2i5oG25oSP55qE6L+b6KGMY2PmlLvlh7vlkozor6/mi6bmiKouCiAgICAgICAgLCByZXZpZXc6IDEgLy8g5aSN5Lmg5qih5byP77yM5a6M5pW05oyC5py66KeG6aKRKOmfs+mikSnml7bplb/vvIzmlK/mjIHmjILmnLrku7vliqHngrnlt7LlrozmiJDnmoTop4bpopHlkozpn7PpopHvvIzpu5jorqTlhbPpl60KICAgICAgICAsIHF1ZXVlOiAxIC8vIOmYn+WIl+aooeW8j++8jOW8gOWQr+WQjuS7u+WKoeeCuemAkOS4gOWujOaIkO+8jOWFs+mXreWImeWNlemhtemdouaJgOacieS7u+WKoeeCueWQjOaXtui/m+ihjO+8jOm7mOiupOW8gOWQrwoKICAgICAgICAvLyAx5Luj6KGo5byA5ZCv77yMMOS7o+ihqOWFs+mXrQogICAgICAgICwgdmlkZW86IDEgLy8g6KeG6aKR5pSv5oyB5ZCO5Y+w44CB5YiH5o2i56qX5Y+j5LiN5pqC5YGc77yM5pSv5oyB5aSa6KeG6aKR77yM6buY6K6k5byA5ZCvCiAgICAgICAgLCB3b3JrOiAxIC8vIOiHquWKqOetlOmimOWKn+iDvSjnq6DoioLmtYvpqowp77yM5L2c5Lia6ZyA6KaB5omL5Yqo5byA5ZCv5p+l6K+i77yM6auY5YeG56Gu546H77yM6buY6K6k5byA5ZCvCiAgICAgICAgLCBhdWRpbzogMSAvLyDpn7PpopHoh6rliqjmkq3mlL7vvIzkuI7op4bpopHlip/og73lhbHkuqt2b2zlkoxyYXRl5Y+C5pWw77yM6buY6K6k5byA5ZCvCiAgICAgICAgLCBib29rOiAxIC8vIOWbvuS5pumYheivu+S7u+WKoeeCue+8jOmdnuivvueoi+mYheivu+S7u+WKoeeCue+8jOm7mOiupOW8gOWQrwogICAgICAgICwgZG9jczogMSAvLyDmlofmoaPpmIXor7vku7vliqHngrnvvIxQUFTnsbvku7vliqHngrnoh6rliqjlrozmiJDpmIXor7vku7vliqHvvIzpu5jorqTlvIDlkK8KICAgICAgICAvLyDmnKzljLrln5/lj4LmlbDvvIzkuIrmlrnkuLrku7vliqHngrnlip/og73vvIzkuIvmlrnkuLrni6znq4vlip/og70KICAgICAgICAsIGp1bXA6IDEgLy8g6Ieq5Yqo5YiH5o2i5Lu75Yqh54K544CB56ug6IqC44CB6K++56iLKOmcgOimgemFjee9rmNvdXJzZeWPguaVsCnvvIzpu5jorqTlvIDlkK8KICAgICAgICAsIHJlYWQ6ICc2NScgLy8g5oyC5py66K++56iL6ZiF6K+75pe26Ze077yM5Y2V5L2N5piv5YiG6ZKf77yMJzY1J+S7o+ihqOaMguacujY15YiG6ZKf77yM6K+35omL5Yqo5omT5byA6ZiF6K+76aG16Z2i77yM6buY6K6kJzY1J+WIhumSnwogICAgICAgICwgZmFjZTogMSAvLyDop6PpmaTpnaLpg6jor4bliKso5LiN5pSv5oyB5LqM57u056CB57G76Z2i6YOo6YeH6ZuGKe+8jOatpOWKn+iDveS7heS4uuS4tOaXtuino+mZpO+8jOm7mOiupOW8gOWQrwogICAgICAgICwgdG90YWw6IDEgLy8g5pi+56S66K++56iL6L+b5bqm55qE57uf6K6h5pWw5o2u77yM5Zyo5a2m5Lmg6L+b5bqm6aG16Z2i55qE5LiK5pa55bGV56S677yM6buY6K6k5byA5ZCvCgogICAgICAgIC8vIOS7heW8gOWQr3ZpZGVvKGF1ZGlvKeaXtu+8jOS/ruaUueatpOWkhOaJjeS8mueUn+aViAogICAgICAgICwgbGluZTogJ+WFrOe9kTEnIC8vIOinhumikeaSreaUvueahOm7mOiupOi1hOa6kOe6v+i3r++8jOatpOWKn+iDvemAgueUqOS6juezu+e7n+m7mOiupOe6v+i3r+aXoOi1hOa6kO+8jOm7mOiupCflhaznvZExJwogICAgICAgICwgaHR0cDogJ+agh+a4hScgLy8g6KeG6aKR5pKt5pS+55qE6buY6K6k5riF5pmw5bqm77yM5peg5pWI5Y+C5pWw5YiZ5L2/55So57O757uf6buY6K6k5riF5pmw5bqm77yM6buY6K6kJ+agh+a4hScKICAgICAgICAvLyDmnKzljLrln5/lj4LmlbDvvIzkuIrmlrnkuLp2aWRlb+WKn+iDveeLrOS6q++8jOS4i+aWueS4umF1ZGlv5Yqf6IO95YWx5LqrCiAgICAgICAgLCB2b2w6ICcwJyAvLyDpu5jorqTpn7Pph4/nmoTnmb7liIbmlbDvvIzorr7lrprojIPlm7TvvJpbMCwxMDBd77yMJzAn5Li66Z2Z6Z+z77yM6buY6K6kJzAnCiAgICAgICAgLCByYXRlOiAnMScgLy8g6KeG6aKR5pKt5pS+6buY6K6k5YCN546H77yM5Y+C5pWw6IyD5Zu0MOKIqlswLjA2MjUsMTZd77yMJzAn5Li656eS6L+H77yM6buY6K6kJzEn5YCNCgogICAgICAgIC8vIOS7heW8gOWQr3dvcmvml7bvvIzkv67mlLnmraTlpITmiY3kvJrnlJ/mlYgKICAgICAgICAvLyBhdXRvOiAxIOW3suaUvue9rumdouadvyzor7flnKjpnaLmnb/phY3nva4s6buY6K6k5Li66Ieq5Yqo5o+Q5LqkIC8vIOetlOmimOWujOaIkOWQjuiHquWKqOaPkOS6pO+8jOm7mOiupOW8gOWQrwogICAgICAgICwgbm9uZTogMCAvLyDml6DljLnphY3nrZTmoYjml7bmiafooYzpu5jorqTmk43kvZzvvIzlhbPpl63lkI7oi6Xpopjnm67ml6DljLnphY3nrZTmoYjliJnkvJrmmoLml7bkv53lrZjlt7LkvZznrZTnmoTpopjnm67vvIzpu5jorqTlvIDlkK8KICAgICAgICAsIHNjYWxlOiAwIC8vIOWvjOaWh+acrOe8lui+keWZqOmrmOW6puiHquWKqOaLieS8uO+8jOeUqOS6juaWh+acrOexu+mimOebru+8jOetlOmimOahhuagueaNruWGheWuueiHquWKqOiwg+aVtOWkp+Wwj++8jOm7mOiupOWFs+mXrQoKICAgICAgICAvLyDku4XlvIDlkK9qdW1w5pe277yM5L+u5pS55q2k5aSE5omN5Lya55Sf5pWICiAgICAgICAgLCBjb3Vyc2U6IDAgLy8g5b2T5YmN6K++56iL5a6M5oiQ5ZCO6Ieq5Yqo5YiH5o2i6K++56iL77yM5LuF5pSv5oyB5oyJ54Wn5qC555uu5b2V6K++56iL6aG65bqP5YiH5o2i77yM6buY6K6k5byA5ZCvCiAgICAgICAgLCBsb2NrOiAxIC8vIOi3s+i/h+acquW8gOaUvijlm77moIfmmK/plIEp55qE56ug6IqC77yM5Y2z6Zev5YWz5qih5byP5oiW5a6a5pe25Y+R5pS+55qE5Lu75Yqh54K577yM6buY6K6k5byA5ZCvCgogICAgICAgIC8vIOiHquWKqOeZu+W9leWKn+iDvemFjee9ruWMugogICAgICAgICwgc2Nob29sOiAn6LSm5Y+35Li65omL5py65Y+35Y+v5Lul5LiN5L+u5pS55q2k5Y+C5pWwJyAvLyDlrabmoKEv5Y2V5L2NL+acuuaehOegge+8jOimgeaxguWujOaVtOacieaViOWPr+afpeivou+8jOS+i+WmgifmuIXljY7lpKflraYnCiAgICAgICAgLCB1c2VybmFtZTogJycgLy8g5a2m5Y+3L+W3peWPty/lgJ/kuabor4Hlj7co6YKu566xL+aJi+acuuWPty/otKblj7cp77yM5L6L5aaCJzIwMTgwMTAxMDEn77yM6buY6K6kJycKICAgICAgICAsIHBhc3N3b3JkOiAnJyAvLyDlr4bnoIHvvIzkvovlpoInMTIzNDU2J++8jOm7mOiupCcnCgogICAgfSwKICAgIF9zZWxmID0gdW5zYWZlV2luZG93LAogICAgdXJsID0gbG9jYXRpb24ucGF0aG5hbWUsCiAgICB0b3AgPSBfc2VsZjsKCnZhciB0bXBTdWJtaXQgPSAxOy8v5pys5qyhCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZXR0aW5nLCAiYXV0byIsIHsKICAgIGdldDogZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh0bXBTdWJtaXQgPj0gMikgewogICAgICAgICAgICByZXR1cm4gdG1wU3VibWl0ID09PSAzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gR01fZ2V0VmFsdWUoImF1dG9zdWJtaXQiKTsKICAgIH0sIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgdG1wU3VibWl0ID0gdmFsdWUgKyAyOwogICAgfQp9KTsKCnNldHRpbmcubm90aWNlID0gJ+WFrOWRiuagjyc7CgppZiAodXJsICE9ICcvc3R1ZHlBcHAvc3R1ZHlpbmcnICYmIHRvcCAhPSBfc2VsZi50b3ApIGRvY3VtZW50LmRvbWFpbiA9IGxvY2F0aW9uLmhvc3QucmVwbGFjZSgvLis/XC4vLCAnJyk7Cgp0cnkgewogICAgd2hpbGUgKHRvcCAhPSBfc2VsZi50b3ApIHsKICAgICAgICB0b3AgPSB0b3AucGFyZW50LmRvY3VtZW50ID8gdG9wLnBhcmVudCA6IF9zZWxmLnRvcDsKICAgICAgICBpZiAodG9wLmxvY2F0aW9uLnBhdGhuYW1lID09ICcvbXljb3Vyc2Uvc3R1ZGVudHN0dWR5JykgYnJlYWs7CiAgICB9Cn0gY2F0Y2ggKGVycikgewogICAgLy8gY29uc29sZS5sb2coZXJyKTsKICAgIHRvcCA9IF9zZWxmOwp9Cgp2YXIgJCA9IF9zZWxmLmpRdWVyeSB8fCB0b3AualF1ZXJ5LAogICAgcGFyZW50ID0gX3NlbGYgPT0gdG9wID8gc2VsZiA6IF9zZWxmLnBhcmVudCwKICAgIEV4dCA9IF9zZWxmLkV4dCB8fCBwYXJlbnQuRXh0IHx8IHt9LAogICAgVUUgPSBfc2VsZi5VRSwKICAgIHZqcyA9IF9zZWxmLnZpZGVvanM7CgpTdHJpbmcucHJvdG90eXBlLnRvQ0RCID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvXHMvZywgJycpLnJlcGxhY2UoL1tcdWZmMDEtXHVmZjVlXS9nLCBmdW5jdGlvbiAoc3RyKSB7CiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoc3RyLmNoYXJDb2RlQXQoMCkgLSA2NTI0OCk7CiAgICB9KS5yZXBsYWNlKC9b4oCc4oCdXS9nLCAnIicpLnJlcGxhY2UoL1vigJjigJldL2csICInIikucmVwbGFjZSgv44CCL2csICcuJyk7Cn07CgpzZXR0aW5nLm5vcm1hbCA9ICcnOyAvLyAnOnZpc2libGUnCi8vIHNldHRpbmcudGltZSArPSBNYXRoLmNlaWwoc2V0dGluZy50aW1lICogTWF0aC5yYW5kb20oKSkgLSBzZXR0aW5nLnRpbWUgLyAyOwpzZXR0aW5nLmpvYiA9IFsnOm5vdCgqKSddOwoKc2V0dGluZy52aWRlbyAmJiBzZXR0aW5nLmpvYi5wdXNoKCdpZnJhbWVbc3JjKj0iL3ZpZGVvL2luZGV4Lmh0bWwiXScpOwpzZXR0aW5nLndvcmsgJiYgc2V0dGluZy5qb2IucHVzaCgnaWZyYW1lW3NyYyo9Ii93b3JrL2luZGV4Lmh0bWwiXScpOwpzZXR0aW5nLmF1ZGlvICYmIHNldHRpbmcuam9iLnB1c2goJ2lmcmFtZVtzcmMqPSIvYXVkaW8vaW5kZXguaHRtbCJdJyk7CnNldHRpbmcuYm9vayAmJiBzZXR0aW5nLmpvYi5wdXNoKCdpZnJhbWVbc3JjKj0iL2lubmVyYm9vay9pbmRleC5odG1sIl0nKTsKc2V0dGluZy5kb2NzICYmIHNldHRpbmcuam9iLnB1c2goJ2lmcmFtZVtzcmMqPSIvcHB0L2luZGV4Lmh0bWwiXScsICdpZnJhbWVbc3JjKj0iL3BkZi9pbmRleC5odG1sIl0nKTsKCnNldHRpbmcudGlwID0gIXNldHRpbmcucXVldWUgfHwgdG9wICE9IF9zZWxmICYmIGpvYlNvcnQoJCB8fCBFeHQucXVlcnkpOwoKaWYgKHVybCA9PSAnL215Y291cnNlL3N0dWRlbnRzdHVkeScpIHsKICAgIF9zZWxmLmNoZWNrTW9iaWxlQnJvd2VyTGVhcm4gPSAkLm5vb3A7CiAgICB2YXIgY2xhc3NJZCA9IGxvY2F0aW9uLnNlYXJjaC5tYXRjaCgvY2xhW3pzXXsyfWlkPShcZCspL2kpWzFdIHx8IDAsCiAgICAgICAgY291cnNlSWQgPSBfc2VsZi5jb3Vyc2VJZCB8fCBsb2NhdGlvbi5zZWFyY2gubWF0Y2goL2NvdXJzZUlkPShcZCspL2kpWzFdIHx8IDA7CiAgICBzZXR0aW5nLmxvY2sgfHwgJCgnI2NvdXJzZXRyZWUnKS5vbignY2xpY2snLCAnW29uY2xpY2sqPXZvaWRdLCBbaHJlZio9dm9pZF0nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgX3NlbGYuZ2V0VGVhY2hlckFqYXgoY291cnNlSWQsIGNsYXNzSWQsICQodGhpcykucGFyZW50KCkuYXR0cignaWQnKS5zbGljZSgzKSk7CiAgICB9KTsKfSBlbHNlIGlmICh1cmwgPT0gJy9hbmFuYXMvbW9kdWxlcy92aWRlby9pbmRleC5odG1sJyAmJiBzZXR0aW5nLnZpZGVvKSB7CiAgICBpZiAoc2V0dGluZy5yZXZpZXcpIF9zZWxmLmdyZWVubGlndGggPSBFeHQuZW1wdHlGbjsKICAgIGNoZWNrUGxheWVyKF9zZWxmLnN1cHBvcnRINVZpZGVvKCkpOwp9IGVsc2UgaWYgKHVybCA9PSAnL3dvcmsvZG9Ib21lV29ya05ldycgfHwgdXJsID09ICcvYXBpL3dvcmsnIHx8IHVybCA9PSAnL3dvcmsvYWRkU3R1ZGVudFdvcmtOZXdXZWInfHwgdXJsID09ICcvbW9vYzIvd29yay9kb3dvcmsnKSB7CiAgICBjb25zb2xlLmxvZygi6L+b5YWl562U6aKY55WM6Z2i77yBIik7CiAgICBpZiAoIVVFKSB7CiAgICAgICAgdmFyIGxlbiA9ICgkIHx8IEV4dC5xdWVyeSB8fCBBcnJheSkoJ2ZvbnQ6Y29udGFpbnMo5pyq55m75b2VKScsIGRvY3VtZW50KS5sZW5ndGg7CiAgICAgICAgc2V0VGltZW91dChsZW4gPT0gMSA/IHRvcC5sb2NhdGlvbi5yZWxvYWQgOiBwYXJlbnQuZ3JlZW5saWd0aCwgc2V0dGluZy50aW1lKTsKICAgIH0gZWxzZSBpZiAoc2V0dGluZy53b3JrKSB7CiAgICAgICAgc2V0VGltZW91dChyZWxpZXZlTGltaXQsIDApOwogICAgICAgIGJlZm9yZUZpbmQoKTsKICAgIH0KfSBlbHNlIGlmICh1cmwgPT0gJy9hbmFuYXMvbW9kdWxlcy9hdWRpby9pbmRleC5odG1sJyAmJiBzZXR0aW5nLmF1ZGlvKSB7CiAgICBpZiAoc2V0dGluZy5yZXZpZXcpIF9zZWxmLmdyZWVubGlndGggPSBFeHQuZW1wdHlGbjsKICAgIF9zZWxmLnZpZGVvanMgPSBob29rQXVkaW87CiAgICBob29rQXVkaW8ueGhyID0gdmpzLnhocjsKfSBlbHNlIGlmICh1cmwgPT0gJy9hbmFuYXMvbW9kdWxlcy9pbm5lcmJvb2svaW5kZXguaHRtbCcgJiYgc2V0dGluZy5ib29rICYmIHNldHRpbmcudGlwKSB7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBfc2VsZi5zZXR0aW5nID8gX3NlbGYudG9wLm9uY2hhbmdlcGFnZShfc2VsZi5nZXRGcmFtZUF0dHIoJ2VuZCcpKSA6IF9zZWxmLmdyZWVubGlndGgoKTsKICAgIH0sIHNldHRpbmcudGltZSk7Cn0gZWxzZSBpZiAodXJsLm1hdGNoKC9eXC9hbmFuYXNcL21vZHVsZXNcLyhwcHR8cGRmKVwvaW5kZXhcLmh0bWwkLykgJiYgc2V0dGluZy5kb2NzICYmIHNldHRpbmcudGlwKSB7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBfc2VsZi5zZXR0aW5nID8gX3NlbGYuZmluaXNoSm9iKCkgOiBfc2VsZi5ncmVlbmxpZ3RoKCk7CiAgICB9LCBzZXR0aW5nLnRpbWUpOwogICAgZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAxKTsKfSBlbHNlIGlmICh1cmwgPT0gJy9rbm93bGVkZ2UvY2FyZHMnKSB7CiAgICAkICYmIGNoZWNrVG9OZXh0KCk7Cn0gZWxzZSBpZiAodXJsLm1hdGNoKC9eXC8oY291cnNlfHp0KVwvXGQrXC5odG1sJC8pKSB7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICArc2V0dGluZy5yZWFkICYmIF9zZWxmLnNlbmRMb2dzICYmICQoJy5jb3Vyc2Vfc2VjdGlvbjplcSgwKSAuY2hhcHRlclRleHQnKS5jbGljaygpOwogICAgfSwgc2V0dGluZy50aW1lKTsKfSBlbHNlIGlmICh1cmwgPT0gJy96dG5vZGVkZXRhaWxjb250cm9sbGVyL3Zpc2l0bm9kZWRldGFpbCcpIHsKICAgIHNldHRpbmcucmVhZCAqPSA2MCAvICQoJy5jb3Vyc2Vfc2VjdGlvbicpLmxlbmd0aDsKICAgIHNldHRpbmcucmVhZCAmJiBfc2VsZi5zZW5kTG9ncyAmJiBhdXRvUmVhZCgpOwp9IGVsc2UgaWYgKHVybCA9PSAnL215Y291cnNlL3N0dWRlbnRjb3Vyc2UnKSB7CiAgICB2YXIgZ3YgPSBsb2NhdGlvbi5zZWFyY2gubWF0Y2goL2Q9XGQrJi9nKTsKICAgIHNldHRpbmcudG90YWwgJiYgJCgnPGE+JywgewogICAgICAgIGhyZWY6ICcvbW9vY0FuYWx5c2lzL2NoYXB0ZXJTdGF0aXN0aWNCeVVzZXI/Y2xhc3NJJyArIGd2WzFdICsgJ2NvdXJzZUknICsgZ3ZbMF0gKyAndXNlcklkPScgKyBfc2VsZi5nZXRDb29raWUoJ191aWQnKSArICcmdXQ9cycsCiAgICAgICAgdGFyZ2V0OiAnX2JsYW5rJywKICAgICAgICB0aXRsZTogJ+eCueWHu+afpeeci+eroOiKgue7n+iuoScsCiAgICAgICAgc3R5bGU6ICdtYXJnaW46IDAgMjVweDsnLAogICAgICAgIGh0bWw6ICfmnKzor77nqIvlhbEnICsgJCgnLmljb24nKS5sZW5ndGggKyAn6IqC77yM5Ymp5L2ZJyArICQoJ2VtOm5vdCgub3BlbmxvY2spJykubGVuZ3RoICsgJ+iKguacquWujOaIkCcKICAgIH0pLmFwcGVuZFRvKCcuenRfbG9nbycpLnBhcmVudCgpLndpZHRoKCdhdXRvJyk7Cn0gZWxzZSBpZiAodXJsLm1hdGNoKC9eXC92aXNpdFwvKGNvdXJzZXN8aW50ZXJhY3Rpb24pJC8pKSB7CiAgICBzZXR0aW5nLmZhY2UgJiYgJCgnLnptb2RlbCcpLm9uKCdjbGljaycsICdbb25jbGlja149b3BlbkZhY2VUaXBdJywgRGlzcGxheVVSTCk7Cn0gZWxzZSBpZiAobG9jYXRpb24uaG9zdC5tYXRjaCgvXnBhc3Nwb3J0Mi8pKSB7CiAgICBzZXR0aW5nLnVzZXJuYW1lICYmIGdldFNjaG9vbElkKCk7Cn0gZWxzZSBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT0gJ2kubW9vYy5jaGFveGluZy5jb20nKSB7CiAgICBfc2VsZi5sYXl1aS51c2UoJ2xheWVyJywgZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMubGF5ZXIub3Blbih7IGNvbnRlbnQ6ICfmi5bliqjov5vluqbmnaHjgIHlgI3pgJ/mkq3mlL7jgIHnp5Lov4fkvJrlr7zoh7TkuI3oia/orrDlvZXvvIHpopjlupPlnKjmhaLmhaLooaXlhYXvvIzmkJzkuI3liLDnmoTpopjnm67ns7vnu5/kvJrlnKjmrKHml6Xov5vooYzoh6rliqjooaXlhYUnLCB0aXRsZTogJ+i2heaYn+e9keivvuWKqeaJi+aPkOekuicsIGJ0bjogJ+aIkeW3suefpeaCiScsIG9mZnNldDogJ3QnLCBjbG9zZUJ0bjogMCB9KTsKICAgIH0pOwp9IGVsc2UgaWYgKHVybCA9PSAnL3dpZGdldC9wY3ZvdGUvZ29TdHVkZW50Vm90ZVBhZ2UnKSB7CiAgICAkKCc6Y2hlY2tlZCcpLmNsaWNrKCk7CiAgICAkKCcuU3R1ZGVudFRpbXUnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCkgewogICAgICAgIHZhciBhbnMgPSBfc2VsZi5xdWVzdGlvbmxpc3RbaW5kZXhdLmFuc3dlcjsKICAgICAgICAkKCc6cmFkaW8sIDpjaGVja2JveCcsIHRoaXMpLmVhY2goZnVuY3Rpb24gKG51bSkgewogICAgICAgICAgICBhbnNbbnVtXS5pc2Fuc3dlciAmJiB0aGlzLmNsaWNrKCk7CiAgICAgICAgfSk7CiAgICAgICAgJCgnOnRleHQnLCB0aGlzKS52YWwoZnVuY3Rpb24gKG51bSkgewogICAgICAgICAgICByZXR1cm4gJChhbnNbbnVtXS5jb250ZW50KS50ZXh0KCkudHJpbSgpOwogICAgICAgIH0pOwogICAgfSk7Cn0gZWxzZSBpZiAodXJsID09ICcvd29yay9zZWxlY3RXb3JrUXVlc3Rpb25ZaVBpWXVlJykgewogICAgc3VibWl0QW5zd2VyKGdldElmcmFtZSgpLnBhcmVudCgpLCAkLmV4dGVuZCh0cnVlLCBbXSwgcGFyZW50Ll9kYXRhKSk7Cn0KCmZ1bmN0aW9uIGdldElmcmFtZSh0aXAsIHdpbiwgam9iKSB7CiAgICBpZiAoISQpIHJldHVybiBFeHQuZ2V0KGZyYW1lRWxlbWVudCB8fCBbXSkucGFyZW50KCkuY2hpbGQoJy5hbnMtam9iLWljb24nKSB8fCBFeHQuZ2V0KFtdKTsKICAgIGRvIHsKICAgICAgICB3aW4gPSB3aW4gPyB3aW4ucGFyZW50IDogX3NlbGY7CiAgICAgICAgam9iID0gJCh3aW4uZnJhbWVFbGVtZW50KS5wcmV2QWxsKCcuYW5zLWpvYi1pY29uJyk7CiAgICB9IHdoaWxlICgham9iLmxlbmd0aCAmJiB3aW4ucGFyZW50LmZyYW1lRWxlbWVudCk7CiAgICByZXR1cm4gdGlwID8gd2luIDogam9iOwp9CgpmdW5jdGlvbiBqb2JTb3J0KCQpIHsKICAgIHZhciBmbiA9ICQuZm4gPyBbZ2V0SWZyYW1lKDEpLCAnbGVuZ3RoJ10gOiBbc2VsZiwgJ2RvbSddLAogICAgICAgIHNlbCA9IHNldHRpbmcuam9iLmpvaW4oJywgOm5vdCguYW5zLWpvYi1maW5pc2hlZCkgPiAuYW5zLWpvYi1pY29uJyArIHNldHRpbmcubm9ybWFsICsgJyB+ICcpOwogICAgaWYgKCQoc2VsLCBmblswXS5wYXJlbnQuZG9jdW1lbnQpWzBdID09IGZuWzBdLmZyYW1lRWxlbWVudCkgcmV0dXJuIHRydWU7CiAgICBpZiAoIWdldElmcmFtZSgpW2ZuWzFdXSB8fCBnZXRJZnJhbWUoKS5wYXJlbnQoKS5pcygnLmFucy1qb2ItZmluaXNoZWQnKSkgcmV0dXJuIG51bGw7CiAgICBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgJChzZWwsIGZuWzBdLnBhcmVudC5kb2N1bWVudClbMF0gPT0gZm5bMF0uZnJhbWVFbGVtZW50ICYmIGZuWzBdLmxvY2F0aW9uLnJlbG9hZCgpOwogICAgfSwgc2V0dGluZy50aW1lKTsKfQoKZnVuY3Rpb24gY2hlY2tQbGF5ZXIodGlwKSB7CiAgICBfc2VsZi52aWRlb2pzID0gaG9va1ZpZGVvOwogICAgaG9va1ZpZGVvLnhociA9IHZqcy54aHI7CiAgICBFeHQuaXNTb2dvdSA9IEV4dC5pc0lvcyA9IEV4dC5pc0FuZHJvaWQgPSBmYWxzZTsKICAgIHZhciBkYXRhID0gRXh0LmRlY29kZShfc2VsZi5jb25maWcoJ2RhdGEnKSkgfHwge307CiAgICBkZWxldGUgZGF0YS5kYW5tYWt1OwogICAgZGF0YS5kb3VibGVzcGVlZCA9IDE7CiAgICBmcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhJywgRXh0LmVuY29kZShkYXRhKSk7CiAgICBpZiAodGlwKSByZXR1cm47CiAgICBfc2VsZi5zdXBwb3J0SDVWaWRlbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07CiAgICBhbGVydCgn5q2k5rWP6KeI5Zmo5LiN5pSv5oyBaHRtbDXmkq3mlL7lmajvvIzor7fmm7TmjaLmtY/op4jlmagnKTsKfQoKZnVuY3Rpb24gaG9va1ZpZGVvKCkgewogICAgX3NlbGYuYWxlcnQgPSBjb25zb2xlLmxvZzsKICAgIHZhciBjb25maWcgPSBhcmd1bWVudHNbMV0sCiAgICAgICAgbGluZSA9IEV4dC5BcnJheS5maWx0ZXIoRXh0LkFycmF5Lm1hcChjb25maWcucGxheWxpbmVzLCBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7CiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sYWJlbCA9PSBzZXR0aW5nLmxpbmUgJiYgaW5kZXg7CiAgICAgICAgfSksIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICByZXR1cm4gRXh0LmlzTnVtYmVyKHZhbHVlKTsKICAgICAgICB9KVswXSB8fCAwLAogICAgICAgIGh0dHAgPSBFeHQuQXJyYXkuZmlsdGVyKGNvbmZpZy5zb3VyY2VzLCBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxhYmVsID09IHNldHRpbmcuaHR0cDsKICAgICAgICB9KVswXTsKICAgIGNvbmZpZy5wbGF5bGluZXMudW5zaGlmdChjb25maWcucGxheWxpbmVzW2xpbmVdKTsKICAgIGNvbmZpZy5wbGF5bGluZXMuc3BsaWNlKGxpbmUgKyAxLCAxKTsKICAgIGNvbmZpZy5wbHVnaW5zLnZpZGVvSnNSZXNvbHV0aW9uU3dpdGNoZXIuZGVmYXVsdCA9IGh0dHAgPyBodHRwLnJlcyA6IDM2MDsKICAgIGNvbmZpZy5wbHVnaW5zLnN0dWR5Q29udHJvbC5lbmFibGVTd2l0Y2hXaW5kb3cgPSAxOwogICAgY29uZmlnLnBsdWdpbnMudGltZWxpbmVPYmplY3RzLnVybCA9ICcvcmljaHZpZGVvL2luaXRkYXRhd2l0aHZpZXdlcj8nOwogICAgY29uZmlnLnBsdWdpbnMuc2Vla0JhckNvbnRyb2wuZW5hYmxlRmFzdEZvcndhcmQgPSAxOwogICAgaWYgKCFzZXR0aW5nLnF1ZXVlKSBkZWxldGUgY29uZmlnLnBsdWdpbnMuc3R1ZHlDb250cm9sOwogICAgLy8gY29uZmlnLnByZWxvYWQgPSBzZXR0aW5nLnRpcCA/ICdhdXRvJyA6ICdub25lJzsKICAgIHZhciBwbGF5ZXIgPSB2anMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwKICAgICAgICBhID0gJzxhIGhyZWY9Imh0dHBzOi8vZDAuYW5hbmFzLmNoYW94aW5nLmNvbS9kb3dubG9hZC8nICsgX3NlbGYuY29uZmlnKCdvYmplY3RpZCcpICsgJyIgdGFyZ2V0PSJfYmxhbmsiPicsCiAgICAgICAgaW1nID0gJzxpbWcgc3JjPSJodHRwczovL2QwLmFuYW5hcy5jaGFveGluZy5jb20vZG93bmxvYWQvZTM2M2IyNTZjMGU5YmM1YmQ4MjY2YmY5OWRkNmQ2YmIiIHN0eWxlPSJtYXJnaW46IDZweCAwIDAgNnB4OyI+JzsKICAgIHBsYXllci52b2x1bWUoTWF0aC5yb3VuZChzZXR0aW5nLnZvbCkgLyAxMDAgfHwgMCk7CiAgICBFeHQuZ2V0KHBsYXllci5jb250cm9sQmFyLmFkZENoaWxkKCdCdXR0b24nKS5lbF8pLnNldEhUTUwoYSArIGltZyArICc8L2E+JykuZG9tLnRpdGxlID0gJ+S4i+i9veinhumikSc7CiAgICBwbGF5ZXIub24oJ2xvYWRzdGFydCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICBzZXR0aW5nLnRpcCAmJiB0aGlzLnBsYXkoKS5jYXRjaChFeHQuZW1wdHlGbik7CiAgICAgICAgdGhpcy5wbGF5YmFja1JhdGUoc2V0dGluZy5yYXRlID4gMTYgfHwgc2V0dGluZy5yYXRlIDwgMC4wNjI1ID8gMSA6IHNldHRpbmcucmF0ZSk7CiAgICB9KTsKICAgIHBsYXllci5vbmUoWydsb2FkZWRtZXRhZGF0YScsICdmaXJzdHBsYXknXSwgZnVuY3Rpb24gKCkgewogICAgICAgIHNldHRpbmcudHdvID0gc2V0dGluZy5yYXRlID09PSAnMCcgJiYgc2V0dGluZy50d28gPCAxOwogICAgICAgIHNldHRpbmcudHdvICYmIGNvbmZpZy5wbHVnaW5zLnNlZWtCYXJDb250cm9sLnNlbmRMb2codGhpcy5jaGlsZHJlbl9bMF0sICdlbmRlZCcsIE1hdGguZmxvb3IodGhpcy5jYWNoZV8uZHVyYXRpb24pKTsKICAgIH0pOwogICAgcGxheWVyLm9uKCdlbmRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICBFeHQuZmx5KGZyYW1lRWxlbWVudCkucGFyZW50KCkuYWRkQ2xzKCdhbnMtam9iLWZpbmlzaGVkJyk7CiAgICB9KTsKICAgIHJldHVybiBwbGF5ZXI7Cn0KCmZ1bmN0aW9uIGhvb2tBdWRpbygpIHsKICAgIF9zZWxmLmFsZXJ0ID0gY29uc29sZS5sb2c7CiAgICB2YXIgY29uZmlnID0gYXJndW1lbnRzWzFdOwogICAgY29uZmlnLnBsdWdpbnMuc3R1ZHlDb250cm9sLmVuYWJsZVN3aXRjaFdpbmRvdyA9IDE7CiAgICBjb25maWcucGx1Z2lucy5zZWVrQmFyQ29udHJvbC5lbmFibGVGYXN0Rm9yd2FyZCA9IDE7CiAgICBpZiAoIXNldHRpbmcucXVldWUpIGRlbGV0ZSBjb25maWcucGx1Z2lucy5zdHVkeUNvbnRyb2w7CiAgICB2YXIgcGxheWVyID0gdmpzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksCiAgICAgICAgYSA9ICc8YSBocmVmPSJodHRwczovL2QwLmFuYW5hcy5jaGFveGluZy5jb20vZG93bmxvYWQvJyArIF9zZWxmLmNvbmZpZygnb2JqZWN0aWQnKSArICciIHRhcmdldD0iX2JsYW5rIj4nLAogICAgICAgIGltZyA9ICc8aW1nIHNyYz0iaHR0cHM6Ly9kMC5hbmFuYXMuY2hhb3hpbmcuY29tL2Rvd25sb2FkL2UzNjNiMjU2YzBlOWJjNWJkODI2NmJmOTlkZDZkNmJiIiBzdHlsZT0ibWFyZ2luOiA2cHggMCAwIDZweDsiPic7CiAgICBwbGF5ZXIudm9sdW1lKE1hdGgucm91bmQoc2V0dGluZy52b2wpIC8gMTAwIHx8IDApOwogICAgcGxheWVyLnBsYXliYWNrUmF0ZShzZXR0aW5nLnJhdGUgPiAxNiB8fCBzZXR0aW5nLnJhdGUgPCAwLjA2MjUgPyAxIDogc2V0dGluZy5yYXRlKTsKICAgIEV4dC5nZXQocGxheWVyLmNvbnRyb2xCYXIuYWRkQ2hpbGQoJ0J1dHRvbicpLmVsXykuc2V0SFRNTChhICsgaW1nICsgJzwvYT4nKS5kb20udGl0bGUgPSAn5LiL6L296Z+z6aKRJzsKICAgIHBsYXllci5vbignbG9hZGVkZGF0YScsIGZ1bmN0aW9uICgpIHsKICAgICAgICBzZXR0aW5nLnRpcCAmJiB0aGlzLnBsYXkoKS5jYXRjaChFeHQuZW1wdHlGbik7CiAgICB9KTsKICAgIHBsYXllci5vbmUoJ2ZpcnN0cGxheScsIGZ1bmN0aW9uICgpIHsKICAgICAgICBzZXR0aW5nLnJhdGUgPT09ICcwJyAmJiBjb25maWcucGx1Z2lucy5zZWVrQmFyQ29udHJvbC5zZW5kTG9nKHRoaXMuY2hpbGRyZW5fWzBdLCAnZW5kZWQnLCBNYXRoLmZsb29yKHRoaXMuY2FjaGVfLmR1cmF0aW9uKSk7CiAgICB9KTsKICAgIHBsYXllci5vbignZW5kZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgRXh0LmZseShmcmFtZUVsZW1lbnQpLnBhcmVudCgpLmFkZENscygnYW5zLWpvYi1maW5pc2hlZCcpOwogICAgfSk7CiAgICByZXR1cm4gcGxheWVyOwp9CgpmdW5jdGlvbiByZWxpZXZlTGltaXQoKSB7CiAgICBpZiAoc2V0dGluZy5zY2FsZSkgX3NlbGYuVUVESVRPUl9DT05GSUcuc2NhbGVFbmFibGVkID0gZmFsc2U7CiAgICAkLmVhY2goVUUuaW5zdGFudHMsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIga2V5ID0gdGhpcy5rZXk7CiAgICAgICAgdGhpcy5yZWFkeShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICAgICAgICBVRS5nZXRFZGl0b3Ioa2V5KTsKICAgICAgICB9KTsKICAgIH0pOwp9CgpmdW5jdGlvbiBiZWZvcmVGaW5kKCkgewogICAgc2V0dGluZy5yZWdsID0gcGFyZW50LmdyZWVubGlndGggfHwgJC5ub29wOwogICAgaWYgKCQudHlwZShwYXJlbnQuX2RhdGEpID09ICdhcnJheScpIHJldHVybiBzZXR0aW5nLnJlZ2woKTsKICAgIHZhciBtYXhpbWl6ZSA9ICQoCiAgICAgICAgJzxkaXYgc3R5bGU9ImJvcmRlcjogMnB4IGRhc2hlZCByZ2IoMCwgODUsIDY4KTsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3MCwgMTk2LCAzOCwgMC42KTsgb3ZlcmZsb3cteDogYXV0bztkaXNwbGF5Om5vbmU7Ij7il7s8L2Rpdj4nCiAgICApLmFwcGVuZFRvKCdib2R5JykuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICQoc2V0dGluZy5kaXYpLmNzcygiZGlzcGxheSIsICJibG9jayIpOwogICAgICAgIEdNX3NldFZhbHVlKCJtaW5pbWl6ZSIsICIwIik7CiAgICAgICAgJChtYXhpbWl6ZSkuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsKICAgIH0pOwoKICAgIHNldHRpbmcuZGl2ID0gJCgKICAgICAgICAnPGRpdiBzdHlsZT0iYm9yZGVyOiAycHggZGFzaGVkIHJnYigwLCA4NSwgNjgpOyB3aWR0aDogMzMwcHg7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyByaWdodDogMDsgei1pbmRleDogOTk5OTk7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzAsIDE5NiwgMzgsIDAuNik7IG92ZXJmbG93LXg6IGF1dG87Ij4nICsKICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogbWVkaXVtOyI+PC9zcGFuPicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6IG1lZGl1bTt3aWR0aDo3MCU7ZGlzcGxheTogaW5saW5lLWJsb2NrOyI+5q2j5Zyo5pCc57Si562U5qGILi4uPC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9IndpZHRoOjMwJTtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cGFkZGluZy1yaWdodDogMTBweDtib3gtc2l6aW5nOiBib3JkZXItYm94O3RleHQtYWxpZ246IHJpZ2h0OyI+PG1pbmltaXplIHN0eWxlPSJ3aWR0aDoyMHB4O2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OiAxMnB4O2ZvbnQtd2VpZ2h0OiBib2xkO2N1cnNvcjogY29udGV4dC1tZW51O3VzZXItc2VsZWN0Om5vbmU7Ij7kuIA8L21pbmltaXplPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGlkPSJjeC1ub3RpY2UiIHN0eWxlPSJib3JkZXItdG9wOiAxcHggc29saWQgIzAwMDtib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDttYXJnaW46IDRweCAwcHg7b3ZlcmZsb3c6IGhpZGRlbjsiPicgKyBzZXR0aW5nLm5vdGljZSArICc8L2Rpdj4nICsKICAgICAgICAnPGJ1dHRvbiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAxMHB4OyI+5pqC5YGc562U6aKYPC9idXR0b24+JyArCiAgICAgICAgJzxidXR0b24gc3R5bGU9Im1hcmdpbi1yaWdodDogMTBweDsiPicgKyAoc2V0dGluZy5hdXRvID8gJ+WPlua2iOacrOasoeiHquWKqOaPkOS6pCcgOiAn5byA5ZCv5pys5qyh6Ieq5Yqo5o+Q5LqkJykgKyAnPC9idXR0b24+JyArCiAgICAgICAgJzxidXR0b24gc3R5bGU9Im1hcmdpbi1yaWdodDogMTBweDsiPumHjeaWsOafpeivojwvYnV0dG9uPicgKwogICAgICAgICc8YnV0dG9uPuaKmOWPoOmdouadvzwvYnV0dG9uPjxicj4nICsKICAgICAgICAnPGlucHV0IGlkPSJhdXRvc3VibWl0IiB0eXBlPSJjaGVja2JveCInICsgKHNldHRpbmcuYXV0byA/ICcgY2hlY2tlZCcgOiAnJykgKyAnPuiHquWKqOaPkOS6pDwvaW5wdXQ+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6IDMwMHB4OyBvdmVyZmxvdy15OiBhdXRvOyI+JyArCiAgICAgICAgJzx0YWJsZSBib3JkZXI9IjEiIHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij4nICsKICAgICAgICAnPHRoZWFkPicgKwogICAgICAgICc8dHI+JyArCiAgICAgICAgJzx0aCBzdHlsZT0id2lkdGg6IDI1cHg7IG1pbi13aWR0aDogMjVweDsiPumimOWPtzwvdGg+JyArCiAgICAgICAgJzx0aCBzdHlsZT0id2lkdGg6IDYwJTsgbWluLXdpZHRoOiAxMzBweDsiPumimOebru+8iOeCueWHu+WPr+WkjeWItu+8iTwvdGg+JyArCiAgICAgICAgJzx0aCBzdHlsZT0ibWluLXdpZHRoOiAxMzBweDsiPuetlOahiO+8iOeCueWHu+WPr+WkjeWItu+8iTwvdGg+JyArCiAgICAgICAgJzwvdHI+JyArCiAgICAgICAgJzwvdGhlYWQ+JyArCiAgICAgICAgJzx0Zm9vdCBzdHlsZT0iZGlzcGxheTogbm9uZTsiPicgKwogICAgICAgICc8dHI+JyArCiAgICAgICAgJzx0aCBjb2xzcGFuPSIzIj7nrZTmoYjmj5DnpLrmoYYg5bey5oqY5Y+gPC90aD4nICsKICAgICAgICAnPC90cj4nICsKICAgICAgICAnPC90Zm9vdD4nICsKICAgICAgICAnPHRib2R5PicgKwogICAgICAgICc8dHI+JyArCiAgICAgICAgJzx0ZCBjb2xzcGFuPSIzIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjwvdGQ+JyArCiAgICAgICAgJzwvdHI+JyArCiAgICAgICAgJzwvdGJvZHk+JyArCiAgICAgICAgJzwvdGFibGU+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nCiAgICApLmFwcGVuZFRvKCdib2R5Jykub24oJ2NsaWNrJywgJ2J1dHRvbiwgdGQsIGlucHV0JywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsZW4gPSAkKHRoaXMpLnByZXZBbGwoJ2J1dHRvbicpLmxlbmd0aDsKICAgICAgICBpZiAodGhpcy5ub2RlTmFtZSA9PSAnVEQnKSB7CiAgICAgICAgICAgICQodGhpcykucHJldigpLmxlbmd0aCAmJiBHTV9zZXRDbGlwYm9hcmQoJCh0aGlzKS50ZXh0KCkpOwogICAgICAgIH0gZWxzZSBpZiAoISQodGhpcykuc2libGluZ3MoKS5sZW5ndGgpIHsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS50ZXh0KCfmraPlnKjmkJzntKLnrZTmoYguLi4nKTsKICAgICAgICAgICAgc2V0dGluZy5udW0rKzsKICAgICAgICB9IGVsc2UgaWYgKGxlbiA9PT0gMCkgewogICAgICAgICAgICBpZiAoc2V0dGluZy5sb29wKSB7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHNldHRpbmcubG9vcCk7CiAgICAgICAgICAgICAgICBkZWxldGUgc2V0dGluZy5sb29wOwogICAgICAgICAgICAgICAgbGVuID0gWyflt7LmmoLlgZzmkJzntKInLCAn57un57ut562U6aKYJ107CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmxvb3AgPSBzZXRJbnRlcnZhbChmaW5kQW5zd2VyLCBzZXR0aW5nLnRpbWUpOwogICAgICAgICAgICAgICAgbGVuID0gWyfmraPlnKjmkJzntKLnrZTmoYguLi4nLCAn5pqC5YGc562U6aKYJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0dGluZy5kaXYuY2hpbGRyZW4oJ2RpdjplcSgwKScpLmh0bWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICQodGhpcykuZGF0YSgnaHRtbCcpIHx8IGxlblswXTsKICAgICAgICAgICAgfSkucmVtb3ZlRGF0YSgnaHRtbCcpOwogICAgICAgICAgICAkKHRoaXMpLmh0bWwobGVuWzFdKTsKICAgICAgICB9IGVsc2UgaWYgKGxlbiA9PSAxKSB7CiAgICAgICAgICAgIHNldHRpbmcuYXV0byA9ICFzZXR0aW5nLmF1dG87CiAgICAgICAgICAgICQodGhpcykuaHRtbChzZXR0aW5nLmF1dG8gPyAn5Y+W5raI5pys5qyh6Ieq5Yqo5o+Q5LqkJyA6ICflvIDlkK/mnKzmrKHoh6rliqjmj5DkuqQnKTsKICAgICAgICB9IGVsc2UgaWYgKGxlbiA9PSAyKSB7CiAgICAgICAgICAgIHBhcmVudC5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICB9IGVsc2UgaWYgKGxlbiA9PSAzKSB7CiAgICAgICAgICAgIHNldHRpbmcuZGl2LmZpbmQoJ3Rib2R5LCB0Zm9vdCcpLnRvZ2dsZSgpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5pZCA9PSAiYXV0b3N1Ym1pdCIpIHsKICAgICAgICAgICAgLy8g6aKY55uu6Ieq5Yqo5o+Q5Lqk6YWN572uCiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2hlY2tlZCk7CiAgICAgICAgICAgIEdNX3NldFZhbHVlKCJhdXRvc3VibWl0IiwgdGhpcy5jaGVja2VkKTsKICAgICAgICB9CiAgICB9KS5vbignY2xpY2snLCAnbWluaW1pemUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5jc3MoImRpc3BsYXkiLCAibm9uZSIpOwogICAgICAgIEdNX3NldFZhbHVlKCJtaW5pbWl6ZSIsICIxIik7CiAgICAgICAgJChtYXhpbWl6ZSkuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CiAgICB9KS5maW5kKCd0YWJsZSwgdGQsIHRoJykuY3NzKCdib3JkZXInLCAnMXB4IHNvbGlkJykuZW5kKCk7CgogICAgaWYgKEdNX2dldFZhbHVlKCJtaW5pbWl6ZSIpID09ICIxIikgewogICAgICAgICQoc2V0dGluZy5kaXYpLmNzcygiZGlzcGxheSIsICJub25lIik7CiAgICAgICAgJChtYXhpbWl6ZSkuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CiAgICB9CgogICAgc2V0dGluZy5sb3NlID0gc2V0dGluZy5udW0gPSAwOwogICAgc2V0dGluZy5kYXRhID0gcGFyZW50Ll9kYXRhID0gW107CiAgICBzZXR0aW5nLm92ZXIgPSAnPGJ1dHRvbiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAxMHB4OyI+6Lez6L+H5q2k6aKYPC9idXR0b24+JzsKICAgIHNldHRpbmcuY3VycyA9ICQoJ3NjcmlwdDpjb250YWlucyhjb3Vyc2VOYW1lKScsIHRvcC5kb2N1bWVudCkudGV4dCgpLm1hdGNoKC9jb3Vyc2VOYW1lOlwnKC4rPylcJ3wkLylbMV0gfHwgJCgnaDEnKS50ZXh0KCkudHJpbSgpIHx8ICfml6AnOwogICAgc2V0dGluZy5sb29wID0gc2V0SW50ZXJ2YWwoZmluZEFuc3dlciwgc2V0dGluZy50aW1lKTsKICAgIHZhciB0aXAgPSAoeyB1bmRlZmluZWQ6ICfku7vliqHngrnmjpLpmJ/kuK0nLCBudWxsOiAn562J5b6F5YiH5o2i5LitJyB9KVtzZXR0aW5nLnRpcF07CiAgICB0aXAgJiYgc2V0dGluZy5kaXYuY2hpbGRyZW4oJ2RpdjplcSgwKScpLmRhdGEoJ2h0bWwnLCB0aXApLnNpYmxpbmdzKCdidXR0b246ZXEoMCknKS5jbGljaygpOwoKICAgIEdNX3htbGh0dHBSZXF1ZXN0KHsKICAgICAgICBtZXRob2Q6ICdHRVQnLAogICAgICAgIHVybDogJ2h0dHA6Ly9jeC5pY29kZWYuY29tL3VwZGF0ZT9zPXd5bjInLAogICAgICAgIHRpbWVvdXQ6IHNldHRpbmcudGltZSwKICAgICAgICBvbmxvYWQ6IGZ1bmN0aW9uICh4aHIpIHsKICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgICAgICB2YXIgb2JqID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCkgfHwge307CiAgICAgICAgICAgICAgICBzZXR0aW5nLm5vdGljZSA9IG9iai5pbmplY3Rpb247CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3gtbm90aWNlJykuaW5uZXJIVE1MID0gc2V0dGluZy5ub3RpY2U7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG9udGltZW91dDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzZXR0aW5nLmxvb3AgJiYgc2V0dGluZy5kaXYuY2hpbGRyZW4oJ2RpdjplcSgwKScpLmh0bWwoc2V0dGluZy5vdmVyICsgJ+acjeWKoeWZqOi2heaXtu+8jOato+WcqOmHjeivlS4uLicpOwogICAgICAgIH0KICAgIH0pOwp9CgpmdW5jdGlvbiBmaW5kQW5zd2VyKCkgewogICAgaWYgKHNldHRpbmcubnVtID49ICQoJy5UaU11JykubGVuZ3RoKSB7CiAgICAgICAgdmFyIGFyciA9IHNldHRpbmcubG9zZSA/IFsn5YWx5pyJIDxmb250IGNvbG9yPSJyZWQiPicgKyBzZXR0aW5nLmxvc2UgKyAnPC9mb250PiDpgZPpopjnm67lvoXlrozlloTvvIjlt7Lmt7HoibLmoIfms6jvvIknLCBzYXZlVGhpc10gOiBbJ+etlOmimOW3suWujOaIkCcsIHN1Ym1pdFRoaXNdOwogICAgICAgIHNldHRpbmcuZGl2LmNoaWxkcmVuKCdkaXY6ZXEoMCknKS5kYXRhKCdodG1sJywgYXJyWzBdKS5zaWJsaW5ncygnYnV0dG9uOmVxKDApJykuaGlkZSgpLmNsaWNrKCk7CiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoYXJyWzFdLCBzZXR0aW5nLnRpbWUpOwogICAgfQogICAgdmFyICRUaU11ID0gJCgnLlRpTXUnKS5lcShzZXR0aW5nLm51bSksCiAgICAgICAgcXVlc3Rpb24gPSBmaWx0ZXJJbWcoJFRpTXUuZmluZCgnLlp5X1RJdGxlOmVxKDApIC5jbGVhcmZpeCcpKS5yZXBsYWNlKC9e44CQLio/44CRXHMqLywgJycpLnJlcGxhY2UoL1xzKu+8iFxkK1wuXGQr5YiG77yJJC8sICcnKS5yZXBsYWNlKC9bKF1ccypbKV3jgIIkLywgJycpLnJlcGxhY2UoL++8iFxzKu+8ieOAgiQvLCAnJykucmVwbGFjZSgvWyhdXHMqWyldJC8sICcnKS5yZXBsYWNlKC/vvIhccyrvvIkkLywgJycpLnJlcGxhY2UoL+OAgiQvLCAnJyksCiAgICAgICAgdHlwZSA9ICRUaU11LmZpbmQoJ2lucHV0W25hbWVePWFuc3dlcnR5cGVdOmVxKDApJykudmFsKCkgfHwgJy0xJzsKCiAgICBjb25zb2xlLmxvZygkVGlNdSk7CgogICAgaWYocXVlc3Rpb24gPT0gIiIpewogICAgICAgIHF1ZXN0aW9uID0gZmlsdGVySW1nKCRUaU11LmZpbmQoJy5tYXJrX25hbWU6ZXEoMCkgLmNvbG9yRGVlcCcpKTsKICAgIH0KICAgIGNvbnNvbGUubG9nKCRUaU11LmZpbmQoJy5tYXJrX25hbWU6ZXEoMCkgLmNvbG9yRGVlcCcpKTsKCiAgICBHTV94bWxodHRwUmVxdWVzdCh7CiAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgdXJsOiAnaHR0cDovL2N4Lmljb2RlZi5jb20vd3luLW5iP3Y9MicsCiAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAnQ29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsCiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogc2V0dGluZy50b2tlbiwKICAgICAgICB9LAogICAgICAgIGRhdGE6ICdxdWVzdGlvbj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXN0aW9uKSArICcmdHlwZT0nICsgdHlwZSArICcmaWQ9JyArICgkKCcjd29ya0xpYnJhcnlJZCcpLnZhbCgpIHx8ICQoJyNvbGRXb3JrSWQnKS52YWwoKSksCiAgICAgICAgdGltZW91dDogc2V0dGluZy50aW1lLAogICAgICAgIG9ubG9hZDogZnVuY3Rpb24gKHhocikgewogICAgICAgICAgICBpZiAoIXNldHRpbmcubG9vcCkgewogICAgICAgICAgICB9IGVsc2UgaWYgKHhoci5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgICAgICB2YXIgb2JqID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCkgfHwge307CiAgICAgICAgICAgICAgICBvYmouYW5zd2VyID0gb2JqLmRhdGE7CiAgICAgICAgICAgICAgICBpZiAob2JqLmNvZGUpIHsKICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLmRpdi5jaGlsZHJlbignZGl2OmVxKDApJykudGV4dCgn5q2j5Zyo5pCc57Si562U5qGILi4uJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRkID0gJzx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7JywKICAgICAgICAgICAgICAgICAgICAgICAgYW5zd2VyID0gU3RyaW5nKG9iai5hbnN3ZXIpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPCg/IWltZykvZywgJyZsdDsnKTsKICAgICAgICAgICAgICAgICAgICBvYmouYW5zd2VyID0gL15odHRwLy50ZXN0KGFuc3dlcikgPyAnPGltZyBzcmM9IicgKyBvYmouYW5zd2VyICsgJyI+JyA6IG9iai5hbnN3ZXI7CiAgICAgICAgICAgICAgICAgICAgJCgKICAgICAgICAgICAgICAgICAgICAgICAgJzx0cj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgdGQgKyAnIHRleHQtYWxpZ246IGNlbnRlcjsiPicgKyAkVGlNdS5maW5kKCcuWnlfVEl0bGU6ZXEoMCkgaScpLnRleHQoKS50cmltKCkgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgdGQgKyAnIiB0aXRsZT0i54K55Ye75Y+v5aSN5Yi2Ij4nICsgKHF1ZXN0aW9uLm1hdGNoKCc8aW1nJykgPyBxdWVzdGlvbiA6IHF1ZXN0aW9uLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0JykpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAgICAgIHRkICsgJyIgdGl0bGU9IueCueWHu+WPr+WkjeWItiI+JyArICgvXmh0dHAvLnRlc3QoYW5zd2VyKSA/IG9iai5hbnN3ZXIgOiAnJykgKyBhbnN3ZXIgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzwvdHI+JwogICAgICAgICAgICAgICAgICAgICkuYXBwZW5kVG8oc2V0dGluZy5kaXYuZmluZCgndGJvZHknKSkuY3NzKCdiYWNrZ3JvdW5kLWNvbG9yJywgZmlsbEFuc3dlcigkVGlNdS5maW5kKCd1bDplcSgwKScpLmZpbmQoJ2xpJyksIG9iaiwgdHlwZSkgPyAnJyA6ICdyZ2JhKDAsIDE1MCwgMTM2LCAwLjYpJyk7CiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5kYXRhW3NldHRpbmcubnVtKytdID0gewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBvYmouY29kZSA+IDAgPyAxIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb246IHF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb246IG9iai5hbnN3ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE51bWJlcih0eXBlKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNldHRpbmcuZGl2LmNoaWxkcmVuKCdkaXY6ZXEoMCknKS5odG1sKG9iai5hbnN3ZXIgfHwgc2V0dGluZy5vdmVyICsgJ+acjeWKoeWZqOe5geW/me+8jOato+WcqOmHjeivlS4uLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0dGluZy5kaXYuY2hpbGRyZW4oJ3NwYW4nKS5odG1sKG9iai5tc2cgfHwgJycpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHhoci5zdGF0dXMgPT0gNDAzKSB7CiAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IHhoci5yZXNwb25zZVRleHQuaW5kZXhPZigneycpID8gJ+ivt+axgui/h+S6jumikee5ge+8jOivt+eojeWQjuWGjeivlScgOiAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KS5kYXRhOwogICAgICAgICAgICAgICAgc2V0dGluZy5kaXYuY2hpbGRyZW4oJ2RpdjplcSgwKScpLmRhdGEoJ2h0bWwnLCBodG1sKS5zaWJsaW5ncygnYnV0dG9uOmVxKDApJykuY2xpY2soKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNldHRpbmcuZGl2LmNoaWxkcmVuKCdkaXY6ZXEoMCknKS5odG1sKCfpopjlupPlvILluLgs5Y+v6IO96KKr5oG25oSP5pS75Ye75LqGLi4u6K+3562J5b6F5oGi5aSNJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG9udGltZW91dDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzZXR0aW5nLmxvb3AgJiYgc2V0dGluZy5kaXYuY2hpbGRyZW4oJ2RpdjplcSgwKScpLmh0bWwoc2V0dGluZy5vdmVyICsgJ+acjeWKoeWZqOi2heaXtu+8jOato+WcqOmHjeivlS4uLicpOwogICAgICAgIH0KICAgIH0pOwp9CgpmdW5jdGlvbiBmaWxsQW5zd2VyKCRsaSwgb2JqLCB0eXBlKSB7CiAgICB2YXIgJGlucHV0ID0gJGxpLmZpbmQoJzpyYWRpbywgOmNoZWNrYm94JyksCiAgICAgICAgc3RyID0gU3RyaW5nKG9iai5hbnN3ZXIpLnRvQ0RCKCkgfHwgbmV3IERhdGUoKS50b1N0cmluZygpLAogICAgICAgIGRhdGEgPSBzdHIuc3BsaXQoLyN8XHgwMXxcfC8pLAogICAgICAgIG9wdCA9IG9iai5vcHQgfHwgc3RyLAogICAgICAgIHN0YXRlID0gc2V0dGluZy5sb3NlOwogICAgLy8gJGxpLmZpbmQoJzpyYWRpbzpjaGVja2VkJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgIG9iai5jb2RlID4gMCAmJiAkaW5wdXQuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHsKICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSAndHJ1ZScpIHsKICAgICAgICAgICAgZGF0YS5qb2luKCkubWF0Y2goLyhefCwpKOato+ehrnzmmK985a+5fOKImnxUfHJpKSgsfCQpLykgJiYgdGhpcy5jbGljaygpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZSA9PSAnZmFsc2UnKSB7CiAgICAgICAgICAgIGRhdGEuam9pbigpLm1hdGNoKC8oXnwsKSjplJnor6985ZCmfOmUmXzDl3xGfHdyKSgsfCQpLykgJiYgdGhpcy5jbGljaygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciB0aXAgPSBmaWx0ZXJJbWcoJGxpLmVxKGluZGV4KS5maW5kKCcuYWZ0ZXInKSkudG9DREIoKSB8fCBuZXcgRGF0ZSgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIEJvb2xlYW4oJC5pbkFycmF5KHRpcCwgZGF0YSkgKyAxIHx8ICh0eXBlID09ICcxJyAmJiBzdHIuaW5kZXhPZih0aXApICsgMSkpID09IHRoaXMuY2hlY2tlZCB8fCB0aGlzLmNsaWNrKCk7CiAgICAgICAgfQogICAgfSkuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKCEvXkE/Qj9DP0Q/RT9GP0c/JC8udGVzdChvcHQpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgQm9vbGVhbihvcHQubWF0Y2godGhpcy52YWx1ZSkpID09IHRoaXMuY2hlY2tlZCB8fCB0aGlzLmNsaWNrKCk7CiAgICB9KTsKICAgIGlmICh0eXBlLm1hdGNoKC9eWzAxM10kLykpIHsKICAgICAgICAkaW5wdXQuaXMoJzpjaGVja2VkJykgfHwgKHNldHRpbmcubm9uZSA/ICgkaW5wdXRbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogJGlucHV0Lmxlbmd0aCldIHx8ICQoKSkuY2xpY2soKSA6IHNldHRpbmcubG9zZSsrKTsKICAgIH0gZWxzZSBpZiAodHlwZS5tYXRjaCgvXigyfFs0LTldfDFbMDhdKSQvKSkgewogICAgICAgIGRhdGEgPSBTdHJpbmcob2JqLmFuc3dlcikuc3BsaXQoLyN8XHgwMXxcfC8pOwogICAgICAgIHN0ciA9ICRsaS5lbmQoKS5maW5kKCd0ZXh0YXJlYScpLmVhY2goZnVuY3Rpb24gKGluZGV4KSB7CiAgICAgICAgICAgIGluZGV4ID0gKG9iai5jb2RlID4gMCAmJiBkYXRhW2luZGV4XSkgfHwgJyc7CiAgICAgICAgICAgIGlmIChvYmouY29kZSA+IDApIHsKICAgICAgICAgICAgICAgIFVFLmdldEVkaXRvcih0aGlzLm5hbWUpLnNldENvbnRlbnQoaW5kZXgudHJpbSgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pLmxlbmd0aDsKICAgICAgICAob2JqLmNvZGUgPiAwICYmIGRhdGEubGVuZ3RoID09IHN0cikgfHwgc2V0dGluZy5ub25lIHx8IHNldHRpbmcubG9zZSsrOwogICAgfSBlbHNlIHsKICAgICAgICBzZXR0aW5nLm5vbmUgfHwgc2V0dGluZy5sb3NlKys7CiAgICB9CiAgICByZXR1cm4gc3RhdGUgPT0gc2V0dGluZy5sb3NlOwp9CgpmdW5jdGlvbiBzYXZlVGhpcygpIHsKICAgIGlmICghc2V0dGluZy5hdXRvKSByZXR1cm4gc2V0VGltZW91dChzYXZlVGhpcywgc2V0dGluZy50aW1lKTsKICAgIHNldHRpbmcuZGl2LmNoaWxkcmVuKCdidXR0b246bHQoMyknKS5oaWRlKCkuZXEoMSkuY2xpY2soKTsKICAgIF9zZWxmLmFsZXJ0ID0gY29uc29sZS5sb2c7CiAgICAkKCcjdGVtcHNhdmUnKS5jbGljaygpOwogICAgc2V0dGluZy5yZWdsKCk7Cn0KCmZ1bmN0aW9uIHN1Ym1pdFRoaXMoKSB7CiAgICBpZiAoIXNldHRpbmcuYXV0bykgewogICAgfSBlbHNlIGlmICghJCgnLkJ0bl9ibHVlXzE6dmlzaWJsZScpLmxlbmd0aCkgewogICAgICAgIHNldHRpbmcuZGl2LmNoaWxkcmVuKCdidXR0b246bHQoMyknKS5oaWRlKCkuZXEoMSkuY2xpY2soKTsKICAgICAgICByZXR1cm4gc2V0dGluZy5yZWdsKCk7CiAgICB9IGVsc2UgaWYgKCQoJyNjb25maXJtU3ViV2luOnZpc2libGUnKS5sZW5ndGgpIHsKICAgICAgICB2YXIgYnRuID0gJCgnI3RpcENvbnRlbnQgKyAqID4gYScpLm9mZnNldCgpIHx8IHsgdG9wOiAwLCBsZWZ0OiAwIH0sCiAgICAgICAgICAgIG1vdXNlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnRzJyk7CiAgICAgICAgYnRuID0gW2J0bi5sZWZ0ICsgTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiA0NiksIGJ0bi50b3AgKyBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDI2KV07CiAgICAgICAgbW91c2UuaW5pdE1vdXNlRXZlbnQoJ2NsaWNrJywgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIDAsIDAsIDAsIGJ0blswXSwgYnRuWzFdLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CiAgICAgICAgX3NlbGYuZXZlbnQgPSAkLmV4dGVuZCh0cnVlLCB7fSwgbW91c2UpOwogICAgICAgIGRlbGV0ZSBfc2VsZi5ldmVudC5pc1RydXN0ZWQ7CiAgICAgICAgX3NlbGYuZm9ybTFzdWJtaXQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJCgnLkJ0bl9ibHVlXzEnKVswXS5jbGljaygpOwogICAgfQogICAgc2V0VGltZW91dChzdWJtaXRUaGlzLCBNYXRoLmNlaWwoc2V0dGluZy50aW1lICogTWF0aC5yYW5kb20oKSkgKiAyKTsKfQoKZnVuY3Rpb24gY2hlY2tUb05leHQoKSB7CiAgICB2YXIgJHRpcCA9ICQoc2V0dGluZy5qb2Iuam9pbignLCAnKSwgZG9jdW1lbnQpLnByZXZBbGwoJy5hbnMtam9iLWljb24nICsgc2V0dGluZy5ub3JtYWwpOwogICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgICR0aXAucGFyZW50KCc6bm90KC5hbnMtam9iLWZpbmlzaGVkKScpLmxlbmd0aCB8fCBzZXR0aW5nLmp1bXAgJiYgdG9OZXh0KCk7CiAgICB9LCBzZXR0aW5nLnRpbWUpOwp9CgpmdW5jdGlvbiB0b05leHQoKSB7CiAgICB2YXIgJGN1ciA9ICQoJyNjdXInICsgJCgnI2NoYXB0ZXJJZGlkJykudmFsKCkpLAogICAgICAgICR0aXAgPSAkKCdzcGFuLmN1cnJlbnRzIH4gc3BhbicpLAogICAgICAgIHNlbCA9IHNldHRpbmcucmV2aWV3ID8gJ2h0bWwnIDogJy5ibHVlJzsKICAgIGlmICghJGN1ci5oYXMoc2VsKS5sZW5ndGggJiYgJHRpcC5sZW5ndGgpIHJldHVybiAkdGlwLmVxKDApLmNsaWNrKCk7CiAgICAkdGlwID0gJCgnLnJvdW5kcG9pbnRTdHVkZW50LCAucm91bmRwb2ludCcpLnBhcmVudCgpOwogICAgJHRpcCA9ICR0aXAuc2xpY2UoJHRpcC5pbmRleCgkY3VyKSArIDEpLm5vdCgnOmhhcygnICsgc2VsICsgJyknKTsKICAgICR0aXAubm90KHNldHRpbmcubG9jayA/ICc6aGFzKC5sb2NrKScgOiAnaHRtbCcpLmZpbmQoJ3NwYW4nKS5lcSgwKS5jbGljaygpOwogICAgJHRpcC5sZW5ndGggfHwgc2V0dGluZy5jb3Vyc2UgJiYgc3dpdGNoQ291cnNlKCk7Cn0KCmZ1bmN0aW9uIHN3aXRjaENvdXJzZSgpIHsKICAgIEdNX3htbGh0dHBSZXF1ZXN0KHsKICAgICAgICBtZXRob2Q6ICdHRVQnLAogICAgICAgIHVybDogJy92aXNpdC9jb3Vyc2VzL3N0dWR5P2lzQWpheD10cnVlJmZpbGVJZD0wJmRlYnVnPScsCiAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAnUmVmZXJlcic6IGxvY2F0aW9uLm9yaWdpbiArICcvdmlzaXQvY291cnNlcycsCiAgICAgICAgICAgICdYLVJlcXVlc3RlZC1XaXRoJzogJ1hNTEh0dHBSZXF1ZXN0JwogICAgICAgIH0sCiAgICAgICAgb25sb2FkOiBmdW5jdGlvbiAoeGhyKSB7CiAgICAgICAgICAgIHZhciBsaXN0ID0gJCgnaDMgYVt0YXJnZXRdJywgeGhyLnJlc3BvbnNlVGV4dCkubWFwKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aGlzKS5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGluZGV4ID0gbGlzdC5tYXAoZnVuY3Rpb24gKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF0Y2godG9wLmNvdXJzZUlkKSAmJiBpbmRleDsKICAgICAgICAgICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuaXNOdW1lcmljKHRoaXMpOwogICAgICAgICAgICAgICAgfSlbMF0gKyAxIHx8IDA7CiAgICAgICAgICAgIHNldHRpbmcuY291cnNlID0gbGlzdFtpbmRleF0gPyBnb0NvdXJzZShsaXN0W2luZGV4XSkgOiAwOwogICAgICAgIH0KICAgIH0pOwp9CgpmdW5jdGlvbiBnb0NvdXJzZSh1cmwpIHsKICAgIEdNX3htbGh0dHBSZXF1ZXN0KHsKICAgICAgICBtZXRob2Q6ICdHRVQnLAogICAgICAgIHVybDogdXJsLAogICAgICAgIG9ubG9hZDogZnVuY3Rpb24gKHhocikgewogICAgICAgICAgICAkLmdsb2JhbEV2YWwoJ2xvY2F0aW9uLmhyZWYgPSAiJyArICQoJy5hcnRpY2xlbmFtZSBhW2hyZWZdJywgeGhyLnJlc3BvbnNlVGV4dCkuYXR0cignaHJlZicpICsgJyI7Jyk7CiAgICAgICAgfQogICAgfSk7Cn0KCmZ1bmN0aW9uIGF1dG9SZWFkKCkgewogICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoewogICAgICAgIHNjcm9sbFRvcDogJChkb2N1bWVudCkuaGVpZ2h0KCkgLSAkKHdpbmRvdykuaGVpZ2h0KCkKICAgIH0sIE1hdGgucm91bmQoc2V0dGluZy5yZWFkKSAqIDFFMywgZnVuY3Rpb24gKCkgewogICAgICAgICQoJy5ub2RlSXRlbS5yIGknKS5jbGljaygpOwogICAgfSkub25lKCdjbGljaycsICcjdG9wJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgJChldmVudC5kZWxlZ2F0ZVRhcmdldCkuc3RvcCgpOwogICAgfSk7Cn0KCmZ1bmN0aW9uIERpc3BsYXlVUkwoKSB7CiAgICBfc2VsZi5XQVkuYm94LmhpZGUoKTsKICAgIHZhciAkbGkgPSAkKHRoaXMpLmNsb3Nlc3QoJ2xpJyk7CiAgICAkLmdldCgnL3Zpc2l0L2dvVG9Db3Vyc2VCeUZhY2UnLCB7CiAgICAgICAgY291cnNlSWQ6ICRsaS5maW5kKCdpbnB1dFtuYW1lPWNvdXJzZUlkXScpLnZhbCgpLAogICAgICAgIGNsYXp6SWQ6ICRsaS5maW5kKCdpbnB1dFtuYW1lPWNsYXNzSWRdJykudmFsKCkKICAgIH0sIGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgJGxpLmZpbmQoJ1tvbmNsaWNrXj1vcGVuRmFjZVRpcF0nKS5yZW1vdmVBdHRyKCdvbmNsaWNrJykuYXR0cih7CiAgICAgICAgICAgIHRhcmdldDogJ19ibGFuaycsCiAgICAgICAgICAgIGhyZWY6ICQoZGF0YSkuZmlsdGVyKCdzY3JpcHQ6bGFzdCcpLnRleHQoKS5tYXRjaCgvblwoIiguKz8pIi8pWzFdCiAgICAgICAgfSk7CiAgICAgICAgYWxlcnQoJ+acrOivvueoi+W3suS4tOaXtuino+mZpOmdoumDqOivhuWIqycpOwogICAgfSwgJ2h0bWwnKTsKfQoKZnVuY3Rpb24gZ2V0U2Nob29sSWQoKSB7CiAgICB2YXIgc2Nob29sID0gL14xXGR7MTB9JC8udGVzdChzZXR0aW5nLnVzZXJuYW1lKSA/ICcnIDogc2V0dGluZy5zY2hvb2w7CiAgICBpZiAoIWlzTmFOKHNjaG9vbCkpIHJldHVybiBzZXRUaW1lb3V0KHRvTG9naW4sIHNldHRpbmcudGltZSwgc2Nob29sKTsKICAgIGlmIChzY2hvb2wgPT0gJ+i0puWPt+S4uuaJi+acuuWPt+WPr+S7peS4jeS/ruaUueatpOWPguaVsCcpIHJldHVybiBhbGVydCgn6K+35L+u5pS5c2Nob29s5Y+C5pWwJyk7CiAgICAkLmdldEpTT04oJy9vcmcvc2VhcmNoVW5pcz9maWx0ZXI9JyArIGVuY29kZVVSSShzY2hvb2wpICsgJyZwcm9kdWN0PTQ0JywgZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICBpZiAoIWRhdGEucmVzdWx0KSByZXR1cm4gYWxlcnQoJ+WtpuagoeafpeivoumUmeivrycpOwogICAgICAgIHZhciBtc2cgPSAkLmdyZXAoZGF0YS5mcm9tcywgZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5uYW1lID09IHNjaG9vbDsKICAgICAgICB9KVswXTsKICAgICAgICBtc2cgPyBzZXRUaW1lb3V0KHRvTG9naW4sIHNldHRpbmcudGltZSwgbXNnLnNjaG9vbGlkKSA6IGFsZXJ0KCflrabmoKHlkI3np7DkuI3lrozmlbQnKTsKICAgIH0pOwp9CgpmdW5jdGlvbiB0b0xvZ2luKGZpZCkgewogICAgR01feG1saHR0cFJlcXVlc3QoewogICAgICAgIG1ldGhvZDogJ0dFVCcsCiAgICAgICAgdXJsOiAnL2FwaS9sb2dpbj9uYW1lPScgKyBzZXR0aW5nLnVzZXJuYW1lICsgJyZwd2Q9JyArIHNldHRpbmcucGFzc3dvcmQgKyAnJnNjaG9vbGlkPScgKyBmaWQgKyAnJnZlcmlmeT0wJywKICAgICAgICBvbmxvYWQ6IGZ1bmN0aW9uICh4aHIpIHsKICAgICAgICAgICAgdmFyIG9iaiA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpIHx8IHt9OwogICAgICAgICAgICBvYmoucmVzdWx0ID8gbG9jYXRpb24uaHJlZiA9IGRlY29kZVVSSUNvbXBvbmVudCgkKCcjcmVmLCAjcmVmZXJfMHgwMDEnKS52YWwoKSkgOiBhbGVydChvYmouZXJyb3JNc2cgfHwgJ0Vycm9yJyk7CiAgICAgICAgfQogICAgfSk7Cn0KCmZ1bmN0aW9uIHN1Ym1pdEFuc3dlcigkam9iLCBkYXRhKSB7CiAgICAkam9iLnJlbW92ZUNsYXNzKCdhbnMtam9iLWZpbmlzaGVkJyk7CiAgICBkYXRhID0gZGF0YS5sZW5ndGggPyAkKGRhdGEpIDogJCgnLlRpTXUnKS5tYXAoZnVuY3Rpb24gKCkgewogICAgICAgIHZhciB0aXRsZSA9IGZpbHRlckltZygkKCcuWnlfVEl0bGUgLmNsZWFyZml4JywgdGhpcykpOwogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHF1ZXN0aW9uOiB0aXRsZS5yZXBsYWNlKC9e44CQLio/44CRXHMqLywgJycpLAogICAgICAgICAgICB0eXBlOiAoeyDljZXpgInpopg6IDAsIOWkmumAiemimDogMSwg5aGr56m66aKYOiAyLCDliKTmlq3popg6IDMgfSlbdGl0bGUubWF0Y2goL17jgJAoLio/KeOAkXwkLylbMV1dCiAgICAgICAgfTsKICAgIH0pOwogICAgZGF0YSA9ICQuZ3JlcChkYXRhLm1hcChmdW5jdGlvbiAoaW5kZXgpIHsKICAgICAgICB2YXIgJFRpTXUgPSAkKCcuVGlNdScpLmVxKGluZGV4KTsKICAgICAgICBpZiAoISgkLmlzUGxhaW5PYmplY3QodGhpcykgJiYgdGhpcy50eXBlIDwgNCAmJiAkVGlNdS5maW5kKCcuZnInKS5sZW5ndGgpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSAyKSB7CiAgICAgICAgICAgIHZhciAkYW5zID0gJFRpTXUuZmluZCgnLlB5X3RrLCAuUHlfYW5zd2VyJykuZXEoMCk7CiAgICAgICAgICAgIGlmICghJFRpTXUuZmluZCgnLmN1bycpLmxlbmd0aCAmJiB0aGlzLmNvZGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIGlmICghJGFucy5maW5kKCcuY3VvJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbiA9ICRhbnMuZmluZCgnLmNsZWFyZml4JykubWFwKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aGlzKS50ZXh0KCkudHJpbSgpOwogICAgICAgICAgICAgICAgfSkuZ2V0KCkuam9pbignIycpIHx8ICfml6AnOwogICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29kZSkgewogICAgICAgICAgICAgICAgdGhpcy5jb2RlID0gLTE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSAzKSB7CiAgICAgICAgICAgIHZhciBhbnMgPSAkVGlNdS5maW5kKCcuZm9udDIwOmxhc3QnKS50ZXh0KCk7CiAgICAgICAgICAgIGlmICgkVGlNdS5maW5kKCcuY3VvJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbiA9ICh7ICfiiJonOiAn6ZSZ6K+vJywgJ8OXJzogJ+ato+ehricgfSlbYW5zXSB8fCAn5pegJzsKICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5jb2RlKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbiA9ICh7ICfiiJonOiAn5q2j56GuJywgJ8OXJzogJ+mUmeivrycgfSlbYW5zXSB8fCAn5pegJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciB0ZXh0ID0gJFRpTXUuZmluZCgnLlB5X2Fuc3dlciA+IHNwYW46ZXEoMCknKS50ZXh0KCk7CiAgICAgICAgICAgIGlmICgkVGlNdS5maW5kKCcuZHVpJykubGVuZ3RoICYmIHRoaXMuY29kZSAmJiAhL15BP0I/Qz9EP0U/Rj9HPyQvLnRlc3QodGhpcy5vcHRpb24pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJFRpTXUuZmluZCgnLmR1aScpLmxlbmd0aCB8fCB0ZXh0Lm1hdGNoKCfmraPnoa7nrZTmoYgnKSkgewogICAgICAgICAgICAgICAgdGV4dCA9IHRleHQubWF0Y2goL1tBLUddL2dpKSB8fCBbXTsKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uID0gJC5tYXAodGV4dCwgZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckltZygkVGlNdS5maW5kKCcuZmw6Y29udGFpbnMoJyArIHZhbHVlICsgJykgKyBhJykpOwogICAgICAgICAgICAgICAgfSkuam9pbignIycpIHx8ICfml6AnOwogICAgICAgICAgICAgICAgdGhpcy5rZXkgPSB0ZXh0LmpvaW4oJycpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29kZSkgewogICAgICAgICAgICAgICAgdGhpcy5jb2RlID0gLTE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9KSwgZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLm9wdGlvbiAhPSAn5pegJzsKICAgIH0pOwogICAgc2V0dGluZy5jdXJzID0gJCgnc2NyaXB0OmNvbnRhaW5zKGNvdXJzZU5hbWUpJywgdG9wLmRvY3VtZW50KS50ZXh0KCkubWF0Y2goL2NvdXJzZU5hbWU6XCcoLis/KVwnfCQvKVsxXSB8fCAkKCdoMScpLnRleHQoKS50cmltKCkgfHwgJ+aXoCc7CiAgICBkYXRhLmxlbmd0aCAmJiBHTV94bWxodHRwUmVxdWVzdCh7CiAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgdXJsOiAnaHR0cDovL2N4Lmljb2RlZi5jb20vdXBsb2FkL2N4P3dvcmtSZWxhdGlvbklkPScgKyAkKCcjd29ya0lkJykudmFsKCksCiAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAnQ29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsCiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogc2V0dGluZy50b2tlbiwKICAgICAgICB9LAogICAgICAgIGRhdGE6ICdjb3Vyc2U9JyArIGVuY29kZVVSSUNvbXBvbmVudChzZXR0aW5nLmN1cnMpICsgJyZkYXRhPScgKyBlbmNvZGVVUklDb21wb25lbnQoKEV4dC5lbmNvZGUgfHwgSlNPTi5zdHJpbmdpZnkpKGRhdGEpKSArICcmaWQ9JyArICQoJyNqb2JpZCcpLnZhbCgpLnNsaWNlKDUpCiAgICB9KTsKICAgICRqb2IuYWRkQ2xhc3MoJ2Fucy1qb2ItZmluaXNoZWQnKTsKfQoKZnVuY3Rpb24gZmlsdGVySW1nKGRvbSkgewogICAgcmV0dXJuICQoZG9tKS5jbG9uZSgpLmZpbmQoJ2ltZ1tzcmNdJykucmVwbGFjZVdpdGgoZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAkKCc8cD48L3A+JykudGV4dCgnPGltZyBzcmM9IicgKyAkKHRoaXMpLmF0dHIoJ3NyYycpICsgJyI+Jyk7CiAgICB9KS5lbmQoKS5maW5kKCdpZnJhbWVbc3JjXScpLnJlcGxhY2VXaXRoKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gJCgnPHA+PC9wPicpLnRleHQoJzxpZnJhbWUgc3JjPSInICsgJCh0aGlzKS5hdHRyKCdzcmMnKSArICciPjwvaXJhbWU+Jyk7CiAgICB9KS5lbmQoKS50ZXh0KCkudHJpbSgpOwp9"},{"name":"超星网课助手(考试专版)(改)","options":{"check_for_updates":true,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_prototypes":false,"noframes":null,"run_at":null,"override":{"use_includes":[],"orig_includes":[],"merge_includes":true,"use_matches":[],"orig_matches":["*://*.chaoxing.com/exam/test/reVersionTestStartNew*","*://*.edu.cn/exam/test/reVersionTestStartNew*","*://*.nbdlib.cn/exam/test/reVersionTestStartNew*","*://*.hnsyu.net/exam/test/reVersionTestStartNew*"],"merge_matches":true,"use_excludes":[],"orig_excludes":[],"merge_excludes":true,"use_connects":[],"merge_connects":true,"use_blockers":[],"orig_run_at":"document-end","orig_noframes":null,"orig_connects":["cx.icodef.com"]}},"storage":{"ts":1620274355943,"data":{}},"enabled":true,"position":2,"uuid":"d52e2d82-7846-458f-9cc7-52bdb33fcfdd","source":"Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDotoXmmJ/nvZHor77liqnmiYso6ICD6K+V5LiT54mIKSjmlLkpCi8vIEBuYW1lc3BhY2UgICAgY29kZXJfdHEKLy8gQHZlcnNpb24gICAgICAzLjMuOAovLyBAZGVzY3JpcHRpb24gIOiHquWKqOaQnOe0ouWwlOmbhU1PT0PogIPor5XnrZTmoYjvvIzmlK/mjIHoh6rliqjnrZTpopjjgIHoh6rliqjliIfmjaLpopjnm67jgIHpmpDol4/nrZTmoYjmkJzntKLmj5DnpLrmoYbnrYnvvIzop6PpmaTlkITnsbvlip/og73pmZDliLbvvIzlvIDmlL7oh6rlrprkuYnlj4LmlbAKLy8gQGF1dGhvciAgICAgICBjb2Rlcl90cQovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmNoYW94aW5nLmNvbS9leGFtL3Rlc3QvcmVWZXJzaW9uVGVzdFN0YXJ0TmV3KgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmVkdS5jbi9leGFtL3Rlc3QvcmVWZXJzaW9uVGVzdFN0YXJ0TmV3KgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLm5iZGxpYi5jbi9leGFtL3Rlc3QvcmVWZXJzaW9uVGVzdFN0YXJ0TmV3KgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmhuc3l1Lm5ldC9leGFtL3Rlc3QvcmVWZXJzaW9uVGVzdFN0YXJ0TmV3KgovLyBAY29ubmVjdCAgICAgIGN4Lmljb2RlZi5jb20KLy8gQHJ1bi1hdCAgICAgICBkb2N1bWVudC1lbmQKLy8gQGdyYW50ICAgICAgICB1bnNhZmVXaW5kb3cKLy8gQGdyYW50ICAgICAgICBHTV94bWxodHRwUmVxdWVzdAovLyBAZ3JhbnQgICAgICAgIEdNX3NldENsaXBib2FyZAovLyBAZ3JhbnQgICAgICAgIEdNX3NldFZhbHVlCi8vIEBncmFudCAgICAgICAgR01fZ2V0VmFsdWUKLy8gQGxpY2Vuc2UgICAgICBNSVQKLy8gPT0vVXNlclNjcmlwdD09CgovLyDorr7nva7kv67mlLnlkI7vvIzpnIDopoHliLfmlrDmiJbph43mlrDmiZPlvIDnvZHor77pobXpnaLmiY3kvJrnlJ/mlYgKdmFyIHNldHRpbmcgPSB7CiAgICAgICAgLy8gOEUzID09IDgwMDDvvIznp5HlraborrDmlbDms5XvvIzooajnpLrmr6vnp5LmlbAKICAgICAgICB0aW1lOiA1RTMgLy8g6buY6K6k5ZON5bqU6YCf5bqm5Li6OOenku+8jOS4jeW7uuiuruWwj+S6jjXnp5IKICAgICAgICAsdG9rZW46ICcnIC8vIHRva2Vu5Y+v5Lul5aKe5Yqg5bm25Y+R5qyh5pWw77yM55So5p2l5omT56CB77yM6YeH6ZuG6aKY5bqT5aWW5YqxCgogICAgICAgIC8vIDHku6PooajlvIDlkK/vvIww5Luj6KGo5YWz6ZetCiAgICAgICAgLG5vbmU6IDAgLy8g5pyq5om+5Yiw562U5qGI5oiW5peg5Yy56YWN562U5qGI5pe25omn6KGM6buY6K6k5pON5L2c77yM6buY6K6k5YWz6ZetCiAgICAgICAgLGp1bXA6IDAgLy8g562U6aKY5a6M5oiQ5ZCO6Ieq5Yqo5YiH5o2i77yM6buY6K6k5byA5ZCvCiAgICAgICAgLGNvcHk6IDAgLy8g6Ieq5Yqo5aSN5Yi2562U5qGI5Yiw5Ymq6LS05p2/77yM5Lmf5Y+v5Lul6YCa6L+H5omL5Yqo54K55Ye75oyJ6ZKu5oiW562U5qGI6L+b6KGM5aSN5Yi277yM6buY6K6k5YWz6ZetCgogICAgICAgIC8vIOmdnuiHquWKqOWMluaTjeS9nAogICAgICAgICxoaWRlOiAwIC8vIOS4jeWKoOi9veetlOahiOaQnOe0ouaPkOekuuahhu+8jOmUruebmOKGkeWSjOKGk+WPr+S7peS4tOaXtuenu+mZpOWSjOWKoOi9ve+8jOm7mOiupOWFs+mXrQogICAgICAgICxzY2FsZTogMCAvLyDlr4zmlofmnKznvJbovpHlmajpq5jluqboh6rliqjmi4nkvLjvvIznlKjkuo7mlofmnKznsbvpopjnm67vvIznrZTpopjmoYbmoLnmja7lhoXlrrnoh6rliqjosIPmlbTlpKflsI/vvIzpu5jorqTlhbPpl60KICAgIH0sCiAgICBfc2VsZiA9IHVuc2FmZVdpbmRvdywKICAgICQgPSBfc2VsZi5qUXVlcnksCiAgICBVRSA9IF9zZWxmLlVFOwoKc2V0dGluZy5ub3RpY2UgPSAn5YWs5ZGK5qCPJzsKR01feG1saHR0cFJlcXVlc3QoewogICAgbWV0aG9kOiAnR0VUJywKICAgIHVybDogJ2h0dHA6Ly9jeC5pY29kZWYuY29tL3VwZGF0ZT9zPXd5bjInLAogICAgdGltZW91dDogc2V0dGluZy50aW1lLAogICAgb25sb2FkOiBmdW5jdGlvbiAoeGhyKSB7CiAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIHZhciBvYmogPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KSB8fCB7fTsKICAgICAgICAgICAgc2V0dGluZy5ub3RpY2UgPSBvYmouaW5qZWN0aW9uOwogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3gtbm90aWNlJykuaW5uZXJIVE1MID0gc2V0dGluZy5ub3RpY2U7CiAgICAgICAgfQogICAgfSwKICAgIG9udGltZW91dDogZnVuY3Rpb24gKCkgewogICAgICAgIHNldHRpbmcubG9vcCAmJiBzZXR0aW5nLmRpdi5jaGlsZHJlbignZGl2OmVxKDApJykuaHRtbChzZXR0aW5nLm92ZXIgKyAn5pyN5Yqh5Zmo6LaF5pe277yM5q2j5Zyo6YeN6K+VLi4uJyk7CiAgICB9Cn0pOwoKU3RyaW5nLnByb3RvdHlwZS50b0NEQiA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvXHMvZywgJycpLnJlcGxhY2UoL1tcdWZmMDEtXHVmZjVlXS9nLCBmdW5jdGlvbihzdHIpIHsKICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShzdHIuY2hhckNvZGVBdCgwKSAtIDY1MjQ4KTsKICAgIH0pLnJlcGxhY2UoL1vigJzigJ1dL2csICciJykucmVwbGFjZSgvW+KAmOKAmV0vZywgIiciKS5yZXBsYWNlKC/jgIIvZywgJy4nKTsKfTsKCi8vIHNldHRpbmcudGltZSArPSBNYXRoLmNlaWwoc2V0dGluZy50aW1lICogTWF0aC5yYW5kb20oKSkgLSBzZXR0aW5nLnRpbWUgLyAyOwpzZXR0aW5nLlRpTXUgPSBbCiAgICBmaWx0ZXJJbWcoJy5DeV9USXRsZSAuY2xlYXJmaXgnKS5yZXBsYWNlKC9ccyrvvIhcZCtcLlxkK+WIhu+8iSQvLCAnJyksCiAgICAkKCdbbmFtZV49dHlwZV06bm90KFtpZF0pJykudmFsKCkgfHwgJy0xJywKICAgICQoJy5jdXIgYScpLnRleHQoKS50cmltKCkgfHwgJ+aXoCcsCiAgICAkKCdsaSAuY2xlYXJmaXgnKS5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZpbHRlckltZyh0aGlzKTsKICAgIH0pCl07CnZhciBtYXhpbWl6ZT0kKAogICAgJzxkaXYgc3R5bGU9ImJvcmRlcjogMnB4IGRhc2hlZCByZ2IoMCwgODUsIDY4KTsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3MCwgMTk2LCAzOCwgMC42KTsgb3ZlcmZsb3cteDogYXV0bztkaXNwbGF5Om5vbmU7Ij7il7s8L2Rpdj4nCikuYXBwZW5kVG8oJ2JvZHknKS5jbGljayhmdW5jdGlvbigpewogICAgJChzZXR0aW5nLmRpdikuY3NzKCJkaXNwbGF5IiwiYmxvY2siKTsKICAgIEdNX3NldFZhbHVlKCJtaW5pbWl6ZSIsIjAiKTsKICAgICQobWF4aW1pemUpLmNzcygiZGlzcGxheSIsIm5vbmUiKTsKfSk7CgpzZXR0aW5nLmRpdiA9ICQoCiAgICAnPGRpdiBzdHlsZT0iYm9yZGVyOiAycHggZGFzaGVkIHJnYigwLCA4NSwgNjgpOyB3aWR0aDogMzMwcHg7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyByaWdodDogMDsgei1pbmRleDogOTk5OTk7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzAsIDE5NiwgMzgsIDAuNik7IG92ZXJmbG93LXg6IGF1dG87Ij4nICsKICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07Ij48L3NwYW4+JyArCiAgICAnPGRpdiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07d2lkdGg6NzAlO2Rpc3BsYXk6IGlubGluZS1ibG9jazsiPuato+WcqOaQnOe0ouetlOahiC4uLjwvZGl2PicrCiAgICAnPGRpdiBzdHlsZT0id2lkdGg6MzAlO2Rpc3BsYXk6IGlubGluZS1ibG9jaztwYWRkaW5nLXJpZ2h0OiAxMHB4O2JveC1zaXppbmc6IGJvcmRlci1ib3g7dGV4dC1hbGlnbjogcmlnaHQ7Ij48bWluaW1pemUgc3R5bGU9IndpZHRoOjIwcHg7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6IDEycHg7Zm9udC13ZWlnaHQ6IGJvbGQ7Y3Vyc29yOiBjb250ZXh0LW1lbnU7dXNlci1zZWxlY3Q6bm9uZTsiPuS4gDwvbWluaW1pemU+PC9kaXY+JyArCiAgICAnPGRpdiBpZD0iY3gtbm90aWNlIiBzdHlsZT0iYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDA7Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDA7bWFyZ2luOiA0cHggMHB4O292ZXJmbG93OiBoaWRkZW47Ij4nICsgc2V0dGluZy5ub3RpY2UgKyAnPC9kaXY+JyArCiAgICAnPGJ1dHRvbiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAxMHB4OyI+5pqC5YGc562U6aKYPC9idXR0b24+JyArCiAgICAnPGJ1dHRvbiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAxMHB4OycgKyAoc2V0dGluZy5qdW1wID8gJycgOiAnIGRpc3BsYXk6IG5vbmU7JykgKyAnIj7ngrnlh7vlgZzmraLmnKzmrKHliIfmjaI8L2J1dHRvbj4nICsKICAgICc8YnV0dG9uIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDEwcHg7Ij7ph43mlrDmn6Xor6I8L2J1dHRvbj4nICsKICAgICc8YnV0dG9uIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDEwcHg7IGRpc3BsYXk6IG5vbmU7Ij7lpI3liLbnrZTmoYg8L2J1dHRvbj4nICsKICAgICc8YnV0dG9uPuetlOmimOivpuaDhTwvYnV0dG9uPicgKwogICAgJzxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6IDIwMHB4OyBvdmVyZmxvdy15OiBhdXRvOyI+JyArCiAgICAnPHRhYmxlIGJvcmRlcj0iMSIgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsiPicgKwogICAgJzx0aGVhZD4nICsKICAgICc8dHI+JyArCiAgICAnPHRoIGNvbHNwYW49IjIiPicgKyAoJCgnI3JhbmRvbU9wdGlvbnMnKS52YWwoKSA9PSAnZmFsc2UnID8gJycgOiAnPGZvbnQgY29sb3I9InJlZCI+5pys5qyh6ICD6K+V55qE6YCJ6aG55Li65Lmx5bqPIOiEmuacrOS8mumAieaLqeato+ehrueahOmAiemhuTwvZm9udD4nKSArICc8L3RoPicgKwogICAgJzwvdHI+JyArCiAgICAnPHRyPicgKwogICAgJzx0aCBzdHlsZT0id2lkdGg6IDYwJTsgbWluLXdpZHRoOiAxMzBweDsiPumimOebru+8iOeCueWHu+WPr+WkjeWItu+8iTwvdGg+JyArCiAgICAnPHRoIHN0eWxlPSJtaW4td2lkdGg6IDEzMHB4OyI+562U5qGI77yI54K55Ye75Y+v5aSN5Yi277yJPC90aD4nICsKICAgICc8L3RyPicgKwogICAgJzwvdGhlYWQ+JyArCiAgICAnPHRmb290IHN0eWxlPSInICsgKHNldHRpbmcuanVtcCA/ICcgZGlzcGxheTogbm9uZTsnIDogJycpICsgJyI+JyArCiAgICAnPHRyPicgKwogICAgJzx0aCBjb2xzcGFuPSIyIj7lt7LlhbPpl60g5pys5qyh6Ieq5Yqo5YiH5o2iPC90aD4nICsKICAgICc8L3RyPicgKwogICAgJzwvdGZvb3Q+JyArCiAgICAnPHRib2R5PicgKwogICAgJzx0cj4nICsKICAgICc8dGQgY29sc3Bhbj0iMiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L3RkPicgKwogICAgJzwvdHI+JyArCiAgICAnPC90Ym9keT4nICsKICAgICc8L3RhYmxlPicgKwogICAgJzwvZGl2PicgKwogICAgJzwvZGl2PicKKS5hcHBlbmRUbygnYm9keScpLm9uKCdjbGljaycsICdidXR0b24sIHRkJywgZnVuY3Rpb24oKSB7CiAgICB2YXIgbnVtID0gc2V0dGluZy4kYnRuLmluZGV4KHRoaXMpOwogICAgaWYgKG51bSA9PSAtMSkgewogICAgICAgIEdNX3NldENsaXBib2FyZCgkKHRoaXMpLnRleHQoKSk7CiAgICB9IGVsc2UgaWYgKG51bSA9PT0gMCkgewogICAgICAgIGlmIChzZXR0aW5nLmxvb3ApIHsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzZXR0aW5nLmxvb3ApOwogICAgICAgICAgICBkZWxldGUgc2V0dGluZy5sb29wOwogICAgICAgICAgICBudW0gPSBbJ+W3suaaguWBnOaQnOe0oicsICfnu6fnu63nrZTpopgnXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZXR0aW5nLmxvb3AgPSBzZXRJbnRlcnZhbChmaW5kVGlNdSwgc2V0dGluZy50aW1lKTsKICAgICAgICAgICAgbnVtID0gWyfmraPlnKjmkJzntKLnrZTmoYguLi4nLCAn5pqC5YGc562U6aKYJ107CiAgICAgICAgfQogICAgICAgIHNldHRpbmcuJGRpdi5odG1sKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gJCh0aGlzKS5kYXRhKCdodG1sJykgfHwgbnVtWzBdOwogICAgICAgIH0pLnJlbW92ZURhdGEoJ2h0bWwnKTsKICAgICAgICAkKHRoaXMpLmh0bWwobnVtWzFdKTsKICAgIH0gZWxzZSBpZiAobnVtID09IDEpIHsKICAgICAgICBzZXR0aW5nLmp1bXAgPSAwOwogICAgICAgIHNldHRpbmcuJGRpdi5odG1sKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzWzFdLnJlcGxhY2UoJ+WNs+WwhuWIh+aNouS4i+S4gOmimCcsICfmnKrlvIDlkK/oh6rliqjliIfmjaInKTsKICAgICAgICB9KTsKICAgICAgICBzZXR0aW5nLmRpdi5maW5kKCd0Zm9vdCcpLmFkZCh0aGlzKS50b2dnbGUoKTsKICAgIH0gZWxzZSBpZiAobnVtID09IDIpIHsKICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKICAgIH0gZWxzZSBpZiAobnVtID09IDMpIHsKICAgICAgICBHTV9zZXRDbGlwYm9hcmQoc2V0dGluZy5kaXYuZmluZCgndGQ6bGFzdCcpLnRleHQoKSk7CiAgICB9IGVsc2UgaWYgKG51bSA9PSA0KSB7CiAgICAgICAgKCQoJy5sZWZ0Q2FyZCAuc2F2ZVlsJylbMF0gfHwgJCgpKS5jbGljaygpOwogICAgfSBlbHNlIGlmIChudW0gPT0gNSkgewogICAgICAgIHNldHRpbmcudGtfbnVtKys7CiAgICAgICAgR01fc2V0VmFsdWUoJ3RrX251bV8xJyxzZXR0aW5nLnRrX251bSk7CiAgICAgICAgc2V0dGluZy50a19udW0gPSBHTV9nZXRWYWx1ZSgndGtfbnVtXzEnKTsKICAgICAgICBjb25zb2xlLmxvZyhzZXR0aW5nLnRrX251bSk7CiAgICAgICAgcGFyZW50LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgfQp9KS5vbignY2xpY2snLCdtaW5pbWl6ZScsIGZ1bmN0aW9uKCkgewogICAgJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5jc3MoImRpc3BsYXkiLCJub25lIik7CiAgICBHTV9zZXRWYWx1ZSgibWluaW1pemUiLCIxIik7CiAgICAkKG1heGltaXplKS5jc3MoImRpc3BsYXkiLCJibG9jayIpOwp9KS5kZXRhY2goc2V0dGluZy5oaWRlID8gJyonIDogJ2h0bWwnKTsKCmlmKEdNX2dldFZhbHVlKCJtaW5pbWl6ZSIpPT0iMSIpewogICAgJChzZXR0aW5nLmRpdikuY3NzKCJkaXNwbGF5Iiwibm9uZSIpOwogICAgJChtYXhpbWl6ZSkuY3NzKCJkaXNwbGF5IiwiYmxvY2siKTsKfQoKc2V0dGluZy4kYnRuID0gc2V0dGluZy5kaXYuY2hpbGRyZW4oJ2J1dHRvbicpOwpzZXR0aW5nLiRkaXYgPSBzZXR0aW5nLmRpdi5jaGlsZHJlbignZGl2OmVxKDApJyk7CgokKGRvY3VtZW50KS5rZXlkb3duKGZ1bmN0aW9uKGV2ZW50KSB7CiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAzOCkgewogICAgICAgIHNldHRpbmcuZGl2LmRldGFjaCgpOwogICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09IDQwKSB7CiAgICAgICAgc2V0dGluZy5kaXYuYXBwZW5kVG8oJ2JvZHknKTsKICAgIH0KfSk7CgppZiAoc2V0dGluZy5zY2FsZSkgX3NlbGYuVUVESVRPUl9DT05GSUcuc2NhbGVFbmFibGVkID0gZmFsc2U7CiQuZWFjaChVRS5pbnN0YW50cywgZnVuY3Rpb24oKSB7CiAgICB2YXIga2V5ID0gdGhpcy5rZXk7CiAgICB0aGlzLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICAgIFVFLmdldEVkaXRvcihrZXkpOwogICAgfSk7Cn0pOwpzZXR0aW5nLmxvb3AgPSBzZXRJbnRlcnZhbChmaW5kVGlNdSwgc2V0dGluZy50aW1lKTsKCmZ1bmN0aW9uIGZpbmRUaU11KCkgewogICAgR01feG1saHR0cFJlcXVlc3QoewogICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgIHVybDogJ2h0dHA6Ly9jeC5pY29kZWYuY29tL3d5bi1uYj92PTInLAogICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLAogICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IHNldHRpbmcudG9rZW4sCiAgICAgICAgfSwKICAgICAgICBkYXRhOiAncXVlc3Rpb249JyArIGVuY29kZVVSSUNvbXBvbmVudChzZXR0aW5nLlRpTXVbMF0pICsgJyZ0eXBlPScgKyBzZXR0aW5nLlRpTXVbMV0gKyAnJmlkPScgKyAkKCcjcGFwZXJJZCcpLnZhbCgpLAogICAgICAgIHRpbWVvdXQ6IHNldHRpbmcudGltZSwKICAgICAgICBvbmxvYWQ6IGZ1bmN0aW9uKHhocikgewogICAgICAgICAgICBpZiAoIXNldHRpbmcubG9vcCkgewogICAgICAgICAgICB9IGVsc2UgaWYgKHhoci5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgICAgICB2YXIgb2JqID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCkgfHwge307CiAgICAgICAgICAgICAgICBvYmouYW5zd2VyID0gb2JqLmRhdGE7CiAgICAgICAgICAgICAgICBpZiAob2JqLmNvZGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYW5zd2VyID0gU3RyaW5nKG9iai5hbnN3ZXIpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPCg/IWltZykvZywgJyZsdDsnKSwKICAgICAgICAgICAgICAgICAgICAgICAgcXVlID0gc2V0dGluZy5UaU11WzBdLm1hdGNoKCc8aW1nJykgPyBzZXR0aW5nLlRpTXVbMF0gOiBzZXR0aW5nLlRpTXVbMF0ucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQnKTsKICAgICAgICAgICAgICAgICAgICBvYmouYW5zd2VyID0gL15odHRwLy50ZXN0KGFuc3dlcikgPyAnPGltZyBzcmM9IicgKyBvYmouYW5zd2VyICsgJyI+JyA6IG9iai5hbnN3ZXI7CiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5kaXYuZmluZCgndGJvZHknKS5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICc8dHI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8dGQgdGl0bGU9IueCueWHu+WPr+WkjeWItiI+JyArIHF1ZSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHRpdGxlPSLngrnlh7vlj6/lpI3liLYiPicgKyAoL15odHRwLy50ZXN0KGFuc3dlcikgPyBvYmouYW5zd2VyIDogJycpICsgYW5zd2VyICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L3RyPicKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHNldHRpbmcuY29weSAmJiBHTV9zZXRDbGlwYm9hcmQob2JqLmFuc3dlcik7CiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy4kYnRuLmVxKDMpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICBmaWxsQW5zd2VyKG9iaik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNldHRpbmcuJGRpdi5odG1sKG9iai5hbnN3ZXIgfHwgJ+acjeWKoeWZqOe5geW/me+8jOato+WcqOmHjeivlS4uLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0dGluZy5kaXYuY2hpbGRyZW4oJ3NwYW4nKS5odG1sKG9iai5tc2cgfHwgJycpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHhoci5zdGF0dXMgPT0gNDAzKSB7CiAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IHhoci5yZXNwb25zZVRleHQuaW5kZXhPZigneycpID8gJ+ivt+axgui/h+S6jumikee5ge+8jOW7uuiurueojeWQjuWGjeivlScgOiAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KS5kYXRhOwogICAgICAgICAgICAgICAgc2V0dGluZy4kZGl2LmRhdGEoJ2h0bWwnLCBodG1sKS5zaWJsaW5ncygnYnV0dG9uOmVxKDApJykuY2xpY2soKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNldHRpbmcuJGRpdi50ZXh0KCfmnI3liqHlmajlvILluLjvvIzmraPlnKjph43or5UuLi4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgb250aW1lb3V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgc2V0dGluZy5sb29wICYmIHNldHRpbmcuJGRpdi50ZXh0KCfmnI3liqHlmajotoXml7bvvIzmraPlnKjph43or5UuLi4nKTsKICAgICAgICB9CiAgICB9KTsKCn0KCmZ1bmN0aW9uIGZpbGxBbnN3ZXIob2JqLCB0aXApIHsKICAgIHZhciAkaW5wdXQgPSAkKCc6cmFkaW8sIDpjaGVja2JveCcsICcuQ3lfdWxCb3R0b20nKSwKICAgICAgICBzdHIgPSBTdHJpbmcob2JqLmFuc3dlcikudG9DREIoKSB8fCBuZXcgRGF0ZSgpLnRvU3RyaW5nKCksCiAgICAgICAgZGF0YSA9IHN0ci5zcGxpdCgvI3xceDAxfFx8LyksCiAgICAgICAgb3B0ID0gb2JqLm9wdCB8fCBzdHIsCiAgICAgICAgYnRuID0gJCgnLnNhdmVZbDpjb250YWlucyjkuIvkuIDpopgpJykub2Zmc2V0KCk7CiAgICAvLyAkaW5wdXQuZmlsdGVyKCc6cmFkaW86Y2hlY2tlZCcpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CiAgICBvYmouY29kZSA+IDAgJiYgJGlucHV0LmVhY2goZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSAndHJ1ZScpIHsKICAgICAgICAgICAgZGF0YS5qb2luKCkubWF0Y2goLyhefCwpKOato+ehrnzmmK985a+5fOKImnxUfHJpKSgsfCQpLykgJiYgdGhpcy5jbGljaygpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZSA9PSAnZmFsc2UnKSB7CiAgICAgICAgICAgIGRhdGEuam9pbigpLm1hdGNoKC8oXnwsKSjplJnor6985ZCmfOmUmXzDl3xGfHdyKSgsfCQpLykgJiYgdGhpcy5jbGljaygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGluZGV4ID0gc2V0dGluZy5UaU11WzNdW2luZGV4XS50b0NEQigpIHx8IG5ldyBEYXRlKCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgaW5kZXggPSAkLmluQXJyYXkoaW5kZXgsIGRhdGEpICsgMSB8fCAoc2V0dGluZy5UaU11WzFdID09ICcxJyAmJiBzdHIuaW5kZXhPZihpbmRleCkgKyAxKTsKICAgICAgICAgICAgQm9vbGVhbihpbmRleCkgPT0gdGhpcy5jaGVja2VkIHx8IHRoaXMuY2xpY2soKTsKICAgICAgICB9CiAgICB9KS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICghL15BP0I/Qz9EP0U/Rj9HPyQvLnRlc3Qob3B0KSkgcmV0dXJuIGZhbHNlOwogICAgICAgIEJvb2xlYW4ob3B0Lm1hdGNoKHRoaXMudmFsdWUpKSA9PSB0aGlzLmNoZWNrZWQgfHwgdGhpcy5jbGljaygpOwogICAgfSk7CiAgICBpZiAoc2V0dGluZy5UaU11WzFdLm1hdGNoKC9eWzAxM10kLykpIHsKICAgICAgICB0aXAgPSAkaW5wdXQuaXMoJzpjaGVja2VkJykgfHwgc2V0dGluZy5ub25lICYmICgoJGlucHV0W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICRpbnB1dC5sZW5ndGgpXSB8fCAkKCkpLmNsaWNrKCksICcgJyk7CiAgICB9IGVsc2UgaWYgKHNldHRpbmcuVGlNdVsxXS5tYXRjaCgvXigyfFs0LTldfDFbMDhdKSQvKSkgewogICAgICAgIGRhdGEgPSBTdHJpbmcob2JqLmFuc3dlcikuc3BsaXQoLyN8XHgwMXxcfC8pOwogICAgICAgIHRpcCA9ICQoJy5DeV91bFRrIHRleHRhcmVhJykuZWFjaChmdW5jdGlvbihpbmRleCkgewogICAgICAgICAgICBpbmRleCA9IChvYmouY29kZSA+IDAgJiYgZGF0YVtpbmRleF0pIHx8ICcnOwogICAgICAgICAgICBVRS5nZXRFZGl0b3IodGhpcy5uYW1lKS5zZXRDb250ZW50KGluZGV4LnRyaW0oKSk7CiAgICAgICAgfSkubGVuZ3RoOwogICAgICAgIHRpcCA9IChvYmouY29kZSA+IDAgJiYgZGF0YS5sZW5ndGggPT0gdGlwKSB8fCBzZXR0aW5nLm5vbmUgJiYgJyAnOwogICAgICAgIHNldHRpbmcubGVuID0gc3RyLmxlbmd0aCAqIHNldHRpbmcudGltZSAvIDEwOwogICAgfQogICAgaWYgKHRpcCA9PSAnICcpIHsKICAgICAgICB0aXAgPSAn5bey5omn6KGM6buY6K6k5pON5L2cJzsKICAgIH0gZWxzZSBpZiAodGlwKSB7CiAgICAgICAgdGlwID0gJ+iHquWKqOetlOmimOW3suWujOaIkCc7CiAgICB9IGVsc2UgaWYgKHRpcCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdGlwID0gJ+ivpemimOWei+S4jeaUr+aMgeiHquWKqOetlOmimCc7CiAgICB9IGVsc2UgewogICAgICAgIHRpcCA9ICfmnKrmib7liLDmnInmlYjnrZTmoYgnOwogICAgfQogICAgaWYgKGJ0bikgewogICAgICAgIHRpcCArPSBzZXR0aW5nLmp1bXAgPyAn77yM5Y2z5bCG5YiH5o2i5LiL5LiA6aKYJyA6ICfvvIzmnKrlvIDlkK/oh6rliqjliIfmjaInOwogICAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoIXNldHRpbmcuanVtcCkgcmV0dXJuOwogICAgICAgICAgICB2YXIgbW91c2UgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKSwKICAgICAgICAgICAgICAgIGFyciA9IFtidG4ubGVmdCArIE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogODApLCBidG4udG9wICsgTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyNildOwogICAgICAgICAgICBtb3VzZS5pbml0TW91c2VFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0VmlldywgMCwgMCwgMCwgYXJyWzBdLCBhcnJbMV0sIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKICAgICAgICAgICAgX3NlbGYuZXZlbnQgPSAkLmV4dGVuZCh0cnVlLCB7fSwgbW91c2UpOwogICAgICAgICAgICBkZWxldGUgX3NlbGYuZXZlbnQuaXNUcnVzdGVkOwogICAgICAgICAgICBfc2VsZi5nZXRUaGVOZXh0UXVlc3Rpb24oMSk7CiAgICAgICAgfSwgc2V0dGluZy5sZW4gfHwgTWF0aC5jZWlsKHNldHRpbmcudGltZSAqIE1hdGgucmFuZG9tKCkpICogMik7CiAgICB9IGVsc2UgewogICAgICAgIHNldHRpbmcuJGJ0bi5lcSgxKS5oaWRlKCk7CiAgICAgICAgdGlwID0gJ+etlOmimOW3suWujOaIkO+8jOivt+iHquihjOafpeeci+etlOmimOivpuaDhSc7CiAgICB9CiAgICBzZXR0aW5nLiRkaXYuZGF0YSgnaHRtbCcsIHRpcCkuc2libGluZ3MoJ2J1dHRvbjplcSgwKScpLmhpZGUoKS5jbGljaygpOwp9CgpmdW5jdGlvbiBmaWx0ZXJJbWcoZG9tKSB7CiAgICByZXR1cm4gJChkb20pLmNsb25lKCkuZmluZCgnaW1nW3NyY10nKS5yZXBsYWNlV2l0aChmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gJCgnPHA+PC9wPicpLnRleHQoJycpOwogICAgfSkuZW5kKCkuZmluZCgnaWZyYW1lW3NyY10nKS5yZXBsYWNlV2l0aChmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gJCgnPHA+PC9wPicpLnRleHQoJycpOwogICAgfSkuZW5kKCkudGV4dCgpLnRyaW0oKTsKfQ=="}],"settings":{"script_blacklist_server":[{"severity":"2","rules":["/https?:\\/\\/userscripts\\.org\\/scripts\\/(source|version)/(102614).*\\.user\\.js/"]},{"name":"SaveFrom.net helper","severity":"3","rules":["/https?:\\/\\/sf-addon\\.com\\/.*\\/.*\\.user\\.js/","/https?:\\/\\/.*\\.sf-helper\\.com\\/.*\\.user\\.js/"],"reason":"Shows advertisements"},{"severity":"8","reasons":{"en":"Used for a phishing compain to compromise users of baon-nutrition.com"},"rules":["/https?:\\/\\/files\\.ulysse\\.travel\\/.*\\.user\\.js/"]}]}}