xiaomianao666

小程序:葫芦侠

Mar 20th, 2024
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@葫芦侠@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6JGr6Iqm5L6gIiwiYXV0aG9yIjoi5pen5be36ZmM5Lq6IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2NvbmZpZy5odG1sJylcbmdldEJhc2VQYXJzZSgpIiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoiI+aOqOiNkCIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iXCIsXCJwYXRoXCI6XCJjb25maWcuaHRtbFwiLFwicnVsZVwiOlwiY29uc3QgZW1wdHkgPSAnaGlrZXI6Ly9lbXB0eSdcXG5jb25zdCBwYWdlID0gTVlfUEFHRTtcXG5cXG5jb25zdCBDb2xvciA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIiNGQTcyOThcXFwiPicgKyB0ZXN0ICsgJzwvZnJvbnQ+JztcXG59XFxuXFxuY29uc3QgU3ByaW5nR3JlZW4gPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gJzxmb250IGNvbG9yPVxcXCIjM0NCMzcxXFxcIj4nICsgdGVzdCArICc8L2Zyb250Pic7XFxufVxcblxcbmNvbnN0IFN0cm9uZyA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPHN0cm9uZz4nICsgdGVzdCArICc8L3N0cm9uZz4nO1xcbn1cXG5cXG5jb25zdCBTbWFsbCA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPHNtYWxsPicgKyB0ZXN0ICsgJzwvc21hbGw+JztcXG59XFxuXFxuY29uc3QgQ2VudGVyID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuIFxcXCI8aDQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz5cXFwiICsgdGVzdCArIFxcXCI8L2g0PlxcXCJcXG59XFxuXFxuY29uc3QgQmlnID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuICc8Yj48Zm9udCBjb2xvcj0jMDAwPicgKyB0ZXN0ICsgJzwvZm9udD48L2I+J1xcbn1cXG5cXG5jb25zdCBHcmF5ID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuIFxcXCI8Zm9udCBjb2xvcj0nZ3JheSc+XFxcIiArIHRlc3QgKyBcXFwiPC9mb250PlxcXCI7XFxufVxcblxcbmNvbnN0IFJpY2ggPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gXFxcIuKAmOKAmOKAmeKAmVxcXCIgKyB0ZXN0O1xcbn1cXG5cXG5jb25zdCBnZXRGb3JtYXQgPSAob2xkVGltZSkgPT4ge1xcbiAgICBjb25zdCBhZGQwID0gKG0pID0+IHtcXG4gICAgICAgIHJldHVybiBtIDwgMTAgPyAnMCcgKyBtIDogbVxcbiAgICB9XFxuICAgIGxldCB0aW1lID0gbmV3IERhdGUob2xkVGltZSk7XFxuICAgIGxldCB5ID0gdGltZS5nZXRGdWxsWWVhcigpO1xcbiAgICBsZXQgbSA9IHRpbWUuZ2V0TW9udGgoKSArIDE7XFxuICAgIGxldCBkID0gdGltZS5nZXREYXRlKCk7XFxuICAgIGxldCBoID0gdGltZS5nZXRIb3VycygpO1xcbiAgICBsZXQgbW0gPSB0aW1lLmdldE1pbnV0ZXMoKTtcXG4gICAgbGV0IHMgPSB0aW1lLmdldFNlY29uZHMoKTtcXG4gICAgcmV0dXJuIHkgKyAnLScgKyBhZGQwKG0pICsgJy0nICsgYWRkMChkKSArICcgJyArIGFkZDAoaCkgKyAnOicgKyBhZGQwKG1tKSArICc6JyArIGFkZDAocyk7XFxufVxcblxcbmlmICghZ2V0TXlWYXIoJ1VVSUQnKSkge1xcbiAgICBjb25zdCBnZW5lcmF0ZVVVSUQgPSAoKSA9PiB7XFxuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXFxuICAgICAgICBsZXQgdXVpZCA9ICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xcbiAgICAgICAgICAgIGxldCByID0gKGQgKyBNYXRoLnJhbmRvbSgpICogMTYpICUgMTYgfCAwIGQgPSBNYXRoLmZsb29yKGQgLyAxNilcXG4gICAgICAgICAgICByZXR1cm4gKGMgPT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KSkudG9TdHJpbmcoMzYpXFxuICAgICAgICB9KVxcbiAgICAgICAgcmV0dXJuIHV1aWRcXG4gICAgfVxcbiAgICBwdXRNeVZhcignVVVJRCcsIGdlbmVyYXRlVVVJRCgpKVxcbn1cXG5cXG5jb25zdCBnZXRTZWFyY2hVcmwgPSAoa3csIGVtcHR5KSA9PiB7XFxuICAgIGxldCBtZW0gPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCLokavoiqbkvqBcXFwiLCBbXSk7XFxuICAgIG1lbSA9IG1lbS5maWx0ZXIoaXQgPT4gaXQgIT0ga3cpO1xcbiAgICBpZiAobWVtLmxlbmd0aCA+PSAxMCkge1xcbiAgICAgICAgbWVtID0gbWVtLnNsaWNlKDEpO1xcbiAgICB9XFxuICAgIG1lbS5wdXNoKGt3KTtcXG4gICAgc3RvcmFnZTAuc2V0SXRlbShcXFwi6JGr6Iqm5L6gXFxcIiwgbWVtKTtcXG4gICAgcmV0dXJuIGVtcHR5O1xcbn07XFxuXFxuaWYgKCFnZXRNeVZhcign5Z+f5ZCNJykpIHtcXG4gICAg5Z+f5ZCNID0gJ2h0dHA6Ly9mbG9vci5odWx1eGlhLmNvbSdcXG4gICAgcHV0TXlWYXIoJ+Wfn+WQjScsIOWfn+WQjSlcXG59XFxuXFxuY29uc3QgZ2V0Q29uZmlnVXJsID0gKHBhdGgsIGJvZHkpID0+IHtcXG4gICAgcGF0aCA9IGdldE15VmFyKCfln5/lkI0nKSArIHBhdGhcXG4gICAgYm9keSA9ICc/cGxhdGZvcm09MiZna2V5PTAwMDAwMCZhcHBfdmVyc2lvbj00LjIuMC4xJnZlcnNpb25jb2RlPTIwMTQxNDY1Jm1hcmtldF9pZD1mbG9vcl9iYWlkdSZfa2V5PScgKyBnZXRJdGVtKCfokavoiqbkvqBUT0tFTicsICcnKSArICcmZGV2aWNlX2NvZGU9JTVCdyU1RDAyJTNBMDAlM0EwMCUzQTAwJTNBMDAlM0EwMC0lNUJpJTVEQTAwMDAwQTQ5RDNCNkEtJTVCcyU1RDg5ODYwMkE1MTMxN0YzMDMwNTgyJnBob25lX2JyYW5kX3R5cGU9T1AnICsgYm9keVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KHBhdGggKyBib2R5LCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2todHRwLzMuOC4xJ1xcbiAgICAgICAgfVxcbiAgICB9KSlcXG59XFxuXFxuY29uc3QgbG9naW5Db25maWdVcmwgPSAocGF0aCwgYm9keSkgPT4ge1xcbiAgICBwYXRoID0gZ2V0TXlWYXIoJ+Wfn+WQjScpICsgcGF0aCArICc/cGxhdGZvcm09MiZna2V5PTAwMDAwMCZhcHBfdmVyc2lvbj00LjIuMC4xJnZlcnNpb25jb2RlPTIwMTQxNDY1Jm1hcmtldF9pZD1mbG9vcl9iYWlkdSZfa2V5PSZkZXZpY2VfY29kZT0lNUJkJTVEJyArIGdldE15VmFyKCdVVUlEJykgKyAnJnBob25lX2JyYW5kX3R5cGU9VU4nXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QocGF0aCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ29raHR0cC8zLjguMSdcXG4gICAgICAgIH0sXFxuICAgICAgICBib2R5OiBib2R5LFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgfSkpXFxufVxcblxcbmNvbnN0IFJlZ0V4cFBhcnNlID0gKHRleHQpID0+IHtcXG4gICAgY2VudGVycyA9IHRleHRcXG4gICAgICAgIC5yZXBsYWNlKC88dGV4dD58PFxcXFwvdGV4dD4vZywgJycpXFxuICAgICAgICAucmVwbGFjZSgvXFxcXG4vZywgJzxicj4nKVxcbiAgICAgICAgLnJlcGxhY2UoLzxpbWFnZT4oLio/KSwuKj88XFxcXC9pbWFnZT4vZywgJzxpbWcgc3JjPVxcXCIkMVxcXCI+JylcXG4gICAgICAgIC5yZXBsYWNlKC8oW15cXFwiXSkoaHR0cFtePFxcXFxzXFxcIl0rKS9nLCAnJDE8YSBocmVmPVxcXCIkMlxcXCI+JDI8L2E+JylcXG4gICAgcmV0dXJuIGNlbnRlcnNcXG59XFxuXFxuY29uc3QgZ2V0Q29uZmlybSA9ICgpID0+IHtcXG4gICAgY29uZmlybSh7XFxuICAgICAgICB0aXRsZTogXFxcIua4hemZpOiusOW9lVxcXCIsXFxuICAgICAgICBjb250ZW50OiBcXFwi56Gu5a6a5aW95LqG5ZCX77yf6K6w5b2V5bCG5Lya5LiN5aSN5a2Y5ZyoflxcXCIsXFxuICAgICAgICBjb25maXJtOiAoKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCLokavoiqbkvqBcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHRvYXN0KCfmuIXpmaTmiJDlip9+Jyk7XFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcbmNvbnN0IGdldEljb25TZWFyY2ggPSAoZCkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLor7fovpPlhaXluJblrZDlkI3np7Av5YWz6ZSu6K+NXFxcIixcXG4gICAgICAgIHVybDogJChlbXB0eSArICdmeXBhZ2UnICsgJyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICBjb25zdCBkID0gW107XFxuICAgICAgICAgICAgcmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvbmZpZy5odG1sXFxcIilcXG4gICAgICAgICAgICBpZiAoZ2V0SXRlbSgn6JGr6Iqm5L6gVE9LRU4nLCAnJykgPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgZ2V0TG9naW5QYXJzZShkKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGdldFNlYXJjaFBhcnNlKGQpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHNldFJlc3VsdChkKVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImljb25fMV9zZWFyY2hcXFwiXFxuICAgIH0pXFxufVxcblxcbmNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxcblxcbmlmIChOdW1iZXIodGltZSAtIGdldEl0ZW0oJ+iRq+iKpuS+oFRPS0VOLVRpbWUnLCAnMCcpKSA+IDI1OTIwMDAwMCkge1xcbiAgICBzZXRJdGVtKCfokavoiqbkvqBUT0tFTi1UaW1lJywgJycgKyB0aW1lICsgJycpXFxuICAgIGNsZWFySXRlbSgn6JGr6Iqm5L6gVE9LRU4nKVxcbn1cXG5cXG5jb25zdCBnZXRMb2dpblVybCA9ICgpID0+IHtcXG4gICAgYWNjb3VudCA9IGdldEl0ZW0oJ+iRq+iKpuS+oOi0puWPtycpXFxuICAgIHBhc3N3b3JkID0gbWQ1KGdldEl0ZW0oJ+iRq+iKpuS+oOWvhueggScpKVxcbiAgICBzaWduID0gJ2FjY291bnQnICsgYWNjb3VudCArICdkZXZpY2VfY29kZVtkXScgKyBnZXRNeVZhcignVVVJRCcpICsgJ3Bhc3N3b3JkJyArIHBhc3N3b3JkICsgJ3ZvaWNlX2NvZGVmYTFjMjhhNWI2MmU3OWMzZTYzZDkwMzBiNjE0MmU0YidcXG4gICAgcGF0aCA9ICcvYWNjb3VudC9sb2dpbi9BTkRST0lELzQuMS44J1xcbiAgICBib2R5ID0gJ2FjY291bnQ9JyArIGFjY291bnQgKyAnJmxvZ2luX3R5cGU9MiZwYXNzd29yZD0nICsgcGFzc3dvcmQgKyAnJnNpZ249JyArIG1kNShzaWduKS50b1VwcGVyQ2FzZSgpXFxuICAgIGRhdGEgPSBsb2dpbkNvbmZpZ1VybChwYXRoLCBib2R5KVxcbiAgICBpZiAoZGF0YS5fa2V5ICE9IG51bGwpIHtcXG4gICAgICAgIGF2YXRhciA9IGRhdGEudXNlci5hdmF0YXJcXG4gICAgICAgIG5pY2sgPSBkYXRhLnVzZXIubmlja1xcbiAgICAgICAgc2V0SXRlbSgn6JGr6Iqm5L6gYXZhdGFyJywgYXZhdGFyKVxcbiAgICAgICAgc2V0SXRlbSgn6JGr6Iqm5L6gbmljaycsIG5pY2spXFxuICAgICAgICB0b2tlbiA9IGRhdGEuX2tleVxcbiAgICAgICAgc2V0SXRlbSgn6JGr6Iqm5L6gVE9LRU4nLCB0b2tlbilcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgIHRvYXN0KFxcXCLnmbvlvZXmiJDlip9cXFwiKVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgY2xlYXJJdGVtKFxcXCLokavoiqbkvqDotKblj7dcXFwiKVxcbiAgICAgICAgY2xlYXJJdGVtKFxcXCLokavoiqbkvqDlr4bnoIFcXFwiKVxcbiAgICAgICAgdG9hc3QoZGF0YS5tc2cpXFxuICAgIH1cXG4gICAgcmV0dXJuIGVtcHR5XFxufVxcblxcbmNvbnN0IGdldEJhc2VQYXJzZSA9ICgpID0+IHtcXG4gICAgbGV0IGlUYWcgPSBnZXRNeVZhcihcXFwiOmlUYWdcXFwiLCBcXFwiXFxcIik7XFxuICAgIGlmIChpVGFnKSB7XFxuICAgICAgICBpVGFnID0gSlNPTi5wYXJzZShpVGFnKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgcGF0aCA9ICcvY2F0ZWdvcnkvbGlzdC9BTkRST0lELzIuMCdcXG4gICAgICAgICAgICBib2R5ID0gJyZpc19oaWRkZW49MSdcXG4gICAgICAgICAgICBpVGFnID0gZ2V0Q29uZmlnVXJsKHBhdGgsIGJvZHkpLmNhdGVnb3JpZXNcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiOmlUYWdcXFwiLCBKU09OLnN0cmluZ2lmeShpVGFnKSk7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgaVRhZyA9IFtdO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGNvbnN0IGQgPSBbXVxcbiAgICBjb25zdCBjb250bGlzdCA9IFtdO1xcbiAgICBjb25zdCB0YWJzID0gaVRhZy5zbGljZSgzLCBpVGFnLmxlbmd0aCAtIDMpXFxuICAgIHRhYnMuZm9yRWFjaCgodGFiLCBpKSA9PiB7XFxuICAgICAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgbmFtZSA9IHRhYi50aXRsZVxcbiAgICAgICAgICAgIGlkID0gdGFiLmNhdGVnb3J5SURcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ+WIhuexuycsICcwJykgPT0gaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGVtcHR5LCBpLCBpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignUGFnZScpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5YiG57G7JywgaSk7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign57G7SUQnLCBpZCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGVtcHR5LCBpLCBpZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnRsaXN0W2ldID0gW107XFxuICAgICAgICBjb250cyA9IHRhYi50YWdzO1xcbiAgICAgICAgY29udHMuZm9yRWFjaChjb250ID0+IHtcXG4gICAgICAgICAgICBjb250bGlzdFtpXS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNvbnQubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBjb250LklEXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9KVxcbiAgICB9KVxcbiAgICBjb25zdCBjYXRlZ29yeSA9IGdldE15VmFyKCfnsbtJRCcsICcnICsgdGFic1swXS5jYXRlZ29yeUlEICsgJycpXFxuICAgIGNvbnN0IGluZGV4ID0gZ2V0TXlWYXIoJ+WIhuexuycsICcwJylcXG4gICAgaWYgKGNvbnRsaXN0W2luZGV4XS5sZW5ndGgpIHtcXG4gICAgICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgY29udGxpc3RbaW5kZXhdLmZvckVhY2goKGNvbnRzbGlzdCwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKGluZGV4LCAnMCcpID09IGkgPyBSaWNoKFN0cm9uZyhDb2xvcihjb250c2xpc3QudGl0bGUpKSkgOiBjb250c2xpc3QudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGluZGV4LCBlbXB0eSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ1BhZ2UnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKGluZGV4LCBpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBlbXB0eSwgaSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICBpZCA9IGNvbnRsaXN0W2luZGV4XVtnZXRNeVZhcihpbmRleCwgJzAnKV0udXJsXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBpZCA9ICcnXFxuICAgIH1cXG4gICAgc29ydFR5cGVQYXJzZShkKVxcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICBnZXRJY29uU2VhcmNoKGQpXFxuICAgICAgICBwYXRoID0gJy9wb3N0L2xpc3QvQU5EUk9JRC80LjEuOCdcXG4gICAgICAgIGJvZHkgPSAnJnN0YXJ0PTAmY291bnQ9MjAmY2F0X2lkPScgKyBjYXRlZ29yeSArICcmdGFnX2lkPScgKyBpZCArICcmc29ydF9ieT0nICsgc29ydFR5cGVcXG4gICAgICAgIGRhdGUgPSBnZXRDb25maWdVcmwocGF0aCwgYm9keSlcXG4gICAgICAgIGxheW91dFBhcnNlKGQsIGRhdGUsIGlkLCBzb3J0VHlwZSwgY2F0ZWdvcnkpXFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KGQpXFxufVxcblxcbmNvbnN0IHNvcnRUeXBlUGFyc2UgPSAoZCkgPT4ge1xcbiAgICDmjpLluo8gPSBbJ+aMieWbnuWkjeaXtumXtCcsICfmjInmnKzniYjnsr7ljY4nLCAn5oyJ5Y+R5biD5pe26Ze0J107XFxuICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pXFxuICAgICAgICDmjpLluo8uZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbSA9PSBnZXRNeVZhcign5o6S5bqPJywg5o6S5bqPWzBdKSA/IFJpY2goU3Ryb25nKENvbG9yKGl0ZW0pKSkgOiBpdGVtLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGl0ZW0sIGVtcHR5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdQYWdlJylcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfmjpLluo8nLCBpdGVtKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0sIGVtcHR5KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIHN3aXRjaCAoZ2V0TXlWYXIoJ+aOkuW6jycsIOaOkuW6j1swXSkpIHtcXG4gICAgICAgIGNhc2Ug5o6S5bqPWzBdOlxcbiAgICAgICAgICAgIHNvcnRUeXBlID0gMFxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSDmjpLluo9bMV06XFxuICAgICAgICAgICAgc29ydFR5cGUgPSAyXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIOaOkuW6j1syXTpcXG4gICAgICAgICAgICBzb3J0VHlwZSA9IDFcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBsYXlvdXRQYXJzZSA9IChkLCBkYXRhLCBpZCwgc29ydFR5cGUsIGNhdGVnb3J5KSA9PiB7XFxuICAgIGFkZExpc3RlbmVyKCdvblJlZnJlc2gnLCAoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKCdQYWdlJylcXG4gICAgfSlcXG4gICAgaWYgKGRhdGEucG9zdHMubGVuZ3RoKSB7XFxuICAgICAgICBkYXRhLnBvc3RzLmZvckVhY2goZGF0ZSA9PiB7XFxuICAgICAgICAgICAgdXNlcklEID0gZGF0ZS51c2VyLnVzZXJJRFxcbiAgICAgICAgICAgIG5pY2sgPSBkYXRlLnVzZXIubmlja1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBuaWNrICsgJ1xcXFx0XFxcXHQnICsgU21hbGwoQ29sb3IoZ2V0Rm9ybWF0KGRhdGUuY3JlYXRlVGltZSkpKSxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogZGF0ZS51c2VyLmF2YXRhcixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGVtcHR5KS5ydWxlKCh1c2VySUQsIG5pY2spID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIE1ZX1BBR0UgPSAxXFxuICAgICAgICAgICAgICAgICAgICBzb3J0VHlwZSA9ICcnXFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSA9ICcnXFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdQYWdlJylcXG4gICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShuaWNrKVxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2NvbmZpZy5odG1sJylcXG4gICAgICAgICAgICAgICAgICAgIHBhdGggPSAnL3Bvc3QvY3JlYXRlL2xpc3QvQU5EUk9JRC80LjEuOCdcXG4gICAgICAgICAgICAgICAgICAgIGJvZHkgPSAnJnN0YXJ0PTAmY291bnQ9MjAmdXNlcl9pZD0nICsgdXNlcklEXFxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gZ2V0Q29uZmlnVXJsKHBhdGgsIGJvZHkpXFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gW11cXG4gICAgICAgICAgICAgICAgICAgIGxheW91dFBhcnNlKGQsIGRhdGUsIHVzZXJJRCwgc29ydFR5cGUsIGNhdGVnb3J5KVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxuICAgICAgICAgICAgICAgIH0sIHVzZXJJRCwgbmljayksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcG9zdElEID0gZGF0ZS5wb3N0SURcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogUmljaChHcmF5KGRhdGUudGl0bGUpKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGVtcHR5ICsgJ2Z5cGFnZScgKyAnI2F1dG9DYWNoZSMjZ2FtZVRoZW1lIycpLnJ1bGUoKHBvc3RJRCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2NvbmZpZy5odG1sJylcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBbXVxcbiAgICAgICAgICAgICAgICAgICAgcGxheVVybFBhcnNlKGQsIHBvc3RJRClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcbiAgICAgICAgICAgICAgICB9LCBwb3N0SUQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgaW1hZ2VzID0gZGF0ZS5kZXRhaWwubWF0Y2goLzxpbWFnZT4oLio/KTxcXFxcL2ltYWdlPi9nKVxcbiAgICAgICAgICAgICAgICBpbWFnZXMgPSBpbWFnZXMubWFwKGl0ZW0gPT4gaXRlbS5tYXRjaCgvPGltYWdlPiguKj8pLC4qPzxcXFxcL2ltYWdlPi8pWzFdKVxcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgaW1hZ2VzID0gZGF0ZS5pbWFnZXNcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKGltYWdlcy5sZW5ndGgpIHtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZXNbaV0gIT0gbnVsbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGltYWdlc1tpXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpbWFnZXNbaV0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMydcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGlmIChnZXRNeVZhcignUGFnZScsICcnKSA9PSAnJykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoKFNtYWxsKFNwcmluZ0dyZWVuKCfvvZ7vvZ7vvZ7liqDovb3mm7TlpJrvvZ7vvZ7vvZ4nKSkpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGRhdGEsIGlkLCBzb3J0VHlwZSwgY2F0ZWdvcnkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIE1ZX1BBR0UgPSAxXFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlKCdoaWtlcjovL3BhZ2UvY29uZmlnLmh0bWwnKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvcnRUeXBlID09ICcnICYmIGNhdGVnb3J5ID09ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9ICcvcG9zdC9jcmVhdGUvbGlzdC9BTkRST0lELzQuMS44J1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSAnJnN0YXJ0PScgKyBnZXRNeVZhcignUGFnZScsIGRhdGEuc3RhcnQpICsgJyZjb3VudD0yMCZ1c2VyX2lkPScgKyBpZFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgPSBnZXRDb25maWdVcmwocGF0aCwgYm9keSlcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9ICcvcG9zdC9saXN0L0FORFJPSUQvNC4xLjgnXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9ICcmc3RhcnQ9JyArIGdldE15VmFyKCdQYWdlJywgZGF0YS5zdGFydCkgKyAnJmNvdW50PTIwJmNhdF9pZD0nICsgY2F0ZWdvcnkgKyAnJnRhZ19pZD0nICsgaWQgKyAnJnNvcnRfYnk9JyArIHNvcnRUeXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGdldENvbmZpZ1VybChwYXRoLCBib2R5KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ1BhZ2UnLCBkYXRlLnN0YXJ0KVxcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IFtdXFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXRQYXJzZShkLCBkYXRlLCBpZCwgc29ydFR5cGUsIGNhdGVnb3J5KVxcbiAgICAgICAgICAgICAgICAgICAgYWRkSXRlbUJlZm9yZSgnUGFnZScgKyBpZCwgZCk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGUucG9zdHMubGVuZ3RoKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKCdQYWdlQ2xzJyArIGlkKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5XFxuICAgICAgICAgICAgICAgIH0sIGRhdGEsIGlkLCBzb3J0VHlwZSwgY2F0ZWdvcnkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdQYWdlJyArIGlkLFxcbiAgICAgICAgICAgICAgICAgICAgY2xzOiAnUGFnZUNscycgKyBpZCxcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU21hbGwoR3JheSgn772e772e772e5oiR5piv5pyJ5bqV57q/55qE772e772e772eJykpKSxcXG4gICAgICAgICAgICB1cmw6IGVtcHR5LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBsYXlvdXRTZWFyY2hQYXJzZSA9IChkLCBkYXRhKSA9PiB7XFxuICAgIGlmIChkYXRhLmxlbmd0aCkge1xcbiAgICAgICAgZGF0YS5mb3JFYWNoKGRhdGUgPT4ge1xcbiAgICAgICAgICAgIHVzZXJJRCA9IGRhdGUudXNlci51c2VySURcXG4gICAgICAgICAgICBuaWNrID0gZGF0ZS51c2VyLm5pY2tcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbmljayArICdcXFxcdFxcXFx0JyArIFNtYWxsKENvbG9yKGdldEZvcm1hdChkYXRlLmNyZWF0ZVRpbWUpKSksXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGRhdGUudXNlci5hdmF0YXIsXFxuICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkucnVsZSgodXNlcklELCBuaWNrKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBNWV9QQUdFID0gMVxcbiAgICAgICAgICAgICAgICAgICAgc29ydFR5cGUgPSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignUGFnZScpXFxuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUobmljaylcXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9jb25maWcuaHRtbCcpXFxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gJy9wb3N0L2NyZWF0ZS9saXN0L0FORFJPSUQvNC4xLjgnXFxuICAgICAgICAgICAgICAgICAgICBib2R5ID0gJyZzdGFydD0wJmNvdW50PTIwJnVzZXJfaWQ9JyArIHVzZXJJRFxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGdldENvbmZpZ1VybChwYXRoLCBib2R5KVxcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IFtdXFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXRQYXJzZShkLCBkYXRlLCB1c2VySUQsIHNvcnRUeXBlLCBjYXRlZ29yeSlcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcbiAgICAgICAgICAgICAgICB9LCB1c2VySUQsIG5pY2spLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBvc3RJRCA9IGRhdGUucG9zdElEXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFJpY2goR3JheShkYXRlLnRpdGxlKSksXFxuICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSArICdmeXBhZ2UnICsgJyNhdXRvQ2FjaGUjI2dhbWVUaGVtZSMnKS5ydWxlKChwb3N0SUQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9jb25maWcuaHRtbCcpXFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gW11cXG4gICAgICAgICAgICAgICAgICAgIHBsYXlVcmxQYXJzZShkLCBwb3N0SUQpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZClcXG4gICAgICAgICAgICAgICAgfSwgcG9zdElEKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGltYWdlcyA9IGRhdGUuZGV0YWlsLm1hdGNoKC88aW1hZ2U+KC4qPyk8XFxcXC9pbWFnZT4vZylcXG4gICAgICAgICAgICAgICAgaW1hZ2VzID0gaW1hZ2VzLm1hcChpdGVtID0+IGl0ZW0ubWF0Y2goLzxpbWFnZT4oLio/KSwuKj88XFxcXC9pbWFnZT4vKVsxXSlcXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgIGltYWdlcyA9IGRhdGUuaW1hZ2VzXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChpbWFnZXMubGVuZ3RoKSB7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VzW2ldICE9IG51bGwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWFnZXNbaV0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaW1hZ2VzW2ldLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBSaWNoKFNtYWxsKEdyYXkoJ++9nu+9nu+9nuaIkeaYr+acieW6lee6v+eahO+9nu+9nu+9nicpKSksXFxuICAgICAgICAgICAgdXJsOiBlbXB0eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuY29uc3QgcGxheVVybFBhcnNlID0gKGQsIHBvc3RJRCkgPT4ge1xcbiAgICBzZXRQYWdlVGl0bGUoJ+ivpuaDhemhtemdoicpXFxuICAgIHBhdGggPSAnL3Bvc3QvZGV0YWlsL0FORFJPSUQvNC4xLjgnXFxuICAgIGJvZHkgPSAnJnBvc3RfaWQ9JyArIHBvc3RJRCArICcmcGFnZV9ubz0nICsgcGFnZSArICcmcGFnZV9zaXplPTIwJmRvYz0xJ1xcbiAgICBkYXRhID0gZ2V0Q29uZmlnVXJsKHBhdGgsIGJvZHkpXFxuICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjA7IGkrKykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgICAgIGNlbnRlcnMgPSBSZWdFeHBQYXJzZShkYXRhLnBvc3QuZGV0YWlsKVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJzxoMT4nICsgZGF0YS5wb3N0LnRpdGxlICsgJzwvaDE+JyArIFNtYWxsKEdyYXkoY2VudGVycykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIHZvaWNlID0gZGF0YS5wb3N0LnZvaWNlXFxuICAgICAgICBpZiAodm9pY2UubGVuZ3RoKSB7XFxuICAgICAgICAgICAgdm9pY2UgPSBKU09OLnBhcnNlKHZvaWNlKVxcbiAgICAgICAgICAgIHZpZGVvID0gdm9pY2UudmlkZW9ob3N0ICsgdm9pY2UudmlkZW9maWRcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJzxwPjxhIGhyZWY9XFxcIicgKyB2aWRlbyArICcjaXNWaWRlbz10cnVlI1xcXCI+W+eCueWHu+afpeeci+inhumikV08L2E+PC9wPicsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICBpbWFnZXMgPSBkYXRhLnBvc3QuaW1hZ2VzXFxuICAgICAgICBpZiAoaW1hZ2VzLmxlbmd0aCkge1xcbiAgICAgICAgICAgIGltYWdlcy5mb3JFYWNoKGltYWdlID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGltYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpbWFnZSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGlmIChkYXRhLmNvbW1lbnRzLmxlbmd0aCkge1xcbiAgICAgICAgaWYgKHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhCaWcoJ+WFqOmDqOivhOiuuiMnICsgZGF0YS5wb3N0LmNvbW1lbnRDb3VudCArICfmnaEnKSkpLFxcbiAgICAgICAgICAgICAgICB1cmw6IGVtcHR5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICBkYXRhLmNvbW1lbnRzLmZvckVhY2goZGF0ZSA9PiB7XFxuICAgICAgICAgICAgcmVmQ29tbWVudCA9IGRhdGUucmVmQ29tbWVudFxcbiAgICAgICAgICAgIGlmIChyZWZDb21tZW50ICE9IG51bGwpIHtcXG4gICAgICAgICAgICAgICAgbmlja0NvbW1lbnQgPSByZWZDb21tZW50Lm5pY2tcXG4gICAgICAgICAgICAgICAgcmVmQ29tbWVudCA9ICflm57lpI1cXFxcdCcgKyBuaWNrQ29tbWVudCArICfvvJo8YnI+JyArIFJlZ0V4cFBhcnNlKHJlZkNvbW1lbnQudGV4dClcXG4gICAgICAgICAgICAgICAgcmVmQ29tbWVudCA9IFxcXCI8YmxvY2txdW90ZT5cXFwiICsgU21hbGwoR3JheShyZWZDb21tZW50KSkgKyBcXFwiPC9ibG9ja3F1b3RlPlxcXCJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZWZDb21tZW50ID0gJydcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaXNUb3AgPSAn6aG2572uJ1xcbiAgICAgICAgICAgIGlmIChkYXRlLmlzVG9wICE9IDEpIGlzVG9wID0gZGF0ZS5zZXEgKyAn5qW8J1xcbiAgICAgICAgICAgIGNlbnRlcnMgPSBSZWdFeHBQYXJzZShkYXRlLnRleHQpXFxuICAgICAgICAgICAgdXNlcklEID0gZGF0ZS51c2VyLnVzZXJJRFxcbiAgICAgICAgICAgIG5pY2sgPSBkYXRlLnVzZXIubmlja1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBuaWNrICsgJ1xcXFx0XFxcXHQnICsgU21hbGwoU3ByaW5nR3JlZW4oaXNUb3ApKSArICdcXFxcdFxcXFx0JyArIFNtYWxsKENvbG9yKGdldEZvcm1hdChkYXRlLmNyZWF0ZVRpbWUpKSksXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGRhdGUudXNlci5hdmF0YXIsXFxuICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkucnVsZSgodXNlcklELCBuaWNrKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBNWV9QQUdFID0gMVxcbiAgICAgICAgICAgICAgICAgICAgc29ydFR5cGUgPSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignUGFnZScpXFxuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUobmljaylcXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9jb25maWcuaHRtbCcpXFxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gJy9wb3N0L2NyZWF0ZS9saXN0L0FORFJPSUQvNC4xLjgnXFxuICAgICAgICAgICAgICAgICAgICBib2R5ID0gJyZzdGFydD0wJmNvdW50PTIwJnVzZXJfaWQ9JyArIHVzZXJJRFxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGdldENvbmZpZ1VybChwYXRoLCBib2R5KVxcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IFtdXFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXRQYXJzZShkLCBkYXRlLCB1c2VySUQsIHNvcnRUeXBlLCBjYXRlZ29yeSlcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcbiAgICAgICAgICAgICAgICB9LCB1c2VySUQsIG5pY2spLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiByZWZDb21tZW50ICsgU21hbGwoR3JheShjZW50ZXJzKSksXFxuICAgICAgICAgICAgICAgIHVybDogZW1wdHksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBpZiAoZGF0ZS5pbWFnZXMubGVuZ3RoKSB7XFxuICAgICAgICAgICAgICAgIGRhdGUuaW1hZ2VzLmZvckVhY2goaW1hZ2UgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGltYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU21hbGwoR3JheSgn772e772e772e5oiR5piv5pyJ5bqV57q/55qE772e772e772eJykpKSxcXG4gICAgICAgICAgICB1cmw6IGVtcHR5LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRMb2dpblBhcnNlID0gKGQpID0+IHtcXG4gICAgc2V0UGFnZVRpdGxlKCfokavoiqbkvqDCt+eZu+W9lScpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBkZXNjOiBcXFwi6K+36L6T5YWl5oKo55qE5omL5py65Y+3L+mCrueusVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJzZXRJdGVtKCfokavoiqbkvqDotKblj7cnLCBpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSwge1xcbiAgICAgICAgZGVzYzogXFxcIuivt+i+k+WFpeaCqOeahOWvhueggVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJzZXRJdGVtKCfokavoiqbkvqDlr4bnoIEnLCBpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6IFxcXCJwYXNzd29yZFxcXCIsXFxuICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogUmljaChDZW50ZXIoXFxcIueZu+W9lei0puWPt1xcXCIpKSxcXG4gICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIE1ZX1BBR0UgPSAxXFxuICAgICAgICAgICAgcmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2NvbmZpZy5odG1sJylcXG4gICAgICAgICAgICByZXR1cm4gZ2V0TG9naW5VcmwoKVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuY29uc3QgZ2V0U2VhcmNoUGFyc2UgPSAoZCkgPT4ge1xcbiAgICBzZXRQYWdlVGl0bGUoJ+iRq+iKpuS+oMK35pCc57SiJylcXG4gICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCLmkJzntKLlhbPplK7or41cXFwiKVxcbiAgICB9KVxcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRJdGVtKCfokavoiqbkvqBuaWNrJyksXFxuICAgICAgICAgICAgcGljX3VybDogZ2V0SXRlbSgn6JGr6Iqm5L6gYXZhdGFyJyksXFxuICAgICAgICAgICAgdXJsOiAkKGVtcHR5KS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLpgIDlh7rnmbvlvZVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXFxcIuehruWumuWlveS6huWQl++8n+W9k+WJjei0puWPt+WwhuS8mumAgOWHun5cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybTogKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgn6JGr6Iqm5L6gVE9LRU4nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KCfpgIDlh7rmiJDlip9+Jyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dFxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn8J+UjScsXFxuICAgICAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeW4luWtkOWQjeensC/lhbPplK7or40nLFxcbiAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoZ2V0U2VhcmNoVXJsLCBlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcign5pCc57Si5YWz6ZSu6K+NJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgIT0gJycpIGdldFNlYXJjaFVybChpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICB9LCBnZXRTZWFyY2hVcmwsIGVtcHR5KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCfmkJzntKLlhbPplK7or40nKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgaWYgKGdldE15VmFyKCfmkJzntKLlhbPplK7or40nKSA9PSAnJykge1xcbiAgICAgICAgaWYgKHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGxldCBtZW0gPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCLokavoiqbkvqBcXFwiLCBbXSk7XFxuICAgICAgICAgICAgaWYgKG1lbS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogUmljaChCaWcoJ/Cfk50g5pCc57Si5Y6G5Y+yJykpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChlbXB0eSwgZ2V0Q29uZmlybSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbmZpcm0oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGVtcHR5LCBnZXRDb25maXJtKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoKENlbnRlcihcXFwi5ZaC5ZaCfui/mOayoeaQnOe0ouWRou+9nijvv6Pilr3vv6PvvZ4pflxcXCIpKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbWVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpdCA9IG1lbVtpXTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaXQsIGdldFNlYXJjaFVybCwgZW1wdHkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5pCc57Si5YWz6ZSu6K+NJywgaXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlYXJjaFVybChpdClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0LCBnZXRTZWFyY2hVcmwsIGVtcHR5KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcGF0aCA9ICcvcG9zdC9zZWFyY2gvQU5EUk9JRC80LjEuOCdcXG4gICAgICAgIGJvZHkgPSAnJnN0YXJ0PScgKyAocGFnZSAtIDEpICogMjAgKyAnJmNvdW50PTIwJmNhdF9pZD00MyZrZXl3b3JkPScgKyBnZXRNeVZhcign5pCc57Si5YWz6ZSu6K+NJykgKyAnJmZsYWc9MCdcXG4gICAgICAgIGRhdGUgPSBnZXRDb25maWdVcmwocGF0aCwgYm9keSlcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgbGF5b3V0U2VhcmNoUGFyc2UoZCwgZGF0ZS5wb3N0cylcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogUmljaChDZW50ZXIoZGF0ZS5tc2cpKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbn1cIn1dIiwiaWNvbiI6IiIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment