求问各位大佬,怎么把魔改版改回原版啊?
设置还不会那
魔断解析导入口令怎么导入?
上善若水 2021-12-11 21:21:13 导入都会,拉取口令是什么?解析怎么导入
导入都会,拉取口令是什么?解析怎么导入
原版拉取没有口令。
离殇王来 2021-12-11 20:44:45 这不直接导入论坛的原版不就行了。不需要什么教程吧。
这不直接导入论坛的原版不就行了。不需要什么教程吧。
上善若水 2021-12-11 12:56:50 同求希望有详细教程
同求希望有详细教程
君且随意 2021-12-11 14:44:24 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@MyFieldᴰⁿ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiTXlGaWVsZOG0sOKBvyIsImF1dGhvciI6IuaWreW/tSIsInVybCI6Imhpa2VyOi8vZW1wdHk/Y2xhc3M9ZnlBbGwiLCJ2ZXJzaW9uIjoxMCwiY29sX3R5cGUiOiJ0ZXh0X2NlbnRlcl8xIiwiY2xhc3NfbmFtZSI6Ik15UGFyc2VTJue8lui+keaWh+S7tiIsImNsYXNzX3VybCI6IiZlZGl0RmlsZSIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxudGhpcy5kID0gW107XG5cbmZ1bmN0aW9uIGp4SXRlbUhlYWQoKSB7XG4gICAgYWRkTGlzdGVuZXIoJ29uUmVmcmVzaCcsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGdldFZhcigna3FqeGNzJywgJzAnKSkge1xuICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICAgICAgcHV0VmFyKCdrcWp4Y3MnLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIHB1dFZhcigna3FqeGNzJywgMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHB1dFZhcigna3FqeGNzJywgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgaWYgKGdldFZhcigna3FqeGNzJykgPT0gMikge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cImNvbG9yOiNGQUNDMkVcIj7op6PmnpDmtYvor5UnLFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciB2aXBVcmwgPSBnZXRWYXIoJ3BsdWdpbkxpbmsnKTtcbiAgICAgICAgICAgICAgICBpZiAodmlwVXJsLnN1YnN0cigwLCA0KSA9PSAnaHR0cCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKHZpcFVybCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeahhuacquWhq1VybOaIluiAheaXoOaViFVybCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIganhOZXdWID0gZ2V0VmFyKCdqeE5ld1YnLCAnJyksXG4gICAgICAgIGp4T2xkViA9IGdldFZhcignanhPbGRWJyk7XG4gICAgdmFyIHZlcnNpb25UaXBzID0ganhOZXdWID09ICcnID8gJ1ZlcnNpb24gJyArIGp4T2xkViA6ICfigJjigJgnICsganhOZXdWICsgJ1xcbuWFiOabtOaWsOWwj+eoi+W6j+eEtuWQjueCueWHu+abtOaWsOiEmuacrOS+nei1luKAmeKAmSc7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxiaWc+PHNwYW4gc3R5bGU9XCJjb2xvcjojMEMwMDAwXCI+TXlQYXJzZVMnLFxuICAgICAgICBkZXNjOiB2ZXJzaW9uVGlwcyxcbiAgICAgICAgdXJsOiAhZ2V0VmFyKCdrcWp4Y3MnKSA/ICd0b2FzdDovL+i/meaYr+agh+mimCcgOiBzZXR1cFBhZ2VzKCforr7nva4nLCAxKSxcbiAgICAgICAgLyogJChbXCLliIfmjaLop6PmnpBcIiwgXCLmo4DmtYvop6PmnpBcIiwgXCLliIfmjaLnmq7ogqRcIl0sIDIpLnNlbGVjdCgoKSA9PiAkKCkucnVsZSgoaykgPT4ge1xuICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZToga1xuICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICAgICAgfSwgaW5wdXQpKSwqL1xuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgbmV3V2luZG93OiB0cnVlLFxuICAgICAgICAgICAgd2luZG93SWQ6IFwiTXlQYXJzZVNcIixcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXG4gICAgfSk7XG4gICAgc3BsaXRMaW5lKCdsaW5lJywgNSk7XG59XG5cbmZ1bmN0aW9uIGN6R3VpZGUoKSB7XG4gICAgcmV0dXJuIFwiaHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFZYTkdWR2RMUkVGUFkzWnpcIlxufVxuXG5mdW5jdGlvbiB0b2ZMaW5rKFVybCkge1xuICAgIHJldHVybiAnaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUoVXJsKSArICcuanMnO1xufVxuXG5mdW5jdGlvbiBlZGl0RmlsZSgpIHtcbiAgICB2YXIgTGlzdHMgPSBbe1xuICAgICAgICB0aXRsZTogJ+eUqOaIt+ino+aekOaWh+S7ticsXG4gICAgICAgIGxpbms6IGZMaW5rcy5wYXJzZXNcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAnUGFyc2VfRG4uanMnLFxuICAgICAgICBsaW5rOiBmTGlua3MuY2pjYWNoZVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfnvZHpobXohJrmnKzku6PnoIEnLFxuICAgICAgICBsaW5rOiBmTGlua3MueDVjYWNoZVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfosIPnlKjot6/nlLHku6PnoIEnLFxuICAgICAgICBsaW5rOiB0b2ZMaW5rKGZMaW5rcy5yb3V0ZVVybClcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn6Kej5p6Q6aG55Li75Luj56CBJyxcbiAgICAgICAgbGluazogdG9mTGluayhmTGlua3MuanhJdFVybClcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn57yW6L6R6Kej5p6Q6aG55Luj56CBJyxcbiAgICAgICAgbGluazogdG9mTGluayhmTGlua3MuX2JqVXJsKVxuICAgIH1dO1xuICAgIGZvciAoaSBvZiBMaXN0cykge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGkudGl0bGUsXG4gICAgICAgICAgICB1cmw6ICdlZGl0RmlsZTovLycgKyBpLmxpbmssXG4gICAgICAgICAgICAvL2NvbF90eXBlOiAndGV4dF8yJ1xuICAgICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWdldFZhcignZWRpdEZpbGVQb3B1cCcpKSB7XG4gICAgICAgIGNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICfmuKnppqjmj5DnpLonLFxuICAgICAgICAgICAgY29udGVudDogJ+atpOmhueWKn+iDveS4jeW7uuiuruWwj+eZveeUqOaIt+S9v+eUqCcsXG4gICAgICAgICAgICBjb25maXJtOiAncHV0VmFyKFwiZWRpdEZpbGVQb3B1cFwiLFwiMVwiKSdcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbnRyeSB7XG4gICAgcmVxdWlyZShcImh0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanNcIik7XG4gICAgc3dpdGNoIChnZXRQYXJhbSgnY2xhc3MnKSkge1xuICAgICAgICBjYXNlIFwiZWRpdEZpbGVcIjpcbiAgICAgICAgICAgIGVkaXRGaWxlKCk7XG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJlcXVpcmUoZkxpbmtzLmp4SXRVcmwpO1xuICAgICAgICAgICAganhJdGVtLmxxRmlsZSgpO1xuICAgICAgICAgICAgUm91dGUuYWRkTGFuSmllKGQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufSBjYXRjaCAoZSkge1xuICAgIGNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogJ+eoi+W6j+WHuumUmeS6hihfIF8pJyxcbiAgICAgICAgY29udGVudDogJ+ihjOaVsDogJyArIGUubGluZU51bWJlciArICdcXG7or6bmg4U6ICcgKyBlLm1lc3NhZ2UsXG4gICAgICAgIGNvbmZpcm06ICdgY29weTovLycgKyBlLm1lc3NhZ2UgKyAnYCdcbiAgICB9KTtcbiAgICBzZXRSZXN1bHQoZCk7XG59Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoi4pGg5o6o6I2QIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6InZhciBrVCA9IFwiaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L2JyYW5jaC9tL3YvXCI7XG52YXIgZkxpbmtzID0ge1xuICAgIGtUOiBrVCxcbiAgICBjakZyb206ICdoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanMnLFxuICAgIHg1RnJvbTogJ2hpa2VyOi8vcGFnZS9QYXJzZV9Ebi5odG1sJyxcbiAgICBfYmpVcmw6IGtUICsgJ2p4SXRlbV9iai5qcycsXG4gICAganhJdFVybDoga1QgKyAnanhJdGVtLmpzJyxcbiAgICByb3V0ZVVybDogJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnLFxuICAgIGNqY2FjaGU6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJyxcbiAgICB4NWNhY2hlOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5odG1sJyxcbiAgICBwbHNjOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9wbHNjUGFyc2UuaHRtbCcsXG4gICAgTGFuSmllOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS94NVBhcnNlTGFuSmllLnR4dCcsXG4gICAgY29uZmlnOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb24nLFxuICAgIHBhcnNlczogJ2hpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uJyxcbiAgICB4NVJvdXRlOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvY2FjaGUvJ1xufTtcbmxldCBmUm91dGUgPSAnaGlrZXI6Ly9maWxlcy9jYWNoZS9maWxlTGlua3PhtLDigb8udHh0JztcbmlmICghZ2V0VmFyKCdqeE9sZFYnKSB8fCBnZXRWYXIoJ2p4TmV3VicsICcwJykgIT09ICcwJykge1xuICAgIHdyaXRlRmlsZShmUm91dGUsICd2YXIgZkxpbmtzPScgKyAkLnN0cmluZ2lmeShmTGlua3MpKTtcbn0iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiUGFyc2VfRG4uaHRtbFwiLFwicGF0aFwiOlwiUGFyc2VfRG4uaHRtbFwiLFwicnVsZVwiOlwiPCFET0NUWVBFIGh0bWw+XFxuPGh0bWw+XFxuPGhlYWQ+XFxuICAgIDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5cXG4gICAgPG1ldGEgbmFtZT1cXFwidmlld3BvcnRcXFwiIGNvbnRlbnQ9XFxcIndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsbWluaW11bS1zY2FsZT0xLG1heGltdW0tc2NhbGU9MSx1c2VyLXNjYWxhYmxlPW5vXFxcIiAvPlxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS92dWVAMi41LjE2L2Rpc3QvdnVlLm1pbi5qc1xcXCI+PC9zY3JpcHQ+XFxuICAgIDxzY3JpcHQgc3JjPVxcXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMi4xLjQubWluLmpzXFxcIj48L3NjcmlwdD5cXG4gICAgPCEtLVxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cDovL2FwcHMuYmRpbWcuY29tL2xpYnMvanF1ZXJ5LzIuMS40L2pxdWVyeS5taW4uanNcXFwiPjwvc2NyaXB0PlxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cDovL2FwcHMuYmRpbWcuY29tL2xpYnMvdnVlLzEuMC4xNC92dWUuanNcXFwiPjwvc2NyaXB0PlxcbiAgICAtLT5cXG4gICAgPHRpdGxlPlBhcnNlX0RuPC90aXRsZT5cXG4gICAgPHN0eWxlIHR5cGU9dGV4dC9jc3M+XFxuICAgICAgICBodG1sLCBib2R5IHtcXG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIH1cXG4gICAgICAgIGJvZHkge1xcbiAgICAgICAgICAgIG1hcmdpbjogMCA1cHggMCA1cHg7XFxuICAgICAgICAgICAgcGFkZGluZzogMCAwcHggMCAwcHg7XFxuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiAjRjlGMERBO1xcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAwO1xcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcXFwiTWljcm9zb2Z0IFlhSGVpXFxcIixcXFwi5a6L5L2TXFxcIixcXFwiU2Vnb2UgVUlcXFwiLCBcXFwiTHVjaWRhIEdyYW5kZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsc2Fucy1zZXJpZiwgRnJlZVNhbnMsIEFyaW1vO1xcbiAgICAgICAgfVxcbiAgICAgICAgI2RpdjJ7XFxuICAgICAgICAgICBtYXJnaW4tdG9wOjM1cHg7XFxuICAgICAgICB9XFxuICAgICAgICAvKui+k+WFpeahhueItuWFg+e0oCovXFxuICAgICAgICBkaXYuYm94IHtcXG4gICAgICAgICAgICBoZWlnaHQ6IDUzcHg7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrovpPlhaXmoYblsLrlr7gqL1xcbiAgICAgICAgZm9ybSB7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgICAgIHdpZHRoOiA5MiU7XFxuICAgICAgICB9XFxuICAgICAgICBpbnB1dCwgbGFiZWwsIC5saWViIGJ1dHRvbiB7XFxuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWtl+S9k+S9jee9riovXFxuICAgICAgICBpbnB1dCB7XFxuICAgICAgICAgICAgd2lkdGg6IDc3JTtcXG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA2NnB4O1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XFxuICAgICAgICB9XFxuICAgICAgICBsYWJlbCB7XFxuICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQzcHg7XFxuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWwj+ahhiovXFxuICAgICAgICAuYmFyIGxhYmVsIHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDA2QjZDO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDU1NSA1NTVweCA1NTVweCA1NTU7XFxuICAgICAgICAgICAgd2lkdGg6IDYwcHg7XFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICAgICAgICAgIGNvbG9yOiAjRjlGMERBO1xcbiAgICAgICAgICAgIHRvcDogMDtcXG4gICAgICAgICAgICBsZWZ0OiAzcHg7XFxuICAgICAgICB9XFxuICAgICAgICAvKui+k+WFpeahhuagt+W8jyovXFxuICAgICAgICAuYmFyIGlucHV0IHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjlGMERBO1xcbiAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICNEMDZCNkM7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrliJfooagqL1xcbiAgICAgICAgLmxpZWIgYnV0dG9uIHtcXG4gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDo0MHB4O1xcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgICAgICB3aWR0aDogMjdweDtcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrliJfooagqL1xcbiAgICAgICAgLmxpZWIgYnV0dG9ue1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDA2QjZDO1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgICAgICAgICBjb2xvcjogI0Y5RjBEQTtcXG4gICAgICAgICAgICB0b3A6IDA7XFxuICAgICAgICAgICAgcmlnaHQ6IDBweDtcXG4gICAgICAgIH1cXG4gICAgICAgIC8q5aS05YOPKi9cXG4gICAgICAgIC5yb3VuZF9pY29ue1xcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICB9XFxuXFxuICAgICAgICAuangtdWwsIC5jai11bCB7XFxuICAgICAgICAgICAgei1pbmRleDogOTk5O1xcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgICAgICAgICB3aWR0aDogNzclO1xcbiAgICAgICAgICAgLy8gbGVmdDogMTAlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLmp4LXVsLCAuY2otdWwge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICAuangtdWwge1xcbiAgICAgICAgICAgIHRvcDogMyU7XFxuICAgICAgICB9XFxuICAgICAgICAuY2otdWwge1xcbiAgICAgICAgICAgIHRvcDogMzAlO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGkge1xcbiAgICAgICAgICAgIGhlaWdodDogMzVweDtcXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDFiZmRhO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7XFxuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzNXB4O1xcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGkge1xcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICBsaTpob3ZlciB7XFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTM5LCAxMzEsIDEyMCwgMC45KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxpW2NoZWNrPVxcXCJ0cnVlXFxcIl0ge1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTM5LCAwLCAwLCAwLjkpO1xcbiAgICAgICAgfVxcblxcbiAgICA8L3N0eWxlPlxcbjwvaGVhZD5cXG5cXG48Ym9keT5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZnVuZ1xcXCI+XFxuICAgICAgICA8YSBzdHlsZT1cXFwiZmxvYXQ6bGVmdDtcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b24gIHN0eWxlPVxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICNjNTQ2NGE7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFwiIG9uY2xpY2s9XFxcImNhbmNlbCgpO1xcXCI+5YWzIOmXrTwvYnV0dG9uPlxcbiAgICAgICAgPC9hPlxcbiAgICAgICAgPGEgc3R5bGU9XFxcImZsb2F0OnJpZ2h0XFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICMwNjgwMDY7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFwib25jbGljaz1cXFwiY2xpY2ttZSgn6YWNIOe9riDlt7Ig5L+dIOWtmCDvvIEnLCAxMDAwLCAn5byAJyk7XFxcIj7kv50g5a2YPC9idXR0b24+IFxcbiAgICAgICAgPC9hPlxcbiAgICA8L2Rpdj5cXG4gICAgPGJyPlxcbiAgICA8ZGl2IGlkPVxcXCJkaXYyXFxcIj48L2Rpdj5cXG4gICAgPGRpdj5cXG4gICAgICAgIDxhIHN0eWxlPVxcXCJmbG9hdDpsZWZ0O21hcmdpbi10b3A6NXB4O1xcXCIgb25jbGljaz1cXFwib3BlbkRuUGFnZSgpXFxcIj5cXG4gICAgICAgICAgICA8aW1nIHNyYz1cXFwiaHR0cHM6Ly9zMy5heDF4LmNvbS8yMDIxLzAyLzIyL3k3d2I5Ty5qcGdcXFwiIGNsYXNzPVxcXCJyb3VuZF9pY29uXFxcIiAgYWx0PVxcXCJcXFwiPlxcbiAgICAgICAgPC9hPlxcbiAgICAgICAgPHNwYW4gc3R5bGU9XFxcImxpbmUtaGVpZ2h0OjYwcHg7Zm9udC1zaXplOjE4cHg7Y29sb3I6IGdyZXk7XFxcIj4mbmJzcDsmbmJzcDvmlq0mbmJzcDvlv7U8L3NwYW4+XFxuICAgICAgICA8YSBzdHlsZT1cXFwiZmxvYXQ6cmlnaHQ7bWFyZ2luLXRvcDo1cHg7XFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uICBzdHlsZT1cXFwiYm9yZGVyOiBub25lO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOiAjMDVCRkM1O3dpZHRoOiAxODVweDtoZWlnaHQ6NDBweDsgZm9udC1zaXplOiAxOHB4O2NvbG9yOiAjRjlGMERBO1xcXCIgb25jbGljaz1cXFwiY2xpY2ttZSgn6YWNIOe9riDlt7Ig5L+dIOWtmCDvvIEnLCAxMDAwLCAn5YWzJyk7XFxcIj7kv53lrZjorr7nva7lubblhbPpl63nlYzpnaI8L2J1dHRvbj5cXG4gICAgICAgIDwvYT5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInpqLWRpdlxcXCI+XFxuICAgICAgICA8dWwgY2xhc3M9XFxcImp4LXVsXFxcIiBzdHlsZT1cXFwiaGVpZ2h0OjQ0NHB4O292ZXJmbG93LXk6YXV0bztcXFwiPlxcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cXFwibXlDaG9pY2VcXFwiIHN0eWxlPVxcXCJ6LWluZGV4Ojk5OTk7cG9zaXRpb246IGZpeGVkO3dpZHRoOjc2LjUlO2NvbG9yOnJlZDtcXFwiPjwvbGk+XFxuICAgICAgICAgICAgPGxpIGNsYXNzPVxcXCJ1c2VsZXNzXFxcIj48L2xpPlxcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cXFwieGxMaXN0XFxcIiB2LWZvcj1cXFwiaXRlbSBpbiBqeERhdGFcXFwiPnt7aXRlbX19PC9saT5cXG4gICAgICAgIDwvdWw+XFxuICAgICAgICA8dWwgY2xhc3M9XFxcImNqLXVsXFxcIj5cXG4gICAgICAgICAgICA8bGkgc3R5bGU9XFxcImJhY2tncm91bmQ6Z3JleTtcXFwiPuivt+mAieaLqeaPkuS7tjwvbGk+XFxuICAgICAgICAgICAgPGxpIHYtZm9yPVxcXCJpdGVtIGluIGNqRGF0YVxcXCI+e3tpdGVtfX08L2xpPlxcbiAgICAgICAgPC91bD5cXG4gICAgPC9kaXY+XFxuPC9ib2R5PlxcbjxzY3JpcHQ+XFxuICAgIHZhciBzZXR0aW5ncyA9IHtcXG4gICAgICAgIHF5OiAneXVuMTcxNycsXFxuICAgICAgICB5azogJ3l1bjE3MTcnLFxcbiAgICAgICAgdHg6ICd5dW4xNzE3JyxcXG4gICAgICAgIG1nOiAneXVuMTcxNycsXFxuICAgICAgICBibDogJ3l1bjE3MTcnLFxcbiAgICAgICAgb3RoOiAneXVuMTcxNycsXFxuICAgICAgICBxanU6ICfpu5jorqQnLFxcbiAgICAgICAgY2o6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJ1xcbiAgICB9O1xcbiAgICBldmFsKGZ5X2JyaWRnZV9hcHAuZ2V0SW50ZXJuYWxKcygpKTtcXG4gICAgXFxuICAgIHZhciBvbGRSb3V0ZSA9IFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXCI7XFxuICAgIHZhciBteVNldCA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gob2xkUm91dGUpO1xcbiAgICBcXG4gICAgdmFyIG5ld1JvdXRlID0gXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcIjtcXG4gICAgdmFyIG5ld0NvbmZpZyA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gobmV3Um91dGUpO1xcbiAgICB2YXIgbXlTZWxlY3QgPSBbXTtcXG4gICAgaWYobmV3Q29uZmlnICE9IFxcXCJcXFwiKXtcXG4gICAgICAgIGV2YWwoXFxcIm5ld0NvbmZpZyA9XFxcIiArIG5ld0NvbmZpZyArIFxcXCI7XFxcIik7XFxuICAgICAgICBzZXR0aW5ncyA9IG5ld0NvbmZpZy5zZXR0aW5ncztcXG4gICAgICAgIHZhciB5Y1RpdGxlID0gWydkZWZhdWx0UGFyc2UnLCAnbWFvc3MnLCAnQ2l0eUlQJywgJ2NhY2hlTTN1OCcsICdwY1VBJywgJ3BhcnNlTGMnLCAnZ3BhcnNlJywgJ25wYXJzZSddO1xcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG5ld0NvbmZpZy50aXRsZS5sZW5ndGg7IGkrKyl7XFxuICAgICAgICAgICAgdmFyIFRpdGxlcyA9IG5ld0NvbmZpZy50aXRsZVtpXTtcXG4gICAgICAgICAgICBpZih5Y1RpdGxlLmluY2x1ZGVzKFRpdGxlcykgPT0gZmFsc2Upe1xcbiAgICAgICAgICAgICAgICBteVNlbGVjdC5wdXNoKFRpdGxlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciBzZlJlZnJlc2ggPSBzZXR0aW5ncy5jajtcXG4gICAgZnVuY3Rpb24gRGlkKGlkKXtcXG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XFxuICAgIH1cXG4gICAgXFxuICAgIGlmKG15U2V0ID09ICcnKXtcXG4gICAgICAgIERpZChcXFwiZGl2MlxcXCIpLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsJ1xcXFxcXG48aDQ+5o+Q56S677yaPGJyPuKRoOazqOaEj+aPkuS7tumAiemhue+8jOayoeacieaJi+WKqOWvvOWFpeaPkuS7tueahOivneS4jeeUqOWKqOWug+OAguWmguiuvue9ruS4jeW9k+S8muWvvOiHtOinhOWImeaXoOazleS9v+eUqO+8jDxicj7op6PlhrPlip7ms5XvvJrop4bnlYzmiZPlvIDmm7TlpJrorr7nva7ihpLmlofku7bnrqHnkIbihpLngrljYWNoZeKGkumVv+aMiU15UGFyc2VTZXQuanNvbuWIoOmZpOaOie+8mzxicj7ikaHlhajlsYDorr7nva7lpoLmnpzpgInmi6nkuobpnZ7pu5jorqTpgqPkuYjlhajpg6jnmoTop6PmnpDkvJrkvb/nlKjov5nkuIDorr7nva7vvIzkuI3mg7Pov5nmoLfnmoTor53or7floavlhaXpu5jorqTvvJs8YnI+4pGi57u/6Imy5L+d5a2Y5oyJ6ZKu5LuF5LuF5L+d5a2Y6YWN572u5LiN5Lya5YWz6Zet6K6+572u6aG16Z2i77yM6YWN572u5ZCO5oOz5L+d5a2Y5bm25YWz6Zet6K6+572u6aG16Z2i55qE6K+d6K+354K56JOd6Imy5oyJ6ZKu77ybPGJyPuKRo+mYheivu+WujOaPkOekuueCueWFs+mXreWKoOi9veWujOaVtOiuvue9rumhtemdou+8jOWmguWHuumXrumimOaXoOazleiHquihjOino+WGs+eCueWbvueJh+i/m+WFpeiuuuWdm+WQkeaIkeWPjemmiOOAgjxicj48L2g0PicpO1xcbiAgICB9XFxuICAgIFxcbiAgICB2YXIgYm94RGF0YSA9IFtcXG4gICAgICAgIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWlhyDlpYdcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwicXlcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xeSxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIumFtyDphbdcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwieWtcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy55ayxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuiFviDohb5cXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwidHhcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy50eCxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaenCDmnpxcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwibWdcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5tZyxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWTqSDlk6lcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwiYmxcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5ibCxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWFtiDku5ZcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwib3RoXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3Mub3RoLFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5YWoIOWxgFxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJxanVcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xanUsXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmj5Ig5Lu2XFxcIixcXG4gICAgICAgICAgICBpZDogXFxcImNqXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3MuY2osXFxuICAgICAgICB9XFxuICAgIF07XFxuXFxuICAgIHZhciBpbnB1dEJveCA9IFxcXCJcXFwiO1xcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgYm94RGF0YS5sZW5ndGg7IGkrKyl7XFxuICAgICAgICBsZXQgYiA9IGJveERhdGFbaV07XFxuICAgICAgICBpbnB1dEJveCArPSAnPGRpdiBjbGFzcz1cXFwiYm94IGJhclxcXCI+XFxcXFxcbiAgICAgICAgICAgIDxmb3JtPlxcXFxcXG4gICAgICAgICAgICAgICAgPGxhYmVsIHR5cGU9XFxcInN1Ym1pdFxcXCI+JyArIGIudGl0bGUgKyAnPC9sYWJlbD5cXFxcXFxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVxcXCJ0ZXh0XFxcIiBwbGFjZWhvbGRlcj1cXFwi6L6T5YWl6Kej5p6Q5ZCN5oiW6ICFVVJMLi4uLi4uXFxcIiB2YWx1ZT1cXFwiJyArIGIudmFsdWUgKyAnXFxcIiBpZD1cXFwiJyArIGIuaWQgKyAnXFxcIj5cXFxcXFxuICAgICAgICAgICAgPC9mb3JtPlxcXFxcXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJsaWViXFxcIj5cXFxcXFxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XFxcIicgKyBiLmlkICsgJ1NlbGVjdFxcXCI+4piwPC9idXR0b24+XFxcXFxcbiAgICAgICAgICAgIDwvZGl2PlxcXFxcXG4gICAgICAgIDwvZGl2Pic7XFxuICAgIH1cXG4gICAgRGlkKFxcXCJkaXYyXFxcIikuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGlucHV0Qm94KTtcXG4gICAgRGlkKFxcXCJjalxcXCIpLnBsYWNlaG9sZGVyID0gXFxcIui+k+WFpeaPkuS7tuWcsOWdgC4uLi4uLlxcXCI7XFxuICAgIERpZChcXFwicWp1XFxcIikucGxhY2Vob2xkZXIgPSBcXFwi5q2k6aG55bu66K6u55WZ56m65oiW6ICF5aGr6buY6K6k5Lik5Liq5a2XXFxcIjtcXG4gICAgXFxuICAgIG5ldyBWdWUoe1xcbiAgICAgICAgZWw6IFxcXCIuemotZGl2XFxcIixcXG4gICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICBqeERhdGE6IG15U2VsZWN0LFxcbiAgICAgICAgICAgIGNqRGF0YTogW1xcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcIiwgXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvZHpIb3VzZS9qcy9zcmNhdXRvLmpzXFxcIiwgXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvUGFyc2UtVjJfRG4uanNcXFwiXVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XFxuICAgICAgICB2YXIgbGVuID0gJCgnLmp4LXVsJykuY2hpbGRyZW4oJ2xpJykubGVuZ3RoO1xcbiAgICAgICAgdmFyIGxlbjIgPSAkKCcuY2otdWwnKS5jaGlsZHJlbignbGknKS5sZW5ndGg7XFxuICAgICAgICAkKCcubGllYiBidXR0b24nKS5jbGljayhmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgaWYoJCgnLmxpZWIgYnV0dG9uJykudGV4dCgpLmluY2x1ZGVzKCfilIEnKSl7XFxuICAgICAgICAgICAgICAgICQoJy5saWViIGJ1dHRvbicpLmNzcygnYmFja2dyb3VuZCcsICcnKTtcXG4gICAgICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykudGV4dCgn4piwJyk7XFxuICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgICQodGhpcykudGV4dCgn4pSBJyk7XFxuICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCdiYWNrZ3JvdW5kJywgJ3JlZCcpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAkKCdsaScpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgdmFyIGlucHV0aWQgPSBcXFwiI1xcXCIgKyB0aGlzLmlkLnNwbGl0KFxcXCJTZWxlY3RcXFwiKVswXTtcXG4gICAgICAgICAgICB2YXIgYXJyID0gJChpbnB1dGlkKS52YWwoKS5zcGxpdCgnLCcpO1xcbiAgICAgICAgICAgIGFyciA9IGFyclswXSA9PSAnJyA/IFtdIDogYXJyO1xcbiAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICBpZiAoaW5wdXRpZCAhPT0gJyNjaicgJiYgJCgnLmNqLXVsJykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJykge1xcbiAgICAgICAgICAgICAgICAkKCcuangtdWwnKS5zbGlkZVRvZ2dsZSgzMDApO1xcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxlbjsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIganhMaXN0ID0gJCgnLmp4LXVsIGxpOm5vdCgubXlDaG9pY2UpJykuZXEoaSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyLmluY2x1ZGVzKGp4TGlzdC50ZXh0KCkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAganhMaXN0LmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGp4TGlzdC51bmJpbmQoJ2NsaWNrJykuY2xpY2soZnVuY3Rpb24oZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cignY2hlY2snKSAhPT0gXFxcInRydWVcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnIudW5zaGlmdCgkKHRoaXMpLnRleHQoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXRpZCkudmFsKGFycik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgYXJyLmxlbmd0aDsgYSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyW2FdID09ICQodGhpcykudGV4dCgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZShhLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYoJCgnLmp4LXVsJykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJyl7XFxuICAgICAgICAgICAgICAgICQoJy5jai11bCcpLnNsaWRlVG9nZ2xlKDIwMCk7XFxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY2pMaXN0ID0gJCgnLmNqLXVsIGxpJykuZXEoaSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoJChpbnB1dGlkKS52YWwoKSA9PSBjakxpc3QudGV4dCgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2pMaXN0LmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNqTGlzdC51bmJpbmQoJ2NsaWNrJykuY2xpY2soZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoJCh0aGlzKS50ZXh0KCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5zaWJsaW5ncygpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgJChkb2N1bWVudCkubm90KCQoJy54bExpc3QnKSkuY2xpY2soZnVuY3Rpb24oZSkge1xcbiAgICAgICAgICAgICQoJy5qeC11bCcpLnNsaWRlVXAoKTtcXG4gICAgICAgICAgICAkKCcuY2otdWwnKS5zbGlkZVVwKCk7XFxuICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykudGV4dCgn4piwJyk7XFxuICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykuY3NzKCdiYWNrZ3JvdW5kJywgJycpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICAkKGZ1bmN0aW9uKCl7XFxuICAgICAgICAgICAgJCgnbGFiZWwnKS5tb3VzZXVwKGZ1bmN0aW9uKCl7XFxuICAgICAgICAgICAgICAgIGxldCBpbnB1dGlkID0gJyMnICsgJCh0aGlzKS5uZXh0KCkuYXR0cignaWQnKTtcXG4gICAgICAgICAgICAgICAgb25lT3JEYmwoaW5wdXRpZCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcXG4gICAgICAgICAgICB2YXIgdGltZXI7XFxuICAgICAgICAgICAgZnVuY3Rpb24gb25lT3JEYmwoaW5wdXRpZCl7XFxuICAgICAgICAgICAgICAgIGNvdW50Kys7XFxuICAgICAgICAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtcXG4gICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ID09IDEpe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnIgPSAkKGlucHV0aWQpLnZhbCgpLnNwbGl0KCcsJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZSgwLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoJycpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XFxuICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDA7XFxuICAgICAgICAgICAgICAgIH0sMjYwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBcXG4gICAgZnVuY3Rpb24gVG9hc3QobXNnLGR1cmF0aW9uKXsgIFxcbiAgICAgICAgZHVyYXRpb249aXNOYU4oZHVyYXRpb24pPzIwMDA6ZHVyYXRpb247ICBcXG4gICAgICAgIHZhciBtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ICBcXG4gICAgICAgIG0uaW5uZXJIVE1MID0gbXNnOyAgXFxuICAgICAgICBtLnN0eWxlLmNzc1RleHQ9XFxcIndpZHRoOjQ1JTsgbWluLXdpZHRoOjE1MHB4OyBiYWNrZ3JvdW5kOiMzMTE7IG9wYWNpdHk6MC42OyBoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OiA0NXB4OyBjb2xvcjojZmZmOyBsaW5lLWhlaWdodDo0NXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czoxMHB4OyBwb3NpdGlvbjpmaXhlZDsgdG9wOjYwJTsgbGVmdDoyNiU7IHotaW5kZXg6OTk5OTk5O1xcXCI7ICBcXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobSk7ICBcXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ICBcXG4gICAgICAgICAgICB2YXIgZCA9IDAuNTsgIFxcbiAgICAgICAgICAgIG0uc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9ICctd2Via2l0LXRyYW5zZm9ybSAnICsgZCArICdzIGVhc2UtaW4sIG9wYWNpdHkgJyArIGQgKyAncyBlYXNlLWluJzsgIFxcbiAgICAgICAgICAgIG0uc3R5bGUub3BhY2l0eSA9ICcwJzsgIFxcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobSkgfSwgZCAqIDEwMDApOyAgXFxuICAgICAgICB9LCBkdXJhdGlvbik7ICBcXG4gICAgfSAgXFxuXFxuICAgIGZ1bmN0aW9uIG9wZW5EblBhZ2UoKXtcXG4gICAgICAgIGZiYS5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBydWxlOiBcXFwiPV5fXj1cXFwiLFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi566h55CG6Kej5p6QXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNcXFwiLFxcbiAgICAgICAgICAgIGZpbmRSdWxlOiBcXFwianM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvanhJdGVtLmpzJyk7anhJdGVtLmp4TGlzdCgpO3NldFJlc3VsdChkKVxcXCJcXG4gICAgICAgIH0pKTtcXG4gICAgfVxcbiAgICBmdW5jdGlvbiBjYW5jZWwoKXtcXG4gICAgICAgIGlmKG15U2V0PT0nJyl7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC53cml0ZUZpbGUob2xkUm91dGUsIEpTT04uc3RyaW5naWZ5KHNldHRpbmdzLCBudWxsLCA0KSk7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5yZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjayhmYWxzZSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgZnVuY3Rpb24gY2xpY2ttZShtc2csZHVyYXRpb24sdGl0bGUpe1xcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGJveERhdGEubGVuZ3RoOyBpKyspe1xcbiAgICAgICAgICAgIGxldCBpZCA9IGJveERhdGFbaV0uaWQ7XFxuICAgICAgICAgICAgc2V0dGluZ3NbaWRdID0gRGlkKGlkKS52YWx1ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmKHNldHRpbmdzLnFqdSA9PSAnJyl7XFxuICAgICAgICAgICAgc2V0dGluZ3MucWp1ID0gJ+m7mOiupCc7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobXlTZWxlY3RbMF0gIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgZXZhbCgndmFyIGJjQ29uZmlnPScgKyBmeV9icmlkZ2VfYXBwLmZldGNoKG5ld1JvdXRlKSk7XFxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihiY0NvbmZpZy5zZXR0aW5ncywgc2V0dGluZ3MpO1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKG5ld1JvdXRlLCAkJCQuc3RyaW5naWZ5KGJjQ29uZmlnKSk7XFxuICAgICAgICB9XFxuICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZShvbGRSb3V0ZSwgJCQkLnN0cmluZ2lmeShzZXR0aW5ncykpO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgVG9hc3QobXNnLGR1cmF0aW9uKTtcXG4gICAgICAgIGlmKHRpdGxlPT1cXFwi5YWzXFxcIil7XFxuICAgICAgICAgICAgaWYoc2ZSZWZyZXNoICE9IERpZChcXFwiY2pcXFwiKS52YWx1ZSl7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjaygpO1xcbiAgICAgICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmJhY2soZmFsc2UpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG48L3NjcmlwdD4gICBcXG48L2h0bWw+XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJQYXJzZV9Ebi5qc1wiLFwicGF0aFwiOlwiUGFyc2VfRG4uanNcIixcInJ1bGVcIjpcIi8vPT09PT09PT09PT095YWN5ZeF6LCD55SoPT09PT09PT09PT09XFxuLy/vvI3vvI3vvI09Xl9ePVxcbnZhciB2ZXJzaW9uID0gXFxcIjMuNS4yNlxcXCI7XFxuXFxudmFyIHBhcnNlUm91dGUgPSAnaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb24nO1xcbnZhciBNeVBhcnNlUyA9IHt9O1xcbnZhciBteVNldCA9IHt9O1xcbmlmIChmaWxlRXhpc3QocGFyc2VSb3V0ZSkpIHtcXG4gICAgZXZhbCgndmFyIHBhcnNlRmlsZSA9JyArIGZldGNoKHBhcnNlUm91dGUpKTtcXG4gICAgTXlQYXJzZVMgPSBwYXJzZUZpbGUuY29kZXM7XFxuICAgIG15U2V0ID0gcGFyc2VGaWxlLnNldHRpbmdzO1xcbn1cXG52YXIgcGFyc2VUaXRsZSA9IFtcXG4gICAgXFxcIvCfpZpcXFwiLFxcbiAgICBcXFwieXVuMTcxN1xcXCIsXFxuICAgIFxcXCJQYW5HdVxcXCIsXFxuICAgIFxcXCJGdVhpbmdcXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9va2p4LmNjLz91cmw9XFxcIixcXG4gICAgXFxcImh0dHBzOi8vangubTN1OC50di9qaWV4aS8/dXJsPVxcXCIsXFxuICAgIFxcXCJodHRwczovL3NiLjVnc2VvLm5ldC8/dXJsPVxcXCJcXG5dO1xcblxcbi8v77yN77yN77yNPV5fXj1cXG5cXG4vL+aOpeWPo+iuvue9ri5cXG5cXG52YXIgc2V0VXJsID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcIjtcXG52YXIgc2V0X3N3aXRjaCA9IHNldFVybDtcXG52YXIgbGF6eSA9IGByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7YXl0bVBhcnNlKGlucHV0KWA7XFxuXFxuLy92YXIgcGFyd2l4ID0gYHZhciB5dXJsPSdodHRwczovL2RhaWxpLm1heWl4aW9uZ2RpLmNuLz91cmw9JztSZWZlcmVyJzogJ2h0dHBzOi8vd3d3Lm1heWl4aW9uZ2RpLmNuL3lzP2lkPSc7J2h0dHBzOi8vZGFpbGkubWF5aXhpb25nZGkuY24vYXBpLnBocCcsICdSZWZlcmVyJzonaHR0cHM6Ly9kYWlsaS5tYXlpeGlvbmdkaS5jbic7XFxuLy8g5YWo5rCRaHR0cHM6Ly9wY3ZpZGVvYWxpeXVuLnRpYW5zaGFuZ3JlbmppYW4ubWd0di5jb20uODh3dW1hLmNvbS8/dXJsPVxcblxcbi8v77yN77yN77yN5aSHIOeUqO+8je+8je+8jVxcbi8qXFxuICog5b2x6KeG5bel5Zy677yaIGh0dHBzOi8veXNnYy5jYy9cXG4gKiDmsZ/muZY6IDU1NeeUteW9sSBodHRwczovL3d3dy41NTVkeTIuY29tL3Bob25lLmh0bWwg772cIDE355yLIGh0dHA6Ly8xN2thbnl5LmNuLyBodHRwOi8vamhqaWV4aS4zMHZyLmNuLz91cmw9IO+9nCBodHRwOi8vYXBpLm1haXppbWFsbC5jb20vaW5kZXgucGhwP3VybD1cXG4gKiDmsZ/muZY6IGh0dHA6Ly93d3cudGlhbnNodXl1bi5uZXQvaW5kZXgucGhwL3ZvZC9wbGF5L2lkLzQ0ODM3Ny9zaWQvMS9uaWQvMS5odG1sXFxuICog5rGf5rmWMjogaHR0cDovLzk4aHlrLmNuL2luZGV4LnBocC92b2QvcGxheS9pZC83Mjg0MS9zaWQvMS9uaWQvMS5odG1sXFxuICog5Lq65Lq66L+3OiBodHRwczovL3ZpcC5zdXNvdS50di9wbGF5ZXIvP3VybD0g772cIGh0dHBzOi8vd3d3Lm1vbWRtLmNjL1xcbiAqIFxcbiAqIHd1aWdlbjogaHR0cHM6Ly93d3cuNWlnZW4uY29tL2RtcGxheWVyL3BsYXllci8/dXJsPVxcbiAqIOW5sumlrSjkurrkurrov7cpOiBodHRwczovL2p4Lnp1aS5jbS8/dXJsPVxcbiAqIGh0dHBzOi8vMi42Nm1vdmllLnRvcC9wbGF5ZXIvP3VybD1cXG4gKiBcXG4gKi9cXG5cXG5cXG52YXIgdG9vbHMgPSB7XFxuICAgIE1ENTogZnVuY3Rpb24oZGF0YSkge1xcbiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5NRDUoZGF0YSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleCk7XFxuICAgIH0sXFxuICAgIEFFUzogZnVuY3Rpb24odGV4dCwga2V5LCBpdiwgaXNFbmNyeXB0KSB7XFxuICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGtleSk7XFxuICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShpdik7XFxuICAgICAgICBpZiAoaXNFbmNyeXB0KSB7XFxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIGtleSwge1xcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICB9KS50b1N0cmluZygpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXG4gICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgIH0sXFxuICAgIC8vYXNjaWlcXG4gICAgbmV4dENoYXJhY3RlcjogZnVuY3Rpb24oYXNjaWlWYWx1ZSwgaykge1xcbiAgICAgICAgdmFyIHMgPSBhc2NpaVZhbHVlO1xcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocyArIGspO1xcbiAgICB9LFxcbiAgICAvL+WHr+aSklxcbiAgICBjYWVzYXJDaXBoZXI6IGZ1bmN0aW9uKHN0cmluZ1ZhbHVlLCBrKSB7XFxuICAgICAgICB2YXIgbmV3U3RyaW5nID0gXFxcIlxcXCI7XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZ1ZhbHVlLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbmV3U3RyaW5nICs9IHRoaXMubmV4dENoYXJhY3RlcihzdHJpbmdWYWx1ZVtpXS5jaGFyQ29kZUF0KCksIGspO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG5ld1N0cmluZztcXG4gICAgfSxcXG4gICAgaGFuZGxlVXJsOiBmdW5jdGlvbih1cmwsIHZpcFVybCkge1xcbiAgICAgICAgaWYgKHVybFswXSA9PSAnLycpIHtcXG4gICAgICAgICAgICB1cmwgPSAnaHR0cHM6JyArIHVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPWh0dHAnKSAhPSAtMSkge1xcbiAgICAgICAgICAgIHVybCA9IHVybC5pbmRleE9mKCcmdXJsPScpID4gLTEgPyB1cmwgOiAnaHR0cCcgKyBkZWNvZGVVUklDb21wb25lbnQodXJsLnNwbGl0KCc9aHR0cCcpWzFdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwubWF0Y2goL21ndHYvZykgPT0gJ21ndHYnKSB7XFxuICAgICAgICAgICAgdXJsID0gdXJsLmluZGV4T2YoJ1VzZXItQWdlbnQnKSA9PSAtMSA/IHVybCArICc7e1VzZXItQWdlbnRAYXBwfScgOiB1cmw7XFxuICAgICAgICB9IGVsc2UgaWYgKHVybC5pbmRleE9mKCcuZmx2JykgIT0gLTEpIHtcXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tVc2VyLUFnZW50QGFwcCYmUmVmZXJlckAnICsgdmlwVXJsICsgJ30nO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHVybCArICcjaXNWaWRlbz10cnVlIyc7XFxuICAgIH1cXG59O1xcblxcbnZhciBQYXJzZVMgPSB7fTtcXG52YXIgb3JpZ2luYWxQYXJzZVMgPSB7XFxuICAgIC8vdXBkYXRlRGF0ZTogdXBkYXRlRGF0ZSxcXG4gICAgQ2l0eUlQOiAnaHR0cDovL3B2LnNvaHUuY29tL2NpdHlqc29uJyxcXG4gICAgcGNVQTogJ1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFzvvJtcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzYnLFxcbiAgICBjYWNoZU0zdTg6IGZ1bmN0aW9uKHZVcmwsIHJlZikge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgbTN1OCA9IGZldGNoKHZVcmwsIHt9KTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvdmlkZW9zLm0zdTgnLCBtM3U4KTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICByZXR1cm4gJ2ZpbGU6Ly8vc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL2NhY2hlL3ZpZGVvcy5tM3U4Iyc7XFxuICAgIH0sXFxuICAgIGRlZmF1bHRQYXJzZTogZnVuY3Rpb24odXJsKSB7XFxuICAgICAgICByZXR1cm4gdXJsO1xcbiAgICB9LFxcbiAgICBtYW9zczogZnVuY3Rpb24oanh1cmwsIHJlZiwga2V5KSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBnZXRWaWRlb0luZm8gPSBmdW5jdGlvbih0ZXh0KSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0b29scy5BRVModGV4dCwga2V5LCBpdik7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAocmVmKSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChodG1sLmluZGV4T2YoJyZidHdhZj0nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICBodG1sID0gcmVxdWVzdChqeHVybCArICcmYnR3YWYnICsgaHRtbC5tYXRjaCgvJmJ0d2FmKC4qPylcXFwiLylbMV0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgaXYgPSBodG1sLnNwbGl0KCdidF90b2tlbiA9IFxcXCInKVsxXS5zcGxpdCgnXFxcIicpWzBdO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5tYXRjaCgvdmFyIGNvbmZpZyA9IHtbXFxcXHNcXFxcU10qP30vKVswXSArICcnKTtcXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybC5zbGljZSgwLCA0KSAhPSAnaHR0cCcpIHtcXG4gICAgICAgICAgICAgICAgY29uZmlnLnVybCA9IGRlY29kZVVSSUNvbXBvbmVudCh0b29scy5BRVMoY29uZmlnLnVybCwgXFxcImR2eVlSUWxuUFJDTWRRU2VcXFwiLCBpdikpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybDtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICByZXR1cm4gJyc7XFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIExMUTogZnVuY3Rpb24oanh1cmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGFwaSA9IGp4dXJsLnNwbGl0KCc/dXJsPScpWzBdICsgXFxcImFwaS5waHBcXFwiO1xcbiAgICAgICAgICAgIHZhciBiNjRpZCA9IGJhc2U2NEVuY29kZShqeHVybC5zcGxpdCgndXJsPScpWzFdKTtcXG4gICAgICAgICAgICB2YXIgcGFyc2VpZCA9IHRvb2xzLmNhZXNhckNpcGhlcihiNjRpZCwgLTEpO1xcbiAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IGp4dXJsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcbiAgICAgICAgICAgICAgICBib2R5OiAndXJsPScgKyBwYXJzZWlkXFxuICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgIHVybCA9IChqc29uLmNvZGUgPT0gMjAwID8gYmFzZTY0RGVjb2RlKHRvb2xzLmNhZXNhckNpcGhlcihqc29uLnVybCwgLTEpKSA6ICcnKTtcXG4gICAgICAgICAgICByZXR1cm4gdXJsO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgUGFuR3U6IGZ1bmN0aW9uKHZpcFVybCwgZGF0YSkge1xcbiAgICAgICAgLyp2YXIgcmVmID0gJ2h0dHBzOi8vd3d3LnBhbmd1amlleGkuY29tLyc7XFxuICAgICAgICB2YXIgcGFyc2UgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpLz91cmw9JyArIHZpcFVybDtcXG4gICAgICAgIHZhciBhcGkgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpL2FwaS5waHAnO1xcbiAgICAgICAgKi9cXG4gICAgICAgIC8vdmFyIHJlZiA9ICdodHRwczovL3hteXN0di5jb20vJztcXG4gICAgICAgIC8vdmFyIHBhcnNlID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9pbmRleC5waHA/dXJsPScgKyB0YWlsVXJsO1xcbiAgICAgICAgLy92YXIgYXBpID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9hcGkucGhwJztcXG4gICAgICAgIHZhciBwYXJzZSA9IFxcXCJodHRwczovL3d3dy5wYW5ndWppZXhpLmNvbS9wYW5ndS8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vcGFuZ3VhcGkubnRyeWpkLm5ldC9wYW5ndTIwMjEvYXBpLnBocFxcXCI7XFxuICAgICAgICBpZiAoZGF0YSkge1xcbiAgICAgICAgICAgIHJlZiA9IGRhdGFbMF07XFxuICAgICAgICAgICAgcGFyc2UgPSBkYXRhWzFdO1xcbiAgICAgICAgICAgIGFwaSA9IGRhdGFbMl07XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgVGltZSA9IChNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkgKiAxKS50b1N0cmluZygpO1xcbiAgICAgICAgdmFyIGpzb24gPSByZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBwYXJzZVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgdmlwVXJsICsgXFxcIiZyZWZlcmVyPVxcXCIgKyBiYXNlNjRFbmNvZGUocGFyc2UpICsgXFxcIiZyZWY9MSZ0aW1lPVxcXCIgKyBUaW1lICsgXFxcIiZ0eXBlPSZvdGhlcj1cXFwiICsgYmFzZTY0RW5jb2RlKHZpcFVybCkgKyBcXFwiJmlvcz0wXFxcIixcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgdXJsID0ganNvblswXSA9PSBcXFwie1xcXCIgPyBKU09OLnBhcnNlKGpzb24pLnVybCA6IFxcXCJcXFwiO1xcbiAgICAgICAgcmV0dXJuIHVybDtcXG4gICAgfSxcXG4gICAgeXVuMTcxNzogZnVuY3Rpb24odmlwVXJsKSB7XFxuICAgICAgICB2YXIgaXN5ayA9IHZpcFVybC5pbmRleE9mKCd5b3VrdScpO1xcbiAgICAgICAgdmFyIHJlZiA9IFxcXCJodHRwczovL3d3dy4xNzE3eXVuLmNvbS9qeC90eS5waHA/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgcGFyc2UgPSBcXFwiaHR0cHM6Ly8xNzE3eXVuLmNvbS56aDE4OC5uZXQvMDgyOC8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vMTcxN3l1bi5jb20uemgxODgubmV0LzEwMDQvLi5pbmRleC4ucGhwXFxcIjtcXG4gICAgICAgIHJldHVybiBpc3lrID09IC0xID8gdGhpcy5QYW5HdSh2aXBVcmwsIFtyZWYsIHBhcnNlLCBhcGldKSA6IHRoaXMuUGFuR3UodmlwVXJsLCBbcmVmICsgJyx2aXA6JywgcGFyc2UgKyAnLHZpcDonLCBhcGldKTtcXG4gICAgfSxcXG4gICAgRnVYaW5nOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgLy9pZih2aXBVcmwuaW5kZXhPZigndi55b3VrdScpIT0tMSl7XFxuICAgICAgICAgICAgLy8gICAgdmlwVXJsID0gKEpTT04ucGFyc2UocmVxdWVzdCh2aXBVcmwsIHtyZWRpcmVjdDpmYWxzZSwgd2l0aEhlYWRlcnM6dHJ1ZX0pKS5oZWFkZXJzLmxvY2F0aW9uICsgJycpLnJlcGxhY2UoL1xcXFw/LiovLCcnKTtcXG4gICAgICAgICAgICAvL31cXG4gICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvP3VybD0nICsgdmlwVXJsO1xcbiAgICAgICAgICAgIHZhciBwYXJzZSA9IHJlZjtcXG4gICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvYXBpdV9meC5waHAnO1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzLlBhbkd1KHZpcFVybCwgW3JlZiwgcGFyc2UsIGFwaV0pO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgXFxcIvCfpZpcXFwiOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIGxldCDkvZzogIVf6KeG55WM55+l5ZCN5aSn5L2sO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBldmFsKGZldGNoKFxcXCJodHRwOi8vcTE2LjIyd2ViLm9yZy9hZXMuanNcXFwiKSk7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHBkZmgoZmV0Y2goXFxcImh0dHA6Ly9xMTYuMjJ3ZWIub3JnL2FwaS5waHBcXFwiKSwgXFxcImJvZHkmJnNjcmlwdCwxJiZIdG1sXFxcIik7XFxuICAgICAgICAgICAgZXZhbCh1cmwucmVwbGFjZShcXFwiZG9jdW1lbnQuXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcImxvY2F0aW9uLlxcXCIsIFxcXCJcXFwiKSk7XFxuICAgICAgICAgICAgdmFyIHBsYXkgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vcTE2LjIyd2ViLm9yZy9hcGkucGhwXFxcIiwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogY29va2llLnNwbGl0KFxcXCI7XFxcIilbMF1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgaW5wdXQsXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgICAgICAgICAgfSkpLnVybDtcXG4gICAgICAgICAgICBpZiAocGxheS5zdGFydHNXaXRoKFxcXCIvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJodHRwczpcXFwiICsgcGxheTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGxheTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxufTtcXG5cXG5PYmplY3QuYXNzaWduKFBhcnNlUywgb3JpZ2luYWxQYXJzZVMsIE15UGFyc2VTKTtcXG4vL+imhueblumhuuW6j++8jOesrOS4ieS4quimhuebluesrOS6jOS4queEtuWQjuimhuebluesrOS4gOS4qlxcblxcblxcbmZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwsIHBhcnNlTmFtZSkge1xcbiAgICB0aGlzLnJlcXVlc3QgPSBmdW5jdGlvbihwYXJhbTAsIHBhcmFtMSwgcGFyYW0yKSB7XFxuICAgICAgICBwYXJhbTEgPSBwYXJhbTEgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTE7XFxuICAgICAgICBpZihpc05hTihwYXJhbTEudGltZW91dCkpIHtcXG4gICAgICAgICAgICBwYXJhbTEudGltZW91dCA9IDI1MDA7XFxuICAgICAgICB9XFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFO1xcbiAgICAgICAgdmFyIHJldFN0ciA9IG1ldGhvZF9yZXF1ZXN0Lmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdGhpcy5mZXRjaCA9IGZ1bmN0aW9uKHBhcmFtMCwgcGFyYW0xLCBwYXJhbTIpIHtcXG4gICAgICAgIHBhcmFtMSA9IHBhcmFtMSA9PSB1bmRlZmluZWQgPyB7fSA6IHBhcmFtMTtcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzID0gcGFyYW0xLmhlYWRlcnMgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTEuaGVhZGVycztcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzWydVc2VyLUFnZW50J10gPSBQQ19VQTtcXG4gICAgICAgIGlmKGlzTmFOKHBhcmFtMS50aW1lb3V0KSkge1xcbiAgICAgICAgICAgIHBhcmFtMS50aW1lb3V0ID0gMjUwMDtcXG4gICAgICAgIH1cXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEU7XFxuICAgICAgICB2YXIgcmV0U3RyID0gbWV0aG9kX2ZldGNoLmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdmFyIGhvc3QgPSB2aXBVcmwubWF0Y2goL1xcXFwuKC4qPylcXFxcLy8pO1xcbiAgICBob3N0ID0gaG9zdCA9PSBudWxsID8gbnVsbCA6IGhvc3RbMV07XFxuICAgIHZhciBub1VybCA9IFxcXCJ0b2FzdDovL+aOpeaUtuWIsOeahOmTvuaOpeS4ujogXFxcIjtcXG4gICAgc3dpdGNoIChteVNldC5xanUpIHtcXG4gICAgICAgIGNhc2UgXFxcIum7mOiupFxcXCI6XFxuICAgICAgICAgICAgc3dpdGNoIChob3N0KSB7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcInFxLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC50eDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCJpcWl5aS5jb21cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gbXlTZXQucXk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwieW91a3UuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0LnlrO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIm1ndHYuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0Lm1nO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcImJpbGliaWxpLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC5ibDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gaG9zdCA9PSBudWxsID8gbm9VcmwgOiBteVNldC5vdGg7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIHN0ciA9IGhvc3QgPT0gbnVsbCA/IG5vVXJsIDogbXlTZXQucWp1O1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxuICAgIGlmIChwYXJzZU5hbWUpIHtcXG4gICAgICAgIHN0ciA9IHBhcnNlTmFtZTtcXG4gICAgfVxcbiAgICBsZXQgbXlDaG9pY2UgPSBzdHIuc3BsaXQoJywnKTtcXG4gICAgbGV0IGxlbiA9IG15Q2hvaWNlLmxlbmd0aDtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgbGV0IG5hbWUgPSBteUNob2ljZVtpXTtcXG4gICAgICAgIGlmICh0eXBlb2YgUGFyc2VTW25hbWVdID09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gUGFyc2VTW25hbWVdKHZpcFVybCk7XFxuICAgICAgICAgICAgbGV0IFJlZyA9IC9tM3U4fG1wNHxodHRwLztcXG4gICAgICAgICAgICBpZiAoaSAhPSBsZW4gLSAxICYmICFSZWcudGVzdCh1cmwpKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhuYW1lICsgJ+ino+aekOWksei0pScpO1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKCFSZWcudGVzdCh1cmwpIHx8IHVybCA9PSB2aXBVcmwpIHtcXG4gICAgICAgICAgICAgICAgbG9nKG5hbWUgKyAn6Kej5p6Q5aSx6LSlJyk7XFxuICAgICAgICAgICAgICAgIHJldHVybiB2aXBVcmw7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2xzLmhhbmRsZVVybCh1cmwsIHZpcFVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgUGFyc2VTW25hbWVdID09ICdzdHJpbmcnKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFBhcnNlUy5kZWZhdWx0UGFyc2UoUGFyc2VTW25hbWVdICsgdmlwVXJsLCB0b29scy5oYW5kbGVVcmwsIG5hbWUpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHIoMCwgNCkgPT0gXFxcImh0dHBcXFwiIHx8IGhvc3QgPT0gbnVsbCA/IG5hbWUgKyB2aXBVcmwgOiBcXFwidG9hc3Q6Ly9cXFwiICsgbmFtZSArIFxcXCIg5LiN5piv55u06ZO+5Lmf5LiN5piv5YWN5ZeFXFxcIjtcXG4gICAgICAgIH1cXG4gICAgfVxcbn07XFxuXFxudmFyIHBsYXlQYXJzZSA9IHtcXG4gICAgcGxheWVyX3h4OiBmdW5jdGlvbihqdXJsLCBMYWJlbCkge1xcbiAgICAgICAgcmV0dXJuICQoanVybCkubGF6eVJ1bGUoKExhYmVsKSA9PiB7XFxuICAgICAgICAgICAgcmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1xcbiAgICAgICAgICAgIHZhciBmYSA9IFsnbGV0dicsICdwcHR2JywgJ3FxJywgJ3lvdWt1JywgJ3FpeWknLCAnaXFpeWknLCAnbWd0dicsICdiaWxpYmlsaScsICdzb2h1JywgJ21pZ3UnLCAnbTE5MDUnLCAndmlwJ107XFxuICAgICAgICAgICAgdmFyIGh0bWwgPSBwYXJzZURvbShyZXF1ZXN0KGlucHV0KSwgTGFiZWwpO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5yZXBsYWNlKC9wbGF5ZXJfLio/PXsvLCAncGRhdGE9eycpKTtcXG4gICAgICAgICAgICBpZiAocGRhdGEudXJsLnN1YnN0cigwLCA4KS5tYXRjaCgvSlQuLkpULi4vKSkge1xcbiAgICAgICAgICAgICAgICBwZGF0YS51cmwgPSBiYXNlNjREZWNvZGUocGRhdGEudXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHBkYXRhLnVybC5zdWJzdHIoMCwgOCkubWF0Y2goLyUuLiUuLi8pKSB7XFxuICAgICAgICAgICAgICAgIHBkYXRhLnVybCA9IHVuZXNjYXBlKHBkYXRhLnVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChmYS5pbmNsdWRlcyhwZGF0YS5mcm9tKSA9PSB0cnVlKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UocGRhdGEudXJsKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGRhdGEudXJsICsgJyNpc1ZpZGVvPXRydWUjJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBMYWJlbClcXG4gICAgfVxcbn07XFxuXFxuZnVuY3Rpb24gc2V0UGFyc2UoKSB7XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuICAgIFJvdXRlLnNldFBhcnNlKCk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIlJvdXRlXCIsXCJydWxlXCI6XCJqczpcXG5yZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuc3dpdGNoIChnZXRQYXJhbShcXFwidHlwZVxcXCIpKSB7XFxuICAgIGNhc2UgXFxcIuiuvue9rlxcXCI6XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICAgICAgUm91dGUuc2V0UGFyc2UoKTtcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIFxcXCLnvJbovpFcXFwiOlxcbiAgICB0aGlzLmQgPSBbXTtcXG4gICByZXF1aXJlKGZMaW5rcy5qeEl0VXJsKTtcXG4gICBqeEl0ZW0uanhMaXN0KCk7XFxuICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgJC5leHBvcnRzID0gUm91dGU7XFxuICAgICAgICBicmVhaztcXG59XFxuXCJ9XSIsImljb24iOiJodHRwczovL3N0YXRpYzAxLmltZ2tyLmNvbS90ZW1wLzIzODEzN2VmYjYxNjQ1ODc5Njg3YTg1MDNmMzRkODkzLnBuZyJ9
海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@MyFieldᴰⁿ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiTXlGaWVsZOG0sOKBvyIsImF1dGhvciI6IuaWreW/tSIsInVybCI6Imhpa2VyOi8vZW1wdHk/Y2xhc3M9ZnlBbGwiLCJ2ZXJzaW9uIjoxMCwiY29sX3R5cGUiOiJ0ZXh0X2NlbnRlcl8xIiwiY2xhc3NfbmFtZSI6Ik15UGFyc2VTJue8lui+keaWh+S7tiIsImNsYXNzX3VybCI6IiZlZGl0RmlsZSIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxudGhpcy5kID0gW107XG5cbmZ1bmN0aW9uIGp4SXRlbUhlYWQoKSB7XG4gICAgYWRkTGlzdGVuZXIoJ29uUmVmcmVzaCcsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGdldFZhcigna3FqeGNzJywgJzAnKSkge1xuICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICAgICAgcHV0VmFyKCdrcWp4Y3MnLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIHB1dFZhcigna3FqeGNzJywgMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHB1dFZhcigna3FqeGNzJywgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgaWYgKGdldFZhcigna3FqeGNzJykgPT0gMikge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cImNvbG9yOiNGQUNDMkVcIj7op6PmnpDmtYvor5UnLFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciB2aXBVcmwgPSBnZXRWYXIoJ3BsdWdpbkxpbmsnKTtcbiAgICAgICAgICAgICAgICBpZiAodmlwVXJsLnN1YnN0cigwLCA0KSA9PSAnaHR0cCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKHZpcFVybCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeahhuacquWhq1VybOaIluiAheaXoOaViFVybCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIganhOZXdWID0gZ2V0VmFyKCdqeE5ld1YnLCAnJyksXG4gICAgICAgIGp4T2xkViA9IGdldFZhcignanhPbGRWJyk7XG4gICAgdmFyIHZlcnNpb25UaXBzID0ganhOZXdWID09ICcnID8gJ1ZlcnNpb24gJyArIGp4T2xkViA6ICfigJjigJgnICsganhOZXdWICsgJ1xcbuWFiOabtOaWsOWwj+eoi+W6j+eEtuWQjueCueWHu+abtOaWsOiEmuacrOS+nei1luKAmeKAmSc7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxiaWc+PHNwYW4gc3R5bGU9XCJjb2xvcjojMEMwMDAwXCI+TXlQYXJzZVMnLFxuICAgICAgICBkZXNjOiB2ZXJzaW9uVGlwcyxcbiAgICAgICAgdXJsOiAhZ2V0VmFyKCdrcWp4Y3MnKSA/ICd0b2FzdDovL+i/meaYr+agh+mimCcgOiBzZXR1cFBhZ2VzKCforr7nva4nLCAxKSxcbiAgICAgICAgLyogJChbXCLliIfmjaLop6PmnpBcIiwgXCLmo4DmtYvop6PmnpBcIiwgXCLliIfmjaLnmq7ogqRcIl0sIDIpLnNlbGVjdCgoKSA9PiAkKCkucnVsZSgoaykgPT4ge1xuICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZToga1xuICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICAgICAgfSwgaW5wdXQpKSwqL1xuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgbmV3V2luZG93OiB0cnVlLFxuICAgICAgICAgICAgd2luZG93SWQ6IFwiTXlQYXJzZVNcIixcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXG4gICAgfSk7XG4gICAgc3BsaXRMaW5lKCdsaW5lJywgNSk7XG59XG5cbmZ1bmN0aW9uIGN6R3VpZGUoKSB7XG4gICAgcmV0dXJuIFwiaHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFZYTkdWR2RMUkVGUFkzWnpcIlxufVxuXG5mdW5jdGlvbiB0b2ZMaW5rKFVybCkge1xuICAgIHJldHVybiAnaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUoVXJsKSArICcuanMnO1xufVxuXG5mdW5jdGlvbiBlZGl0RmlsZSgpIHtcbiAgICB2YXIgTGlzdHMgPSBbe1xuICAgICAgICB0aXRsZTogJ+eUqOaIt+ino+aekOaWh+S7ticsXG4gICAgICAgIGxpbms6IGZMaW5rcy5wYXJzZXNcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAnUGFyc2VfRG4uanMnLFxuICAgICAgICBsaW5rOiBmTGlua3MuY2pjYWNoZVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfnvZHpobXohJrmnKzku6PnoIEnLFxuICAgICAgICBsaW5rOiBmTGlua3MueDVjYWNoZVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfosIPnlKjot6/nlLHku6PnoIEnLFxuICAgICAgICBsaW5rOiB0b2ZMaW5rKGZMaW5rcy5yb3V0ZVVybClcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn6Kej5p6Q6aG55Li75Luj56CBJyxcbiAgICAgICAgbGluazogdG9mTGluayhmTGlua3MuanhJdFVybClcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn57yW6L6R6Kej5p6Q6aG55Luj56CBJyxcbiAgICAgICAgbGluazogdG9mTGluayhmTGlua3MuX2JqVXJsKVxuICAgIH1dO1xuICAgIGZvciAoaSBvZiBMaXN0cykge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGkudGl0bGUsXG4gICAgICAgICAgICB1cmw6ICdlZGl0RmlsZTovLycgKyBpLmxpbmssXG4gICAgICAgICAgICAvL2NvbF90eXBlOiAndGV4dF8yJ1xuICAgICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWdldFZhcignZWRpdEZpbGVQb3B1cCcpKSB7XG4gICAgICAgIGNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICfmuKnppqjmj5DnpLonLFxuICAgICAgICAgICAgY29udGVudDogJ+atpOmhueWKn+iDveS4jeW7uuiuruWwj+eZveeUqOaIt+S9v+eUqCcsXG4gICAgICAgICAgICBjb25maXJtOiAncHV0VmFyKFwiZWRpdEZpbGVQb3B1cFwiLFwiMVwiKSdcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbnRyeSB7XG4gICAgcmVxdWlyZShcImh0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanNcIik7XG4gICAgc3dpdGNoIChnZXRQYXJhbSgnY2xhc3MnKSkge1xuICAgICAgICBjYXNlIFwiZWRpdEZpbGVcIjpcbiAgICAgICAgICAgIGVkaXRGaWxlKCk7XG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJlcXVpcmUoZkxpbmtzLmp4SXRVcmwpO1xuICAgICAgICAgICAganhJdGVtLmxxRmlsZSgpO1xuICAgICAgICAgICAgUm91dGUuYWRkTGFuSmllKGQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufSBjYXRjaCAoZSkge1xuICAgIGNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogJ+eoi+W6j+WHuumUmeS6hihfIF8pJyxcbiAgICAgICAgY29udGVudDogJ+ihjOaVsDogJyArIGUubGluZU51bWJlciArICdcXG7or6bmg4U6ICcgKyBlLm1lc3NhZ2UsXG4gICAgICAgIGNvbmZpcm06ICdgY29weTovLycgKyBlLm1lc3NhZ2UgKyAnYCdcbiAgICB9KTtcbiAgICBzZXRSZXN1bHQoZCk7XG59Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoi4pGg5o6o6I2QIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6InZhciBrVCA9IFwiaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L2JyYW5jaC9tL3YvXCI7XG52YXIgZkxpbmtzID0ge1xuICAgIGtUOiBrVCxcbiAgICBjakZyb206ICdoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanMnLFxuICAgIHg1RnJvbTogJ2hpa2VyOi8vcGFnZS9QYXJzZV9Ebi5odG1sJyxcbiAgICBfYmpVcmw6IGtUICsgJ2p4SXRlbV9iai5qcycsXG4gICAganhJdFVybDoga1QgKyAnanhJdGVtLmpzJyxcbiAgICByb3V0ZVVybDogJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnLFxuICAgIGNqY2FjaGU6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJyxcbiAgICB4NWNhY2hlOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5odG1sJyxcbiAgICBwbHNjOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9wbHNjUGFyc2UuaHRtbCcsXG4gICAgTGFuSmllOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS94NVBhcnNlTGFuSmllLnR4dCcsXG4gICAgY29uZmlnOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb24nLFxuICAgIHBhcnNlczogJ2hpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uJyxcbiAgICB4NVJvdXRlOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvY2FjaGUvJ1xufTtcbmxldCBmUm91dGUgPSAnaGlrZXI6Ly9maWxlcy9jYWNoZS9maWxlTGlua3PhtLDigb8udHh0JztcbmlmICghZ2V0VmFyKCdqeE9sZFYnKSB8fCBnZXRWYXIoJ2p4TmV3VicsICcwJykgIT09ICcwJykge1xuICAgIHdyaXRlRmlsZShmUm91dGUsICd2YXIgZkxpbmtzPScgKyAkLnN0cmluZ2lmeShmTGlua3MpKTtcbn0iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiUGFyc2VfRG4uaHRtbFwiLFwicGF0aFwiOlwiUGFyc2VfRG4uaHRtbFwiLFwicnVsZVwiOlwiPCFET0NUWVBFIGh0bWw+XFxuPGh0bWw+XFxuPGhlYWQ+XFxuICAgIDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5cXG4gICAgPG1ldGEgbmFtZT1cXFwidmlld3BvcnRcXFwiIGNvbnRlbnQ9XFxcIndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsbWluaW11bS1zY2FsZT0xLG1heGltdW0tc2NhbGU9MSx1c2VyLXNjYWxhYmxlPW5vXFxcIiAvPlxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS92dWVAMi41LjE2L2Rpc3QvdnVlLm1pbi5qc1xcXCI+PC9zY3JpcHQ+XFxuICAgIDxzY3JpcHQgc3JjPVxcXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMi4xLjQubWluLmpzXFxcIj48L3NjcmlwdD5cXG4gICAgPCEtLVxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cDovL2FwcHMuYmRpbWcuY29tL2xpYnMvanF1ZXJ5LzIuMS40L2pxdWVyeS5taW4uanNcXFwiPjwvc2NyaXB0PlxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cDovL2FwcHMuYmRpbWcuY29tL2xpYnMvdnVlLzEuMC4xNC92dWUuanNcXFwiPjwvc2NyaXB0PlxcbiAgICAtLT5cXG4gICAgPHRpdGxlPlBhcnNlX0RuPC90aXRsZT5cXG4gICAgPHN0eWxlIHR5cGU9dGV4dC9jc3M+XFxuICAgICAgICBodG1sLCBib2R5IHtcXG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIH1cXG4gICAgICAgIGJvZHkge1xcbiAgICAgICAgICAgIG1hcmdpbjogMCA1cHggMCA1cHg7XFxuICAgICAgICAgICAgcGFkZGluZzogMCAwcHggMCAwcHg7XFxuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiAjRjlGMERBO1xcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAwO1xcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcXFwiTWljcm9zb2Z0IFlhSGVpXFxcIixcXFwi5a6L5L2TXFxcIixcXFwiU2Vnb2UgVUlcXFwiLCBcXFwiTHVjaWRhIEdyYW5kZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsc2Fucy1zZXJpZiwgRnJlZVNhbnMsIEFyaW1vO1xcbiAgICAgICAgfVxcbiAgICAgICAgI2RpdjJ7XFxuICAgICAgICAgICBtYXJnaW4tdG9wOjM1cHg7XFxuICAgICAgICB9XFxuICAgICAgICAvKui+k+WFpeahhueItuWFg+e0oCovXFxuICAgICAgICBkaXYuYm94IHtcXG4gICAgICAgICAgICBoZWlnaHQ6IDUzcHg7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrovpPlhaXmoYblsLrlr7gqL1xcbiAgICAgICAgZm9ybSB7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgICAgIHdpZHRoOiA5MiU7XFxuICAgICAgICB9XFxuICAgICAgICBpbnB1dCwgbGFiZWwsIC5saWViIGJ1dHRvbiB7XFxuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWtl+S9k+S9jee9riovXFxuICAgICAgICBpbnB1dCB7XFxuICAgICAgICAgICAgd2lkdGg6IDc3JTtcXG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA2NnB4O1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XFxuICAgICAgICB9XFxuICAgICAgICBsYWJlbCB7XFxuICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQzcHg7XFxuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWwj+ahhiovXFxuICAgICAgICAuYmFyIGxhYmVsIHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDA2QjZDO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDU1NSA1NTVweCA1NTVweCA1NTU7XFxuICAgICAgICAgICAgd2lkdGg6IDYwcHg7XFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICAgICAgICAgIGNvbG9yOiAjRjlGMERBO1xcbiAgICAgICAgICAgIHRvcDogMDtcXG4gICAgICAgICAgICBsZWZ0OiAzcHg7XFxuICAgICAgICB9XFxuICAgICAgICAvKui+k+WFpeahhuagt+W8jyovXFxuICAgICAgICAuYmFyIGlucHV0IHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjlGMERBO1xcbiAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICNEMDZCNkM7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrliJfooagqL1xcbiAgICAgICAgLmxpZWIgYnV0dG9uIHtcXG4gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDo0MHB4O1xcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgICAgICB3aWR0aDogMjdweDtcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrliJfooagqL1xcbiAgICAgICAgLmxpZWIgYnV0dG9ue1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDA2QjZDO1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgICAgICAgICBjb2xvcjogI0Y5RjBEQTtcXG4gICAgICAgICAgICB0b3A6IDA7XFxuICAgICAgICAgICAgcmlnaHQ6IDBweDtcXG4gICAgICAgIH1cXG4gICAgICAgIC8q5aS05YOPKi9cXG4gICAgICAgIC5yb3VuZF9pY29ue1xcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICB9XFxuXFxuICAgICAgICAuangtdWwsIC5jai11bCB7XFxuICAgICAgICAgICAgei1pbmRleDogOTk5O1xcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgICAgICAgICB3aWR0aDogNzclO1xcbiAgICAgICAgICAgLy8gbGVmdDogMTAlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLmp4LXVsLCAuY2otdWwge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICAuangtdWwge1xcbiAgICAgICAgICAgIHRvcDogMyU7XFxuICAgICAgICB9XFxuICAgICAgICAuY2otdWwge1xcbiAgICAgICAgICAgIHRvcDogMzAlO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGkge1xcbiAgICAgICAgICAgIGhlaWdodDogMzVweDtcXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDFiZmRhO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7XFxuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzNXB4O1xcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGkge1xcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICBsaTpob3ZlciB7XFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTM5LCAxMzEsIDEyMCwgMC45KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxpW2NoZWNrPVxcXCJ0cnVlXFxcIl0ge1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTM5LCAwLCAwLCAwLjkpO1xcbiAgICAgICAgfVxcblxcbiAgICA8L3N0eWxlPlxcbjwvaGVhZD5cXG5cXG48Ym9keT5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZnVuZ1xcXCI+XFxuICAgICAgICA8YSBzdHlsZT1cXFwiZmxvYXQ6bGVmdDtcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b24gIHN0eWxlPVxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICNjNTQ2NGE7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFwiIG9uY2xpY2s9XFxcImNhbmNlbCgpO1xcXCI+5YWzIOmXrTwvYnV0dG9uPlxcbiAgICAgICAgPC9hPlxcbiAgICAgICAgPGEgc3R5bGU9XFxcImZsb2F0OnJpZ2h0XFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICMwNjgwMDY7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFwib25jbGljaz1cXFwiY2xpY2ttZSgn6YWNIOe9riDlt7Ig5L+dIOWtmCDvvIEnLCAxMDAwLCAn5byAJyk7XFxcIj7kv50g5a2YPC9idXR0b24+IFxcbiAgICAgICAgPC9hPlxcbiAgICA8L2Rpdj5cXG4gICAgPGJyPlxcbiAgICA8ZGl2IGlkPVxcXCJkaXYyXFxcIj48L2Rpdj5cXG4gICAgPGRpdj5cXG4gICAgICAgIDxhIHN0eWxlPVxcXCJmbG9hdDpsZWZ0O21hcmdpbi10b3A6NXB4O1xcXCIgb25jbGljaz1cXFwib3BlbkRuUGFnZSgpXFxcIj5cXG4gICAgICAgICAgICA8aW1nIHNyYz1cXFwiaHR0cHM6Ly9zMy5heDF4LmNvbS8yMDIxLzAyLzIyL3k3d2I5Ty5qcGdcXFwiIGNsYXNzPVxcXCJyb3VuZF9pY29uXFxcIiAgYWx0PVxcXCJcXFwiPlxcbiAgICAgICAgPC9hPlxcbiAgICAgICAgPHNwYW4gc3R5bGU9XFxcImxpbmUtaGVpZ2h0OjYwcHg7Zm9udC1zaXplOjE4cHg7Y29sb3I6IGdyZXk7XFxcIj4mbmJzcDsmbmJzcDvmlq0mbmJzcDvlv7U8L3NwYW4+XFxuICAgICAgICA8YSBzdHlsZT1cXFwiZmxvYXQ6cmlnaHQ7bWFyZ2luLXRvcDo1cHg7XFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uICBzdHlsZT1cXFwiYm9yZGVyOiBub25lO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOiAjMDVCRkM1O3dpZHRoOiAxODVweDtoZWlnaHQ6NDBweDsgZm9udC1zaXplOiAxOHB4O2NvbG9yOiAjRjlGMERBO1xcXCIgb25jbGljaz1cXFwiY2xpY2ttZSgn6YWNIOe9riDlt7Ig5L+dIOWtmCDvvIEnLCAxMDAwLCAn5YWzJyk7XFxcIj7kv53lrZjorr7nva7lubblhbPpl63nlYzpnaI8L2J1dHRvbj5cXG4gICAgICAgIDwvYT5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInpqLWRpdlxcXCI+XFxuICAgICAgICA8dWwgY2xhc3M9XFxcImp4LXVsXFxcIiBzdHlsZT1cXFwiaGVpZ2h0OjQ0NHB4O292ZXJmbG93LXk6YXV0bztcXFwiPlxcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cXFwibXlDaG9pY2VcXFwiIHN0eWxlPVxcXCJ6LWluZGV4Ojk5OTk7cG9zaXRpb246IGZpeGVkO3dpZHRoOjc2LjUlO2NvbG9yOnJlZDtcXFwiPjwvbGk+XFxuICAgICAgICAgICAgPGxpIGNsYXNzPVxcXCJ1c2VsZXNzXFxcIj48L2xpPlxcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cXFwieGxMaXN0XFxcIiB2LWZvcj1cXFwiaXRlbSBpbiBqeERhdGFcXFwiPnt7aXRlbX19PC9saT5cXG4gICAgICAgIDwvdWw+XFxuICAgICAgICA8dWwgY2xhc3M9XFxcImNqLXVsXFxcIj5cXG4gICAgICAgICAgICA8bGkgc3R5bGU9XFxcImJhY2tncm91bmQ6Z3JleTtcXFwiPuivt+mAieaLqeaPkuS7tjwvbGk+XFxuICAgICAgICAgICAgPGxpIHYtZm9yPVxcXCJpdGVtIGluIGNqRGF0YVxcXCI+e3tpdGVtfX08L2xpPlxcbiAgICAgICAgPC91bD5cXG4gICAgPC9kaXY+XFxuPC9ib2R5PlxcbjxzY3JpcHQ+XFxuICAgIHZhciBzZXR0aW5ncyA9IHtcXG4gICAgICAgIHF5OiAneXVuMTcxNycsXFxuICAgICAgICB5azogJ3l1bjE3MTcnLFxcbiAgICAgICAgdHg6ICd5dW4xNzE3JyxcXG4gICAgICAgIG1nOiAneXVuMTcxNycsXFxuICAgICAgICBibDogJ3l1bjE3MTcnLFxcbiAgICAgICAgb3RoOiAneXVuMTcxNycsXFxuICAgICAgICBxanU6ICfpu5jorqQnLFxcbiAgICAgICAgY2o6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJ1xcbiAgICB9O1xcbiAgICBldmFsKGZ5X2JyaWRnZV9hcHAuZ2V0SW50ZXJuYWxKcygpKTtcXG4gICAgXFxuICAgIHZhciBvbGRSb3V0ZSA9IFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXCI7XFxuICAgIHZhciBteVNldCA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gob2xkUm91dGUpO1xcbiAgICBcXG4gICAgdmFyIG5ld1JvdXRlID0gXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcIjtcXG4gICAgdmFyIG5ld0NvbmZpZyA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gobmV3Um91dGUpO1xcbiAgICB2YXIgbXlTZWxlY3QgPSBbXTtcXG4gICAgaWYobmV3Q29uZmlnICE9IFxcXCJcXFwiKXtcXG4gICAgICAgIGV2YWwoXFxcIm5ld0NvbmZpZyA9XFxcIiArIG5ld0NvbmZpZyArIFxcXCI7XFxcIik7XFxuICAgICAgICBzZXR0aW5ncyA9IG5ld0NvbmZpZy5zZXR0aW5ncztcXG4gICAgICAgIHZhciB5Y1RpdGxlID0gWydkZWZhdWx0UGFyc2UnLCAnbWFvc3MnLCAnQ2l0eUlQJywgJ2NhY2hlTTN1OCcsICdwY1VBJywgJ3BhcnNlTGMnLCAnZ3BhcnNlJywgJ25wYXJzZSddO1xcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG5ld0NvbmZpZy50aXRsZS5sZW5ndGg7IGkrKyl7XFxuICAgICAgICAgICAgdmFyIFRpdGxlcyA9IG5ld0NvbmZpZy50aXRsZVtpXTtcXG4gICAgICAgICAgICBpZih5Y1RpdGxlLmluY2x1ZGVzKFRpdGxlcykgPT0gZmFsc2Upe1xcbiAgICAgICAgICAgICAgICBteVNlbGVjdC5wdXNoKFRpdGxlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciBzZlJlZnJlc2ggPSBzZXR0aW5ncy5jajtcXG4gICAgZnVuY3Rpb24gRGlkKGlkKXtcXG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XFxuICAgIH1cXG4gICAgXFxuICAgIGlmKG15U2V0ID09ICcnKXtcXG4gICAgICAgIERpZChcXFwiZGl2MlxcXCIpLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsJ1xcXFxcXG48aDQ+5o+Q56S677yaPGJyPuKRoOazqOaEj+aPkuS7tumAiemhue+8jOayoeacieaJi+WKqOWvvOWFpeaPkuS7tueahOivneS4jeeUqOWKqOWug+OAguWmguiuvue9ruS4jeW9k+S8muWvvOiHtOinhOWImeaXoOazleS9v+eUqO+8jDxicj7op6PlhrPlip7ms5XvvJrop4bnlYzmiZPlvIDmm7TlpJrorr7nva7ihpLmlofku7bnrqHnkIbihpLngrljYWNoZeKGkumVv+aMiU15UGFyc2VTZXQuanNvbuWIoOmZpOaOie+8mzxicj7ikaHlhajlsYDorr7nva7lpoLmnpzpgInmi6nkuobpnZ7pu5jorqTpgqPkuYjlhajpg6jnmoTop6PmnpDkvJrkvb/nlKjov5nkuIDorr7nva7vvIzkuI3mg7Pov5nmoLfnmoTor53or7floavlhaXpu5jorqTvvJs8YnI+4pGi57u/6Imy5L+d5a2Y5oyJ6ZKu5LuF5LuF5L+d5a2Y6YWN572u5LiN5Lya5YWz6Zet6K6+572u6aG16Z2i77yM6YWN572u5ZCO5oOz5L+d5a2Y5bm25YWz6Zet6K6+572u6aG16Z2i55qE6K+d6K+354K56JOd6Imy5oyJ6ZKu77ybPGJyPuKRo+mYheivu+WujOaPkOekuueCueWFs+mXreWKoOi9veWujOaVtOiuvue9rumhtemdou+8jOWmguWHuumXrumimOaXoOazleiHquihjOino+WGs+eCueWbvueJh+i/m+WFpeiuuuWdm+WQkeaIkeWPjemmiOOAgjxicj48L2g0PicpO1xcbiAgICB9XFxuICAgIFxcbiAgICB2YXIgYm94RGF0YSA9IFtcXG4gICAgICAgIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWlhyDlpYdcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwicXlcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xeSxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIumFtyDphbdcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwieWtcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy55ayxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuiFviDohb5cXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwidHhcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy50eCxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaenCDmnpxcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwibWdcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5tZyxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWTqSDlk6lcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwiYmxcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5ibCxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWFtiDku5ZcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwib3RoXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3Mub3RoLFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5YWoIOWxgFxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJxanVcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xanUsXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmj5Ig5Lu2XFxcIixcXG4gICAgICAgICAgICBpZDogXFxcImNqXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3MuY2osXFxuICAgICAgICB9XFxuICAgIF07XFxuXFxuICAgIHZhciBpbnB1dEJveCA9IFxcXCJcXFwiO1xcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgYm94RGF0YS5sZW5ndGg7IGkrKyl7XFxuICAgICAgICBsZXQgYiA9IGJveERhdGFbaV07XFxuICAgICAgICBpbnB1dEJveCArPSAnPGRpdiBjbGFzcz1cXFwiYm94IGJhclxcXCI+XFxcXFxcbiAgICAgICAgICAgIDxmb3JtPlxcXFxcXG4gICAgICAgICAgICAgICAgPGxhYmVsIHR5cGU9XFxcInN1Ym1pdFxcXCI+JyArIGIudGl0bGUgKyAnPC9sYWJlbD5cXFxcXFxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVxcXCJ0ZXh0XFxcIiBwbGFjZWhvbGRlcj1cXFwi6L6T5YWl6Kej5p6Q5ZCN5oiW6ICFVVJMLi4uLi4uXFxcIiB2YWx1ZT1cXFwiJyArIGIudmFsdWUgKyAnXFxcIiBpZD1cXFwiJyArIGIuaWQgKyAnXFxcIj5cXFxcXFxuICAgICAgICAgICAgPC9mb3JtPlxcXFxcXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJsaWViXFxcIj5cXFxcXFxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XFxcIicgKyBiLmlkICsgJ1NlbGVjdFxcXCI+4piwPC9idXR0b24+XFxcXFxcbiAgICAgICAgICAgIDwvZGl2PlxcXFxcXG4gICAgICAgIDwvZGl2Pic7XFxuICAgIH1cXG4gICAgRGlkKFxcXCJkaXYyXFxcIikuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGlucHV0Qm94KTtcXG4gICAgRGlkKFxcXCJjalxcXCIpLnBsYWNlaG9sZGVyID0gXFxcIui+k+WFpeaPkuS7tuWcsOWdgC4uLi4uLlxcXCI7XFxuICAgIERpZChcXFwicWp1XFxcIikucGxhY2Vob2xkZXIgPSBcXFwi5q2k6aG55bu66K6u55WZ56m65oiW6ICF5aGr6buY6K6k5Lik5Liq5a2XXFxcIjtcXG4gICAgXFxuICAgIG5ldyBWdWUoe1xcbiAgICAgICAgZWw6IFxcXCIuemotZGl2XFxcIixcXG4gICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICBqeERhdGE6IG15U2VsZWN0LFxcbiAgICAgICAgICAgIGNqRGF0YTogW1xcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcIiwgXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvZHpIb3VzZS9qcy9zcmNhdXRvLmpzXFxcIiwgXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvUGFyc2UtVjJfRG4uanNcXFwiXVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XFxuICAgICAgICB2YXIgbGVuID0gJCgnLmp4LXVsJykuY2hpbGRyZW4oJ2xpJykubGVuZ3RoO1xcbiAgICAgICAgdmFyIGxlbjIgPSAkKCcuY2otdWwnKS5jaGlsZHJlbignbGknKS5sZW5ndGg7XFxuICAgICAgICAkKCcubGllYiBidXR0b24nKS5jbGljayhmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgaWYoJCgnLmxpZWIgYnV0dG9uJykudGV4dCgpLmluY2x1ZGVzKCfilIEnKSl7XFxuICAgICAgICAgICAgICAgICQoJy5saWViIGJ1dHRvbicpLmNzcygnYmFja2dyb3VuZCcsICcnKTtcXG4gICAgICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykudGV4dCgn4piwJyk7XFxuICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgICQodGhpcykudGV4dCgn4pSBJyk7XFxuICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCdiYWNrZ3JvdW5kJywgJ3JlZCcpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAkKCdsaScpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgdmFyIGlucHV0aWQgPSBcXFwiI1xcXCIgKyB0aGlzLmlkLnNwbGl0KFxcXCJTZWxlY3RcXFwiKVswXTtcXG4gICAgICAgICAgICB2YXIgYXJyID0gJChpbnB1dGlkKS52YWwoKS5zcGxpdCgnLCcpO1xcbiAgICAgICAgICAgIGFyciA9IGFyclswXSA9PSAnJyA/IFtdIDogYXJyO1xcbiAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICBpZiAoaW5wdXRpZCAhPT0gJyNjaicgJiYgJCgnLmNqLXVsJykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJykge1xcbiAgICAgICAgICAgICAgICAkKCcuangtdWwnKS5zbGlkZVRvZ2dsZSgzMDApO1xcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxlbjsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIganhMaXN0ID0gJCgnLmp4LXVsIGxpOm5vdCgubXlDaG9pY2UpJykuZXEoaSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyLmluY2x1ZGVzKGp4TGlzdC50ZXh0KCkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAganhMaXN0LmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGp4TGlzdC51bmJpbmQoJ2NsaWNrJykuY2xpY2soZnVuY3Rpb24oZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cignY2hlY2snKSAhPT0gXFxcInRydWVcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnIudW5zaGlmdCgkKHRoaXMpLnRleHQoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXRpZCkudmFsKGFycik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgYXJyLmxlbmd0aDsgYSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyW2FdID09ICQodGhpcykudGV4dCgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZShhLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYoJCgnLmp4LXVsJykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJyl7XFxuICAgICAgICAgICAgICAgICQoJy5jai11bCcpLnNsaWRlVG9nZ2xlKDIwMCk7XFxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY2pMaXN0ID0gJCgnLmNqLXVsIGxpJykuZXEoaSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoJChpbnB1dGlkKS52YWwoKSA9PSBjakxpc3QudGV4dCgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2pMaXN0LmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNqTGlzdC51bmJpbmQoJ2NsaWNrJykuY2xpY2soZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoJCh0aGlzKS50ZXh0KCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5zaWJsaW5ncygpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgJChkb2N1bWVudCkubm90KCQoJy54bExpc3QnKSkuY2xpY2soZnVuY3Rpb24oZSkge1xcbiAgICAgICAgICAgICQoJy5qeC11bCcpLnNsaWRlVXAoKTtcXG4gICAgICAgICAgICAkKCcuY2otdWwnKS5zbGlkZVVwKCk7XFxuICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykudGV4dCgn4piwJyk7XFxuICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykuY3NzKCdiYWNrZ3JvdW5kJywgJycpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICAkKGZ1bmN0aW9uKCl7XFxuICAgICAgICAgICAgJCgnbGFiZWwnKS5tb3VzZXVwKGZ1bmN0aW9uKCl7XFxuICAgICAgICAgICAgICAgIGxldCBpbnB1dGlkID0gJyMnICsgJCh0aGlzKS5uZXh0KCkuYXR0cignaWQnKTtcXG4gICAgICAgICAgICAgICAgb25lT3JEYmwoaW5wdXRpZCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcXG4gICAgICAgICAgICB2YXIgdGltZXI7XFxuICAgICAgICAgICAgZnVuY3Rpb24gb25lT3JEYmwoaW5wdXRpZCl7XFxuICAgICAgICAgICAgICAgIGNvdW50Kys7XFxuICAgICAgICAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtcXG4gICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ID09IDEpe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnIgPSAkKGlucHV0aWQpLnZhbCgpLnNwbGl0KCcsJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZSgwLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoJycpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XFxuICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDA7XFxuICAgICAgICAgICAgICAgIH0sMjYwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBcXG4gICAgZnVuY3Rpb24gVG9hc3QobXNnLGR1cmF0aW9uKXsgIFxcbiAgICAgICAgZHVyYXRpb249aXNOYU4oZHVyYXRpb24pPzIwMDA6ZHVyYXRpb247ICBcXG4gICAgICAgIHZhciBtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ICBcXG4gICAgICAgIG0uaW5uZXJIVE1MID0gbXNnOyAgXFxuICAgICAgICBtLnN0eWxlLmNzc1RleHQ9XFxcIndpZHRoOjQ1JTsgbWluLXdpZHRoOjE1MHB4OyBiYWNrZ3JvdW5kOiMzMTE7IG9wYWNpdHk6MC42OyBoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OiA0NXB4OyBjb2xvcjojZmZmOyBsaW5lLWhlaWdodDo0NXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czoxMHB4OyBwb3NpdGlvbjpmaXhlZDsgdG9wOjYwJTsgbGVmdDoyNiU7IHotaW5kZXg6OTk5OTk5O1xcXCI7ICBcXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobSk7ICBcXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ICBcXG4gICAgICAgICAgICB2YXIgZCA9IDAuNTsgIFxcbiAgICAgICAgICAgIG0uc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9ICctd2Via2l0LXRyYW5zZm9ybSAnICsgZCArICdzIGVhc2UtaW4sIG9wYWNpdHkgJyArIGQgKyAncyBlYXNlLWluJzsgIFxcbiAgICAgICAgICAgIG0uc3R5bGUub3BhY2l0eSA9ICcwJzsgIFxcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobSkgfSwgZCAqIDEwMDApOyAgXFxuICAgICAgICB9LCBkdXJhdGlvbik7ICBcXG4gICAgfSAgXFxuXFxuICAgIGZ1bmN0aW9uIG9wZW5EblBhZ2UoKXtcXG4gICAgICAgIGZiYS5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBydWxlOiBcXFwiPV5fXj1cXFwiLFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi566h55CG6Kej5p6QXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNcXFwiLFxcbiAgICAgICAgICAgIGZpbmRSdWxlOiBcXFwianM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvanhJdGVtLmpzJyk7anhJdGVtLmp4TGlzdCgpO3NldFJlc3VsdChkKVxcXCJcXG4gICAgICAgIH0pKTtcXG4gICAgfVxcbiAgICBmdW5jdGlvbiBjYW5jZWwoKXtcXG4gICAgICAgIGlmKG15U2V0PT0nJyl7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC53cml0ZUZpbGUob2xkUm91dGUsIEpTT04uc3RyaW5naWZ5KHNldHRpbmdzLCBudWxsLCA0KSk7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5yZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjayhmYWxzZSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgZnVuY3Rpb24gY2xpY2ttZShtc2csZHVyYXRpb24sdGl0bGUpe1xcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGJveERhdGEubGVuZ3RoOyBpKyspe1xcbiAgICAgICAgICAgIGxldCBpZCA9IGJveERhdGFbaV0uaWQ7XFxuICAgICAgICAgICAgc2V0dGluZ3NbaWRdID0gRGlkKGlkKS52YWx1ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmKHNldHRpbmdzLnFqdSA9PSAnJyl7XFxuICAgICAgICAgICAgc2V0dGluZ3MucWp1ID0gJ+m7mOiupCc7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobXlTZWxlY3RbMF0gIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgZXZhbCgndmFyIGJjQ29uZmlnPScgKyBmeV9icmlkZ2VfYXBwLmZldGNoKG5ld1JvdXRlKSk7XFxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihiY0NvbmZpZy5zZXR0aW5ncywgc2V0dGluZ3MpO1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKG5ld1JvdXRlLCAkJCQuc3RyaW5naWZ5KGJjQ29uZmlnKSk7XFxuICAgICAgICB9XFxuICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZShvbGRSb3V0ZSwgJCQkLnN0cmluZ2lmeShzZXR0aW5ncykpO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgVG9hc3QobXNnLGR1cmF0aW9uKTtcXG4gICAgICAgIGlmKHRpdGxlPT1cXFwi5YWzXFxcIil7XFxuICAgICAgICAgICAgaWYoc2ZSZWZyZXNoICE9IERpZChcXFwiY2pcXFwiKS52YWx1ZSl7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjaygpO1xcbiAgICAgICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmJhY2soZmFsc2UpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG48L3NjcmlwdD4gICBcXG48L2h0bWw+XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJQYXJzZV9Ebi5qc1wiLFwicGF0aFwiOlwiUGFyc2VfRG4uanNcIixcInJ1bGVcIjpcIi8vPT09PT09PT09PT095YWN5ZeF6LCD55SoPT09PT09PT09PT09XFxuLy/vvI3vvI3vvI09Xl9ePVxcbnZhciB2ZXJzaW9uID0gXFxcIjMuNS4yNlxcXCI7XFxuXFxudmFyIHBhcnNlUm91dGUgPSAnaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb24nO1xcbnZhciBNeVBhcnNlUyA9IHt9O1xcbnZhciBteVNldCA9IHt9O1xcbmlmIChmaWxlRXhpc3QocGFyc2VSb3V0ZSkpIHtcXG4gICAgZXZhbCgndmFyIHBhcnNlRmlsZSA9JyArIGZldGNoKHBhcnNlUm91dGUpKTtcXG4gICAgTXlQYXJzZVMgPSBwYXJzZUZpbGUuY29kZXM7XFxuICAgIG15U2V0ID0gcGFyc2VGaWxlLnNldHRpbmdzO1xcbn1cXG52YXIgcGFyc2VUaXRsZSA9IFtcXG4gICAgXFxcIvCfpZpcXFwiLFxcbiAgICBcXFwieXVuMTcxN1xcXCIsXFxuICAgIFxcXCJQYW5HdVxcXCIsXFxuICAgIFxcXCJGdVhpbmdcXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9va2p4LmNjLz91cmw9XFxcIixcXG4gICAgXFxcImh0dHBzOi8vangubTN1OC50di9qaWV4aS8/dXJsPVxcXCIsXFxuICAgIFxcXCJodHRwczovL3NiLjVnc2VvLm5ldC8/dXJsPVxcXCJcXG5dO1xcblxcbi8v77yN77yN77yNPV5fXj1cXG5cXG4vL+aOpeWPo+iuvue9ri5cXG5cXG52YXIgc2V0VXJsID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcIjtcXG52YXIgc2V0X3N3aXRjaCA9IHNldFVybDtcXG52YXIgbGF6eSA9IGByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7YXl0bVBhcnNlKGlucHV0KWA7XFxuXFxuLy92YXIgcGFyd2l4ID0gYHZhciB5dXJsPSdodHRwczovL2RhaWxpLm1heWl4aW9uZ2RpLmNuLz91cmw9JztSZWZlcmVyJzogJ2h0dHBzOi8vd3d3Lm1heWl4aW9uZ2RpLmNuL3lzP2lkPSc7J2h0dHBzOi8vZGFpbGkubWF5aXhpb25nZGkuY24vYXBpLnBocCcsICdSZWZlcmVyJzonaHR0cHM6Ly9kYWlsaS5tYXlpeGlvbmdkaS5jbic7XFxuLy8g5YWo5rCRaHR0cHM6Ly9wY3ZpZGVvYWxpeXVuLnRpYW5zaGFuZ3JlbmppYW4ubWd0di5jb20uODh3dW1hLmNvbS8/dXJsPVxcblxcbi8v77yN77yN77yN5aSHIOeUqO+8je+8je+8jVxcbi8qXFxuICog5b2x6KeG5bel5Zy677yaIGh0dHBzOi8veXNnYy5jYy9cXG4gKiDmsZ/muZY6IDU1NeeUteW9sSBodHRwczovL3d3dy41NTVkeTIuY29tL3Bob25lLmh0bWwg772cIDE355yLIGh0dHA6Ly8xN2thbnl5LmNuLyBodHRwOi8vamhqaWV4aS4zMHZyLmNuLz91cmw9IO+9nCBodHRwOi8vYXBpLm1haXppbWFsbC5jb20vaW5kZXgucGhwP3VybD1cXG4gKiDmsZ/muZY6IGh0dHA6Ly93d3cudGlhbnNodXl1bi5uZXQvaW5kZXgucGhwL3ZvZC9wbGF5L2lkLzQ0ODM3Ny9zaWQvMS9uaWQvMS5odG1sXFxuICog5rGf5rmWMjogaHR0cDovLzk4aHlrLmNuL2luZGV4LnBocC92b2QvcGxheS9pZC83Mjg0MS9zaWQvMS9uaWQvMS5odG1sXFxuICog5Lq65Lq66L+3OiBodHRwczovL3ZpcC5zdXNvdS50di9wbGF5ZXIvP3VybD0g772cIGh0dHBzOi8vd3d3Lm1vbWRtLmNjL1xcbiAqIFxcbiAqIHd1aWdlbjogaHR0cHM6Ly93d3cuNWlnZW4uY29tL2RtcGxheWVyL3BsYXllci8/dXJsPVxcbiAqIOW5sumlrSjkurrkurrov7cpOiBodHRwczovL2p4Lnp1aS5jbS8/dXJsPVxcbiAqIGh0dHBzOi8vMi42Nm1vdmllLnRvcC9wbGF5ZXIvP3VybD1cXG4gKiBcXG4gKi9cXG5cXG5cXG52YXIgdG9vbHMgPSB7XFxuICAgIE1ENTogZnVuY3Rpb24oZGF0YSkge1xcbiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5NRDUoZGF0YSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleCk7XFxuICAgIH0sXFxuICAgIEFFUzogZnVuY3Rpb24odGV4dCwga2V5LCBpdiwgaXNFbmNyeXB0KSB7XFxuICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGtleSk7XFxuICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShpdik7XFxuICAgICAgICBpZiAoaXNFbmNyeXB0KSB7XFxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIGtleSwge1xcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICB9KS50b1N0cmluZygpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXG4gICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgIH0sXFxuICAgIC8vYXNjaWlcXG4gICAgbmV4dENoYXJhY3RlcjogZnVuY3Rpb24oYXNjaWlWYWx1ZSwgaykge1xcbiAgICAgICAgdmFyIHMgPSBhc2NpaVZhbHVlO1xcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocyArIGspO1xcbiAgICB9LFxcbiAgICAvL+WHr+aSklxcbiAgICBjYWVzYXJDaXBoZXI6IGZ1bmN0aW9uKHN0cmluZ1ZhbHVlLCBrKSB7XFxuICAgICAgICB2YXIgbmV3U3RyaW5nID0gXFxcIlxcXCI7XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZ1ZhbHVlLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbmV3U3RyaW5nICs9IHRoaXMubmV4dENoYXJhY3RlcihzdHJpbmdWYWx1ZVtpXS5jaGFyQ29kZUF0KCksIGspO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG5ld1N0cmluZztcXG4gICAgfSxcXG4gICAgaGFuZGxlVXJsOiBmdW5jdGlvbih1cmwsIHZpcFVybCkge1xcbiAgICAgICAgaWYgKHVybFswXSA9PSAnLycpIHtcXG4gICAgICAgICAgICB1cmwgPSAnaHR0cHM6JyArIHVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPWh0dHAnKSAhPSAtMSkge1xcbiAgICAgICAgICAgIHVybCA9IHVybC5pbmRleE9mKCcmdXJsPScpID4gLTEgPyB1cmwgOiAnaHR0cCcgKyBkZWNvZGVVUklDb21wb25lbnQodXJsLnNwbGl0KCc9aHR0cCcpWzFdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwubWF0Y2goL21ndHYvZykgPT0gJ21ndHYnKSB7XFxuICAgICAgICAgICAgdXJsID0gdXJsLmluZGV4T2YoJ1VzZXItQWdlbnQnKSA9PSAtMSA/IHVybCArICc7e1VzZXItQWdlbnRAYXBwfScgOiB1cmw7XFxuICAgICAgICB9IGVsc2UgaWYgKHVybC5pbmRleE9mKCcuZmx2JykgIT0gLTEpIHtcXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tVc2VyLUFnZW50QGFwcCYmUmVmZXJlckAnICsgdmlwVXJsICsgJ30nO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHVybCArICcjaXNWaWRlbz10cnVlIyc7XFxuICAgIH1cXG59O1xcblxcbnZhciBQYXJzZVMgPSB7fTtcXG52YXIgb3JpZ2luYWxQYXJzZVMgPSB7XFxuICAgIC8vdXBkYXRlRGF0ZTogdXBkYXRlRGF0ZSxcXG4gICAgQ2l0eUlQOiAnaHR0cDovL3B2LnNvaHUuY29tL2NpdHlqc29uJyxcXG4gICAgcGNVQTogJ1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFzvvJtcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzYnLFxcbiAgICBjYWNoZU0zdTg6IGZ1bmN0aW9uKHZVcmwsIHJlZikge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgbTN1OCA9IGZldGNoKHZVcmwsIHt9KTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvdmlkZW9zLm0zdTgnLCBtM3U4KTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICByZXR1cm4gJ2ZpbGU6Ly8vc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL2NhY2hlL3ZpZGVvcy5tM3U4Iyc7XFxuICAgIH0sXFxuICAgIGRlZmF1bHRQYXJzZTogZnVuY3Rpb24odXJsKSB7XFxuICAgICAgICByZXR1cm4gdXJsO1xcbiAgICB9LFxcbiAgICBtYW9zczogZnVuY3Rpb24oanh1cmwsIHJlZiwga2V5KSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBnZXRWaWRlb0luZm8gPSBmdW5jdGlvbih0ZXh0KSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0b29scy5BRVModGV4dCwga2V5LCBpdik7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAocmVmKSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChodG1sLmluZGV4T2YoJyZidHdhZj0nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICBodG1sID0gcmVxdWVzdChqeHVybCArICcmYnR3YWYnICsgaHRtbC5tYXRjaCgvJmJ0d2FmKC4qPylcXFwiLylbMV0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgaXYgPSBodG1sLnNwbGl0KCdidF90b2tlbiA9IFxcXCInKVsxXS5zcGxpdCgnXFxcIicpWzBdO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5tYXRjaCgvdmFyIGNvbmZpZyA9IHtbXFxcXHNcXFxcU10qP30vKVswXSArICcnKTtcXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybC5zbGljZSgwLCA0KSAhPSAnaHR0cCcpIHtcXG4gICAgICAgICAgICAgICAgY29uZmlnLnVybCA9IGRlY29kZVVSSUNvbXBvbmVudCh0b29scy5BRVMoY29uZmlnLnVybCwgXFxcImR2eVlSUWxuUFJDTWRRU2VcXFwiLCBpdikpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybDtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICByZXR1cm4gJyc7XFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIExMUTogZnVuY3Rpb24oanh1cmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGFwaSA9IGp4dXJsLnNwbGl0KCc/dXJsPScpWzBdICsgXFxcImFwaS5waHBcXFwiO1xcbiAgICAgICAgICAgIHZhciBiNjRpZCA9IGJhc2U2NEVuY29kZShqeHVybC5zcGxpdCgndXJsPScpWzFdKTtcXG4gICAgICAgICAgICB2YXIgcGFyc2VpZCA9IHRvb2xzLmNhZXNhckNpcGhlcihiNjRpZCwgLTEpO1xcbiAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IGp4dXJsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcbiAgICAgICAgICAgICAgICBib2R5OiAndXJsPScgKyBwYXJzZWlkXFxuICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgIHVybCA9IChqc29uLmNvZGUgPT0gMjAwID8gYmFzZTY0RGVjb2RlKHRvb2xzLmNhZXNhckNpcGhlcihqc29uLnVybCwgLTEpKSA6ICcnKTtcXG4gICAgICAgICAgICByZXR1cm4gdXJsO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgUGFuR3U6IGZ1bmN0aW9uKHZpcFVybCwgZGF0YSkge1xcbiAgICAgICAgLyp2YXIgcmVmID0gJ2h0dHBzOi8vd3d3LnBhbmd1amlleGkuY29tLyc7XFxuICAgICAgICB2YXIgcGFyc2UgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpLz91cmw9JyArIHZpcFVybDtcXG4gICAgICAgIHZhciBhcGkgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpL2FwaS5waHAnO1xcbiAgICAgICAgKi9cXG4gICAgICAgIC8vdmFyIHJlZiA9ICdodHRwczovL3hteXN0di5jb20vJztcXG4gICAgICAgIC8vdmFyIHBhcnNlID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9pbmRleC5waHA/dXJsPScgKyB0YWlsVXJsO1xcbiAgICAgICAgLy92YXIgYXBpID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9hcGkucGhwJztcXG4gICAgICAgIHZhciBwYXJzZSA9IFxcXCJodHRwczovL3d3dy5wYW5ndWppZXhpLmNvbS9wYW5ndS8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vcGFuZ3VhcGkubnRyeWpkLm5ldC9wYW5ndTIwMjEvYXBpLnBocFxcXCI7XFxuICAgICAgICBpZiAoZGF0YSkge1xcbiAgICAgICAgICAgIHJlZiA9IGRhdGFbMF07XFxuICAgICAgICAgICAgcGFyc2UgPSBkYXRhWzFdO1xcbiAgICAgICAgICAgIGFwaSA9IGRhdGFbMl07XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgVGltZSA9IChNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkgKiAxKS50b1N0cmluZygpO1xcbiAgICAgICAgdmFyIGpzb24gPSByZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBwYXJzZVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgdmlwVXJsICsgXFxcIiZyZWZlcmVyPVxcXCIgKyBiYXNlNjRFbmNvZGUocGFyc2UpICsgXFxcIiZyZWY9MSZ0aW1lPVxcXCIgKyBUaW1lICsgXFxcIiZ0eXBlPSZvdGhlcj1cXFwiICsgYmFzZTY0RW5jb2RlKHZpcFVybCkgKyBcXFwiJmlvcz0wXFxcIixcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgdXJsID0ganNvblswXSA9PSBcXFwie1xcXCIgPyBKU09OLnBhcnNlKGpzb24pLnVybCA6IFxcXCJcXFwiO1xcbiAgICAgICAgcmV0dXJuIHVybDtcXG4gICAgfSxcXG4gICAgeXVuMTcxNzogZnVuY3Rpb24odmlwVXJsKSB7XFxuICAgICAgICB2YXIgaXN5ayA9IHZpcFVybC5pbmRleE9mKCd5b3VrdScpO1xcbiAgICAgICAgdmFyIHJlZiA9IFxcXCJodHRwczovL3d3dy4xNzE3eXVuLmNvbS9qeC90eS5waHA/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgcGFyc2UgPSBcXFwiaHR0cHM6Ly8xNzE3eXVuLmNvbS56aDE4OC5uZXQvMDgyOC8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vMTcxN3l1bi5jb20uemgxODgubmV0LzEwMDQvLi5pbmRleC4ucGhwXFxcIjtcXG4gICAgICAgIHJldHVybiBpc3lrID09IC0xID8gdGhpcy5QYW5HdSh2aXBVcmwsIFtyZWYsIHBhcnNlLCBhcGldKSA6IHRoaXMuUGFuR3UodmlwVXJsLCBbcmVmICsgJyx2aXA6JywgcGFyc2UgKyAnLHZpcDonLCBhcGldKTtcXG4gICAgfSxcXG4gICAgRnVYaW5nOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgLy9pZih2aXBVcmwuaW5kZXhPZigndi55b3VrdScpIT0tMSl7XFxuICAgICAgICAgICAgLy8gICAgdmlwVXJsID0gKEpTT04ucGFyc2UocmVxdWVzdCh2aXBVcmwsIHtyZWRpcmVjdDpmYWxzZSwgd2l0aEhlYWRlcnM6dHJ1ZX0pKS5oZWFkZXJzLmxvY2F0aW9uICsgJycpLnJlcGxhY2UoL1xcXFw/LiovLCcnKTtcXG4gICAgICAgICAgICAvL31cXG4gICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvP3VybD0nICsgdmlwVXJsO1xcbiAgICAgICAgICAgIHZhciBwYXJzZSA9IHJlZjtcXG4gICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvYXBpdV9meC5waHAnO1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzLlBhbkd1KHZpcFVybCwgW3JlZiwgcGFyc2UsIGFwaV0pO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgXFxcIvCfpZpcXFwiOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIGxldCDkvZzogIVf6KeG55WM55+l5ZCN5aSn5L2sO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBldmFsKGZldGNoKFxcXCJodHRwOi8vcTE2LjIyd2ViLm9yZy9hZXMuanNcXFwiKSk7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHBkZmgoZmV0Y2goXFxcImh0dHA6Ly9xMTYuMjJ3ZWIub3JnL2FwaS5waHBcXFwiKSwgXFxcImJvZHkmJnNjcmlwdCwxJiZIdG1sXFxcIik7XFxuICAgICAgICAgICAgZXZhbCh1cmwucmVwbGFjZShcXFwiZG9jdW1lbnQuXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcImxvY2F0aW9uLlxcXCIsIFxcXCJcXFwiKSk7XFxuICAgICAgICAgICAgdmFyIHBsYXkgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vcTE2LjIyd2ViLm9yZy9hcGkucGhwXFxcIiwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogY29va2llLnNwbGl0KFxcXCI7XFxcIilbMF1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgaW5wdXQsXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgICAgICAgICAgfSkpLnVybDtcXG4gICAgICAgICAgICBpZiAocGxheS5zdGFydHNXaXRoKFxcXCIvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJodHRwczpcXFwiICsgcGxheTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGxheTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxufTtcXG5cXG5PYmplY3QuYXNzaWduKFBhcnNlUywgb3JpZ2luYWxQYXJzZVMsIE15UGFyc2VTKTtcXG4vL+imhueblumhuuW6j++8jOesrOS4ieS4quimhuebluesrOS6jOS4queEtuWQjuimhuebluesrOS4gOS4qlxcblxcblxcbmZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwsIHBhcnNlTmFtZSkge1xcbiAgICB0aGlzLnJlcXVlc3QgPSBmdW5jdGlvbihwYXJhbTAsIHBhcmFtMSwgcGFyYW0yKSB7XFxuICAgICAgICBwYXJhbTEgPSBwYXJhbTEgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTE7XFxuICAgICAgICBpZihpc05hTihwYXJhbTEudGltZW91dCkpIHtcXG4gICAgICAgICAgICBwYXJhbTEudGltZW91dCA9IDI1MDA7XFxuICAgICAgICB9XFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFO1xcbiAgICAgICAgdmFyIHJldFN0ciA9IG1ldGhvZF9yZXF1ZXN0Lmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdGhpcy5mZXRjaCA9IGZ1bmN0aW9uKHBhcmFtMCwgcGFyYW0xLCBwYXJhbTIpIHtcXG4gICAgICAgIHBhcmFtMSA9IHBhcmFtMSA9PSB1bmRlZmluZWQgPyB7fSA6IHBhcmFtMTtcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzID0gcGFyYW0xLmhlYWRlcnMgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTEuaGVhZGVycztcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzWydVc2VyLUFnZW50J10gPSBQQ19VQTtcXG4gICAgICAgIGlmKGlzTmFOKHBhcmFtMS50aW1lb3V0KSkge1xcbiAgICAgICAgICAgIHBhcmFtMS50aW1lb3V0ID0gMjUwMDtcXG4gICAgICAgIH1cXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEU7XFxuICAgICAgICB2YXIgcmV0U3RyID0gbWV0aG9kX2ZldGNoLmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdmFyIGhvc3QgPSB2aXBVcmwubWF0Y2goL1xcXFwuKC4qPylcXFxcLy8pO1xcbiAgICBob3N0ID0gaG9zdCA9PSBudWxsID8gbnVsbCA6IGhvc3RbMV07XFxuICAgIHZhciBub1VybCA9IFxcXCJ0b2FzdDovL+aOpeaUtuWIsOeahOmTvuaOpeS4ujogXFxcIjtcXG4gICAgc3dpdGNoIChteVNldC5xanUpIHtcXG4gICAgICAgIGNhc2UgXFxcIum7mOiupFxcXCI6XFxuICAgICAgICAgICAgc3dpdGNoIChob3N0KSB7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcInFxLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC50eDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCJpcWl5aS5jb21cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gbXlTZXQucXk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwieW91a3UuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0LnlrO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIm1ndHYuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0Lm1nO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcImJpbGliaWxpLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC5ibDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gaG9zdCA9PSBudWxsID8gbm9VcmwgOiBteVNldC5vdGg7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIHN0ciA9IGhvc3QgPT0gbnVsbCA/IG5vVXJsIDogbXlTZXQucWp1O1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxuICAgIGlmIChwYXJzZU5hbWUpIHtcXG4gICAgICAgIHN0ciA9IHBhcnNlTmFtZTtcXG4gICAgfVxcbiAgICBsZXQgbXlDaG9pY2UgPSBzdHIuc3BsaXQoJywnKTtcXG4gICAgbGV0IGxlbiA9IG15Q2hvaWNlLmxlbmd0aDtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgbGV0IG5hbWUgPSBteUNob2ljZVtpXTtcXG4gICAgICAgIGlmICh0eXBlb2YgUGFyc2VTW25hbWVdID09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gUGFyc2VTW25hbWVdKHZpcFVybCk7XFxuICAgICAgICAgICAgbGV0IFJlZyA9IC9tM3U4fG1wNHxodHRwLztcXG4gICAgICAgICAgICBpZiAoaSAhPSBsZW4gLSAxICYmICFSZWcudGVzdCh1cmwpKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhuYW1lICsgJ+ino+aekOWksei0pScpO1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKCFSZWcudGVzdCh1cmwpIHx8IHVybCA9PSB2aXBVcmwpIHtcXG4gICAgICAgICAgICAgICAgbG9nKG5hbWUgKyAn6Kej5p6Q5aSx6LSlJyk7XFxuICAgICAgICAgICAgICAgIHJldHVybiB2aXBVcmw7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2xzLmhhbmRsZVVybCh1cmwsIHZpcFVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgUGFyc2VTW25hbWVdID09ICdzdHJpbmcnKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFBhcnNlUy5kZWZhdWx0UGFyc2UoUGFyc2VTW25hbWVdICsgdmlwVXJsLCB0b29scy5oYW5kbGVVcmwsIG5hbWUpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHIoMCwgNCkgPT0gXFxcImh0dHBcXFwiIHx8IGhvc3QgPT0gbnVsbCA/IG5hbWUgKyB2aXBVcmwgOiBcXFwidG9hc3Q6Ly9cXFwiICsgbmFtZSArIFxcXCIg5LiN5piv55u06ZO+5Lmf5LiN5piv5YWN5ZeFXFxcIjtcXG4gICAgICAgIH1cXG4gICAgfVxcbn07XFxuXFxudmFyIHBsYXlQYXJzZSA9IHtcXG4gICAgcGxheWVyX3h4OiBmdW5jdGlvbihqdXJsLCBMYWJlbCkge1xcbiAgICAgICAgcmV0dXJuICQoanVybCkubGF6eVJ1bGUoKExhYmVsKSA9PiB7XFxuICAgICAgICAgICAgcmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1xcbiAgICAgICAgICAgIHZhciBmYSA9IFsnbGV0dicsICdwcHR2JywgJ3FxJywgJ3lvdWt1JywgJ3FpeWknLCAnaXFpeWknLCAnbWd0dicsICdiaWxpYmlsaScsICdzb2h1JywgJ21pZ3UnLCAnbTE5MDUnLCAndmlwJ107XFxuICAgICAgICAgICAgdmFyIGh0bWwgPSBwYXJzZURvbShyZXF1ZXN0KGlucHV0KSwgTGFiZWwpO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5yZXBsYWNlKC9wbGF5ZXJfLio/PXsvLCAncGRhdGE9eycpKTtcXG4gICAgICAgICAgICBpZiAocGRhdGEudXJsLnN1YnN0cigwLCA4KS5tYXRjaCgvSlQuLkpULi4vKSkge1xcbiAgICAgICAgICAgICAgICBwZGF0YS51cmwgPSBiYXNlNjREZWNvZGUocGRhdGEudXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHBkYXRhLnVybC5zdWJzdHIoMCwgOCkubWF0Y2goLyUuLiUuLi8pKSB7XFxuICAgICAgICAgICAgICAgIHBkYXRhLnVybCA9IHVuZXNjYXBlKHBkYXRhLnVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChmYS5pbmNsdWRlcyhwZGF0YS5mcm9tKSA9PSB0cnVlKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UocGRhdGEudXJsKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGRhdGEudXJsICsgJyNpc1ZpZGVvPXRydWUjJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBMYWJlbClcXG4gICAgfVxcbn07XFxuXFxuZnVuY3Rpb24gc2V0UGFyc2UoKSB7XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuICAgIFJvdXRlLnNldFBhcnNlKCk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIlJvdXRlXCIsXCJydWxlXCI6XCJqczpcXG5yZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuc3dpdGNoIChnZXRQYXJhbShcXFwidHlwZVxcXCIpKSB7XFxuICAgIGNhc2UgXFxcIuiuvue9rlxcXCI6XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICAgICAgUm91dGUuc2V0UGFyc2UoKTtcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIFxcXCLnvJbovpFcXFwiOlxcbiAgICB0aGlzLmQgPSBbXTtcXG4gICByZXF1aXJlKGZMaW5rcy5qeEl0VXJsKTtcXG4gICBqeEl0ZW0uanhMaXN0KCk7XFxuICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgJC5leHBvcnRzID0gUm91dGU7XFxuICAgICAgICBicmVhaztcXG59XFxuXCJ9XSIsImljb24iOiJodHRwczovL3N0YXRpYzAxLmltZ2tyLmNvbS90ZW1wLzIzODEzN2VmYjYxNjQ1ODc5Njg3YTg1MDNmMzRkODkzLnBuZyJ9
能分享下魔改版吗
发际线低点 2021-12-11 13:06:00 重新导入原版啊
重新导入原版啊
设置还不会那
魔断解析导入口令怎么导入?
原版拉取没有口令。
导入都会,拉取口令是什么?解析怎么导入
这不直接导入论坛的原版不就行了。不需要什么教程吧。
能分享下魔改版吗
海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@MyFieldᴰⁿ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiTXlGaWVsZOG0sOKBvyIsImF1dGhvciI6IuaWreW/tSIsInVybCI6Imhpa2VyOi8vZW1wdHk/Y2xhc3M9ZnlBbGwiLCJ2ZXJzaW9uIjoxMCwiY29sX3R5cGUiOiJ0ZXh0X2NlbnRlcl8xIiwiY2xhc3NfbmFtZSI6Ik15UGFyc2VTJue8lui+keaWh+S7tiIsImNsYXNzX3VybCI6IiZlZGl0RmlsZSIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxudGhpcy5kID0gW107XG5cbmZ1bmN0aW9uIGp4SXRlbUhlYWQoKSB7XG4gICAgYWRkTGlzdGVuZXIoJ29uUmVmcmVzaCcsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGdldFZhcigna3FqeGNzJywgJzAnKSkge1xuICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICAgICAgcHV0VmFyKCdrcWp4Y3MnLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIHB1dFZhcigna3FqeGNzJywgMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHB1dFZhcigna3FqeGNzJywgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgaWYgKGdldFZhcigna3FqeGNzJykgPT0gMikge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cImNvbG9yOiNGQUNDMkVcIj7op6PmnpDmtYvor5UnLFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciB2aXBVcmwgPSBnZXRWYXIoJ3BsdWdpbkxpbmsnKTtcbiAgICAgICAgICAgICAgICBpZiAodmlwVXJsLnN1YnN0cigwLCA0KSA9PSAnaHR0cCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKHZpcFVybCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeahhuacquWhq1VybOaIluiAheaXoOaViFVybCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIganhOZXdWID0gZ2V0VmFyKCdqeE5ld1YnLCAnJyksXG4gICAgICAgIGp4T2xkViA9IGdldFZhcignanhPbGRWJyk7XG4gICAgdmFyIHZlcnNpb25UaXBzID0ganhOZXdWID09ICcnID8gJ1ZlcnNpb24gJyArIGp4T2xkViA6ICfigJjigJgnICsganhOZXdWICsgJ1xcbuWFiOabtOaWsOWwj+eoi+W6j+eEtuWQjueCueWHu+abtOaWsOiEmuacrOS+nei1luKAmeKAmSc7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxiaWc+PHNwYW4gc3R5bGU9XCJjb2xvcjojMEMwMDAwXCI+TXlQYXJzZVMnLFxuICAgICAgICBkZXNjOiB2ZXJzaW9uVGlwcyxcbiAgICAgICAgdXJsOiAhZ2V0VmFyKCdrcWp4Y3MnKSA/ICd0b2FzdDovL+i/meaYr+agh+mimCcgOiBzZXR1cFBhZ2VzKCforr7nva4nLCAxKSxcbiAgICAgICAgLyogJChbXCLliIfmjaLop6PmnpBcIiwgXCLmo4DmtYvop6PmnpBcIiwgXCLliIfmjaLnmq7ogqRcIl0sIDIpLnNlbGVjdCgoKSA9PiAkKCkucnVsZSgoaykgPT4ge1xuICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZToga1xuICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICAgICAgfSwgaW5wdXQpKSwqL1xuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgbmV3V2luZG93OiB0cnVlLFxuICAgICAgICAgICAgd2luZG93SWQ6IFwiTXlQYXJzZVNcIixcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXG4gICAgfSk7XG4gICAgc3BsaXRMaW5lKCdsaW5lJywgNSk7XG59XG5cbmZ1bmN0aW9uIGN6R3VpZGUoKSB7XG4gICAgcmV0dXJuIFwiaHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFZYTkdWR2RMUkVGUFkzWnpcIlxufVxuXG5mdW5jdGlvbiB0b2ZMaW5rKFVybCkge1xuICAgIHJldHVybiAnaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUoVXJsKSArICcuanMnO1xufVxuXG5mdW5jdGlvbiBlZGl0RmlsZSgpIHtcbiAgICB2YXIgTGlzdHMgPSBbe1xuICAgICAgICB0aXRsZTogJ+eUqOaIt+ino+aekOaWh+S7ticsXG4gICAgICAgIGxpbms6IGZMaW5rcy5wYXJzZXNcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAnUGFyc2VfRG4uanMnLFxuICAgICAgICBsaW5rOiBmTGlua3MuY2pjYWNoZVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfnvZHpobXohJrmnKzku6PnoIEnLFxuICAgICAgICBsaW5rOiBmTGlua3MueDVjYWNoZVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfosIPnlKjot6/nlLHku6PnoIEnLFxuICAgICAgICBsaW5rOiB0b2ZMaW5rKGZMaW5rcy5yb3V0ZVVybClcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn6Kej5p6Q6aG55Li75Luj56CBJyxcbiAgICAgICAgbGluazogdG9mTGluayhmTGlua3MuanhJdFVybClcbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn57yW6L6R6Kej5p6Q6aG55Luj56CBJyxcbiAgICAgICAgbGluazogdG9mTGluayhmTGlua3MuX2JqVXJsKVxuICAgIH1dO1xuICAgIGZvciAoaSBvZiBMaXN0cykge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGkudGl0bGUsXG4gICAgICAgICAgICB1cmw6ICdlZGl0RmlsZTovLycgKyBpLmxpbmssXG4gICAgICAgICAgICAvL2NvbF90eXBlOiAndGV4dF8yJ1xuICAgICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWdldFZhcignZWRpdEZpbGVQb3B1cCcpKSB7XG4gICAgICAgIGNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICfmuKnppqjmj5DnpLonLFxuICAgICAgICAgICAgY29udGVudDogJ+atpOmhueWKn+iDveS4jeW7uuiuruWwj+eZveeUqOaIt+S9v+eUqCcsXG4gICAgICAgICAgICBjb25maXJtOiAncHV0VmFyKFwiZWRpdEZpbGVQb3B1cFwiLFwiMVwiKSdcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbnRyeSB7XG4gICAgcmVxdWlyZShcImh0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanNcIik7XG4gICAgc3dpdGNoIChnZXRQYXJhbSgnY2xhc3MnKSkge1xuICAgICAgICBjYXNlIFwiZWRpdEZpbGVcIjpcbiAgICAgICAgICAgIGVkaXRGaWxlKCk7XG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJlcXVpcmUoZkxpbmtzLmp4SXRVcmwpO1xuICAgICAgICAgICAganhJdGVtLmxxRmlsZSgpO1xuICAgICAgICAgICAgUm91dGUuYWRkTGFuSmllKGQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufSBjYXRjaCAoZSkge1xuICAgIGNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogJ+eoi+W6j+WHuumUmeS6hihfIF8pJyxcbiAgICAgICAgY29udGVudDogJ+ihjOaVsDogJyArIGUubGluZU51bWJlciArICdcXG7or6bmg4U6ICcgKyBlLm1lc3NhZ2UsXG4gICAgICAgIGNvbmZpcm06ICdgY29weTovLycgKyBlLm1lc3NhZ2UgKyAnYCdcbiAgICB9KTtcbiAgICBzZXRSZXN1bHQoZCk7XG59Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoi4pGg5o6o6I2QIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6InZhciBrVCA9IFwiaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L2JyYW5jaC9tL3YvXCI7XG52YXIgZkxpbmtzID0ge1xuICAgIGtUOiBrVCxcbiAgICBjakZyb206ICdoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanMnLFxuICAgIHg1RnJvbTogJ2hpa2VyOi8vcGFnZS9QYXJzZV9Ebi5odG1sJyxcbiAgICBfYmpVcmw6IGtUICsgJ2p4SXRlbV9iai5qcycsXG4gICAganhJdFVybDoga1QgKyAnanhJdGVtLmpzJyxcbiAgICByb3V0ZVVybDogJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnLFxuICAgIGNqY2FjaGU6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJyxcbiAgICB4NWNhY2hlOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5odG1sJyxcbiAgICBwbHNjOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9wbHNjUGFyc2UuaHRtbCcsXG4gICAgTGFuSmllOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS94NVBhcnNlTGFuSmllLnR4dCcsXG4gICAgY29uZmlnOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb24nLFxuICAgIHBhcnNlczogJ2hpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uJyxcbiAgICB4NVJvdXRlOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvY2FjaGUvJ1xufTtcbmxldCBmUm91dGUgPSAnaGlrZXI6Ly9maWxlcy9jYWNoZS9maWxlTGlua3PhtLDigb8udHh0JztcbmlmICghZ2V0VmFyKCdqeE9sZFYnKSB8fCBnZXRWYXIoJ2p4TmV3VicsICcwJykgIT09ICcwJykge1xuICAgIHdyaXRlRmlsZShmUm91dGUsICd2YXIgZkxpbmtzPScgKyAkLnN0cmluZ2lmeShmTGlua3MpKTtcbn0iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiUGFyc2VfRG4uaHRtbFwiLFwicGF0aFwiOlwiUGFyc2VfRG4uaHRtbFwiLFwicnVsZVwiOlwiPCFET0NUWVBFIGh0bWw+XFxuPGh0bWw+XFxuPGhlYWQ+XFxuICAgIDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5cXG4gICAgPG1ldGEgbmFtZT1cXFwidmlld3BvcnRcXFwiIGNvbnRlbnQ9XFxcIndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsbWluaW11bS1zY2FsZT0xLG1heGltdW0tc2NhbGU9MSx1c2VyLXNjYWxhYmxlPW5vXFxcIiAvPlxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS92dWVAMi41LjE2L2Rpc3QvdnVlLm1pbi5qc1xcXCI+PC9zY3JpcHQ+XFxuICAgIDxzY3JpcHQgc3JjPVxcXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMi4xLjQubWluLmpzXFxcIj48L3NjcmlwdD5cXG4gICAgPCEtLVxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cDovL2FwcHMuYmRpbWcuY29tL2xpYnMvanF1ZXJ5LzIuMS40L2pxdWVyeS5taW4uanNcXFwiPjwvc2NyaXB0PlxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cDovL2FwcHMuYmRpbWcuY29tL2xpYnMvdnVlLzEuMC4xNC92dWUuanNcXFwiPjwvc2NyaXB0PlxcbiAgICAtLT5cXG4gICAgPHRpdGxlPlBhcnNlX0RuPC90aXRsZT5cXG4gICAgPHN0eWxlIHR5cGU9dGV4dC9jc3M+XFxuICAgICAgICBodG1sLCBib2R5IHtcXG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIH1cXG4gICAgICAgIGJvZHkge1xcbiAgICAgICAgICAgIG1hcmdpbjogMCA1cHggMCA1cHg7XFxuICAgICAgICAgICAgcGFkZGluZzogMCAwcHggMCAwcHg7XFxuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiAjRjlGMERBO1xcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAwO1xcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcXFwiTWljcm9zb2Z0IFlhSGVpXFxcIixcXFwi5a6L5L2TXFxcIixcXFwiU2Vnb2UgVUlcXFwiLCBcXFwiTHVjaWRhIEdyYW5kZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsc2Fucy1zZXJpZiwgRnJlZVNhbnMsIEFyaW1vO1xcbiAgICAgICAgfVxcbiAgICAgICAgI2RpdjJ7XFxuICAgICAgICAgICBtYXJnaW4tdG9wOjM1cHg7XFxuICAgICAgICB9XFxuICAgICAgICAvKui+k+WFpeahhueItuWFg+e0oCovXFxuICAgICAgICBkaXYuYm94IHtcXG4gICAgICAgICAgICBoZWlnaHQ6IDUzcHg7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrovpPlhaXmoYblsLrlr7gqL1xcbiAgICAgICAgZm9ybSB7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgICAgIHdpZHRoOiA5MiU7XFxuICAgICAgICB9XFxuICAgICAgICBpbnB1dCwgbGFiZWwsIC5saWViIGJ1dHRvbiB7XFxuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWtl+S9k+S9jee9riovXFxuICAgICAgICBpbnB1dCB7XFxuICAgICAgICAgICAgd2lkdGg6IDc3JTtcXG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XFxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA2NnB4O1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XFxuICAgICAgICB9XFxuICAgICAgICBsYWJlbCB7XFxuICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQzcHg7XFxuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWwj+ahhiovXFxuICAgICAgICAuYmFyIGxhYmVsIHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDA2QjZDO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDU1NSA1NTVweCA1NTVweCA1NTU7XFxuICAgICAgICAgICAgd2lkdGg6IDYwcHg7XFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICAgICAgICAgIGNvbG9yOiAjRjlGMERBO1xcbiAgICAgICAgICAgIHRvcDogMDtcXG4gICAgICAgICAgICBsZWZ0OiAzcHg7XFxuICAgICAgICB9XFxuICAgICAgICAvKui+k+WFpeahhuagt+W8jyovXFxuICAgICAgICAuYmFyIGlucHV0IHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjlGMERBO1xcbiAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICNEMDZCNkM7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrliJfooagqL1xcbiAgICAgICAgLmxpZWIgYnV0dG9uIHtcXG4gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDo0MHB4O1xcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgICAgICB3aWR0aDogMjdweDtcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrliJfooagqL1xcbiAgICAgICAgLmxpZWIgYnV0dG9ue1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDA2QjZDO1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgICAgICAgICBjb2xvcjogI0Y5RjBEQTtcXG4gICAgICAgICAgICB0b3A6IDA7XFxuICAgICAgICAgICAgcmlnaHQ6IDBweDtcXG4gICAgICAgIH1cXG4gICAgICAgIC8q5aS05YOPKi9cXG4gICAgICAgIC5yb3VuZF9pY29ue1xcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICB9XFxuXFxuICAgICAgICAuangtdWwsIC5jai11bCB7XFxuICAgICAgICAgICAgei1pbmRleDogOTk5O1xcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgICAgICAgICB3aWR0aDogNzclO1xcbiAgICAgICAgICAgLy8gbGVmdDogMTAlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLmp4LXVsLCAuY2otdWwge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICAuangtdWwge1xcbiAgICAgICAgICAgIHRvcDogMyU7XFxuICAgICAgICB9XFxuICAgICAgICAuY2otdWwge1xcbiAgICAgICAgICAgIHRvcDogMzAlO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGkge1xcbiAgICAgICAgICAgIGhlaWdodDogMzVweDtcXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDFiZmRhO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7XFxuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzNXB4O1xcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGkge1xcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICBsaTpob3ZlciB7XFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTM5LCAxMzEsIDEyMCwgMC45KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxpW2NoZWNrPVxcXCJ0cnVlXFxcIl0ge1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTM5LCAwLCAwLCAwLjkpO1xcbiAgICAgICAgfVxcblxcbiAgICA8L3N0eWxlPlxcbjwvaGVhZD5cXG5cXG48Ym9keT5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZnVuZ1xcXCI+XFxuICAgICAgICA8YSBzdHlsZT1cXFwiZmxvYXQ6bGVmdDtcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b24gIHN0eWxlPVxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICNjNTQ2NGE7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFwiIG9uY2xpY2s9XFxcImNhbmNlbCgpO1xcXCI+5YWzIOmXrTwvYnV0dG9uPlxcbiAgICAgICAgPC9hPlxcbiAgICAgICAgPGEgc3R5bGU9XFxcImZsb2F0OnJpZ2h0XFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICMwNjgwMDY7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFwib25jbGljaz1cXFwiY2xpY2ttZSgn6YWNIOe9riDlt7Ig5L+dIOWtmCDvvIEnLCAxMDAwLCAn5byAJyk7XFxcIj7kv50g5a2YPC9idXR0b24+IFxcbiAgICAgICAgPC9hPlxcbiAgICA8L2Rpdj5cXG4gICAgPGJyPlxcbiAgICA8ZGl2IGlkPVxcXCJkaXYyXFxcIj48L2Rpdj5cXG4gICAgPGRpdj5cXG4gICAgICAgIDxhIHN0eWxlPVxcXCJmbG9hdDpsZWZ0O21hcmdpbi10b3A6NXB4O1xcXCIgb25jbGljaz1cXFwib3BlbkRuUGFnZSgpXFxcIj5cXG4gICAgICAgICAgICA8aW1nIHNyYz1cXFwiaHR0cHM6Ly9zMy5heDF4LmNvbS8yMDIxLzAyLzIyL3k3d2I5Ty5qcGdcXFwiIGNsYXNzPVxcXCJyb3VuZF9pY29uXFxcIiAgYWx0PVxcXCJcXFwiPlxcbiAgICAgICAgPC9hPlxcbiAgICAgICAgPHNwYW4gc3R5bGU9XFxcImxpbmUtaGVpZ2h0OjYwcHg7Zm9udC1zaXplOjE4cHg7Y29sb3I6IGdyZXk7XFxcIj4mbmJzcDsmbmJzcDvmlq0mbmJzcDvlv7U8L3NwYW4+XFxuICAgICAgICA8YSBzdHlsZT1cXFwiZmxvYXQ6cmlnaHQ7bWFyZ2luLXRvcDo1cHg7XFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uICBzdHlsZT1cXFwiYm9yZGVyOiBub25lO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOiAjMDVCRkM1O3dpZHRoOiAxODVweDtoZWlnaHQ6NDBweDsgZm9udC1zaXplOiAxOHB4O2NvbG9yOiAjRjlGMERBO1xcXCIgb25jbGljaz1cXFwiY2xpY2ttZSgn6YWNIOe9riDlt7Ig5L+dIOWtmCDvvIEnLCAxMDAwLCAn5YWzJyk7XFxcIj7kv53lrZjorr7nva7lubblhbPpl63nlYzpnaI8L2J1dHRvbj5cXG4gICAgICAgIDwvYT5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInpqLWRpdlxcXCI+XFxuICAgICAgICA8dWwgY2xhc3M9XFxcImp4LXVsXFxcIiBzdHlsZT1cXFwiaGVpZ2h0OjQ0NHB4O292ZXJmbG93LXk6YXV0bztcXFwiPlxcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cXFwibXlDaG9pY2VcXFwiIHN0eWxlPVxcXCJ6LWluZGV4Ojk5OTk7cG9zaXRpb246IGZpeGVkO3dpZHRoOjc2LjUlO2NvbG9yOnJlZDtcXFwiPjwvbGk+XFxuICAgICAgICAgICAgPGxpIGNsYXNzPVxcXCJ1c2VsZXNzXFxcIj48L2xpPlxcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cXFwieGxMaXN0XFxcIiB2LWZvcj1cXFwiaXRlbSBpbiBqeERhdGFcXFwiPnt7aXRlbX19PC9saT5cXG4gICAgICAgIDwvdWw+XFxuICAgICAgICA8dWwgY2xhc3M9XFxcImNqLXVsXFxcIj5cXG4gICAgICAgICAgICA8bGkgc3R5bGU9XFxcImJhY2tncm91bmQ6Z3JleTtcXFwiPuivt+mAieaLqeaPkuS7tjwvbGk+XFxuICAgICAgICAgICAgPGxpIHYtZm9yPVxcXCJpdGVtIGluIGNqRGF0YVxcXCI+e3tpdGVtfX08L2xpPlxcbiAgICAgICAgPC91bD5cXG4gICAgPC9kaXY+XFxuPC9ib2R5PlxcbjxzY3JpcHQ+XFxuICAgIHZhciBzZXR0aW5ncyA9IHtcXG4gICAgICAgIHF5OiAneXVuMTcxNycsXFxuICAgICAgICB5azogJ3l1bjE3MTcnLFxcbiAgICAgICAgdHg6ICd5dW4xNzE3JyxcXG4gICAgICAgIG1nOiAneXVuMTcxNycsXFxuICAgICAgICBibDogJ3l1bjE3MTcnLFxcbiAgICAgICAgb3RoOiAneXVuMTcxNycsXFxuICAgICAgICBxanU6ICfpu5jorqQnLFxcbiAgICAgICAgY2o6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJ1xcbiAgICB9O1xcbiAgICBldmFsKGZ5X2JyaWRnZV9hcHAuZ2V0SW50ZXJuYWxKcygpKTtcXG4gICAgXFxuICAgIHZhciBvbGRSb3V0ZSA9IFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXCI7XFxuICAgIHZhciBteVNldCA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gob2xkUm91dGUpO1xcbiAgICBcXG4gICAgdmFyIG5ld1JvdXRlID0gXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcIjtcXG4gICAgdmFyIG5ld0NvbmZpZyA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gobmV3Um91dGUpO1xcbiAgICB2YXIgbXlTZWxlY3QgPSBbXTtcXG4gICAgaWYobmV3Q29uZmlnICE9IFxcXCJcXFwiKXtcXG4gICAgICAgIGV2YWwoXFxcIm5ld0NvbmZpZyA9XFxcIiArIG5ld0NvbmZpZyArIFxcXCI7XFxcIik7XFxuICAgICAgICBzZXR0aW5ncyA9IG5ld0NvbmZpZy5zZXR0aW5ncztcXG4gICAgICAgIHZhciB5Y1RpdGxlID0gWydkZWZhdWx0UGFyc2UnLCAnbWFvc3MnLCAnQ2l0eUlQJywgJ2NhY2hlTTN1OCcsICdwY1VBJywgJ3BhcnNlTGMnLCAnZ3BhcnNlJywgJ25wYXJzZSddO1xcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG5ld0NvbmZpZy50aXRsZS5sZW5ndGg7IGkrKyl7XFxuICAgICAgICAgICAgdmFyIFRpdGxlcyA9IG5ld0NvbmZpZy50aXRsZVtpXTtcXG4gICAgICAgICAgICBpZih5Y1RpdGxlLmluY2x1ZGVzKFRpdGxlcykgPT0gZmFsc2Upe1xcbiAgICAgICAgICAgICAgICBteVNlbGVjdC5wdXNoKFRpdGxlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciBzZlJlZnJlc2ggPSBzZXR0aW5ncy5jajtcXG4gICAgZnVuY3Rpb24gRGlkKGlkKXtcXG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XFxuICAgIH1cXG4gICAgXFxuICAgIGlmKG15U2V0ID09ICcnKXtcXG4gICAgICAgIERpZChcXFwiZGl2MlxcXCIpLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsJ1xcXFxcXG48aDQ+5o+Q56S677yaPGJyPuKRoOazqOaEj+aPkuS7tumAiemhue+8jOayoeacieaJi+WKqOWvvOWFpeaPkuS7tueahOivneS4jeeUqOWKqOWug+OAguWmguiuvue9ruS4jeW9k+S8muWvvOiHtOinhOWImeaXoOazleS9v+eUqO+8jDxicj7op6PlhrPlip7ms5XvvJrop4bnlYzmiZPlvIDmm7TlpJrorr7nva7ihpLmlofku7bnrqHnkIbihpLngrljYWNoZeKGkumVv+aMiU15UGFyc2VTZXQuanNvbuWIoOmZpOaOie+8mzxicj7ikaHlhajlsYDorr7nva7lpoLmnpzpgInmi6nkuobpnZ7pu5jorqTpgqPkuYjlhajpg6jnmoTop6PmnpDkvJrkvb/nlKjov5nkuIDorr7nva7vvIzkuI3mg7Pov5nmoLfnmoTor53or7floavlhaXpu5jorqTvvJs8YnI+4pGi57u/6Imy5L+d5a2Y5oyJ6ZKu5LuF5LuF5L+d5a2Y6YWN572u5LiN5Lya5YWz6Zet6K6+572u6aG16Z2i77yM6YWN572u5ZCO5oOz5L+d5a2Y5bm25YWz6Zet6K6+572u6aG16Z2i55qE6K+d6K+354K56JOd6Imy5oyJ6ZKu77ybPGJyPuKRo+mYheivu+WujOaPkOekuueCueWFs+mXreWKoOi9veWujOaVtOiuvue9rumhtemdou+8jOWmguWHuumXrumimOaXoOazleiHquihjOino+WGs+eCueWbvueJh+i/m+WFpeiuuuWdm+WQkeaIkeWPjemmiOOAgjxicj48L2g0PicpO1xcbiAgICB9XFxuICAgIFxcbiAgICB2YXIgYm94RGF0YSA9IFtcXG4gICAgICAgIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWlhyDlpYdcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwicXlcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xeSxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIumFtyDphbdcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwieWtcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy55ayxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuiFviDohb5cXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwidHhcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy50eCxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaenCDmnpxcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwibWdcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5tZyxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWTqSDlk6lcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwiYmxcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5ibCxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWFtiDku5ZcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwib3RoXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3Mub3RoLFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5YWoIOWxgFxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJxanVcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xanUsXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmj5Ig5Lu2XFxcIixcXG4gICAgICAgICAgICBpZDogXFxcImNqXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3MuY2osXFxuICAgICAgICB9XFxuICAgIF07XFxuXFxuICAgIHZhciBpbnB1dEJveCA9IFxcXCJcXFwiO1xcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgYm94RGF0YS5sZW5ndGg7IGkrKyl7XFxuICAgICAgICBsZXQgYiA9IGJveERhdGFbaV07XFxuICAgICAgICBpbnB1dEJveCArPSAnPGRpdiBjbGFzcz1cXFwiYm94IGJhclxcXCI+XFxcXFxcbiAgICAgICAgICAgIDxmb3JtPlxcXFxcXG4gICAgICAgICAgICAgICAgPGxhYmVsIHR5cGU9XFxcInN1Ym1pdFxcXCI+JyArIGIudGl0bGUgKyAnPC9sYWJlbD5cXFxcXFxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVxcXCJ0ZXh0XFxcIiBwbGFjZWhvbGRlcj1cXFwi6L6T5YWl6Kej5p6Q5ZCN5oiW6ICFVVJMLi4uLi4uXFxcIiB2YWx1ZT1cXFwiJyArIGIudmFsdWUgKyAnXFxcIiBpZD1cXFwiJyArIGIuaWQgKyAnXFxcIj5cXFxcXFxuICAgICAgICAgICAgPC9mb3JtPlxcXFxcXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJsaWViXFxcIj5cXFxcXFxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XFxcIicgKyBiLmlkICsgJ1NlbGVjdFxcXCI+4piwPC9idXR0b24+XFxcXFxcbiAgICAgICAgICAgIDwvZGl2PlxcXFxcXG4gICAgICAgIDwvZGl2Pic7XFxuICAgIH1cXG4gICAgRGlkKFxcXCJkaXYyXFxcIikuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGlucHV0Qm94KTtcXG4gICAgRGlkKFxcXCJjalxcXCIpLnBsYWNlaG9sZGVyID0gXFxcIui+k+WFpeaPkuS7tuWcsOWdgC4uLi4uLlxcXCI7XFxuICAgIERpZChcXFwicWp1XFxcIikucGxhY2Vob2xkZXIgPSBcXFwi5q2k6aG55bu66K6u55WZ56m65oiW6ICF5aGr6buY6K6k5Lik5Liq5a2XXFxcIjtcXG4gICAgXFxuICAgIG5ldyBWdWUoe1xcbiAgICAgICAgZWw6IFxcXCIuemotZGl2XFxcIixcXG4gICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICBqeERhdGE6IG15U2VsZWN0LFxcbiAgICAgICAgICAgIGNqRGF0YTogW1xcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcIiwgXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvZHpIb3VzZS9qcy9zcmNhdXRvLmpzXFxcIiwgXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvUGFyc2UtVjJfRG4uanNcXFwiXVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XFxuICAgICAgICB2YXIgbGVuID0gJCgnLmp4LXVsJykuY2hpbGRyZW4oJ2xpJykubGVuZ3RoO1xcbiAgICAgICAgdmFyIGxlbjIgPSAkKCcuY2otdWwnKS5jaGlsZHJlbignbGknKS5sZW5ndGg7XFxuICAgICAgICAkKCcubGllYiBidXR0b24nKS5jbGljayhmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgaWYoJCgnLmxpZWIgYnV0dG9uJykudGV4dCgpLmluY2x1ZGVzKCfilIEnKSl7XFxuICAgICAgICAgICAgICAgICQoJy5saWViIGJ1dHRvbicpLmNzcygnYmFja2dyb3VuZCcsICcnKTtcXG4gICAgICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykudGV4dCgn4piwJyk7XFxuICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgICQodGhpcykudGV4dCgn4pSBJyk7XFxuICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCdiYWNrZ3JvdW5kJywgJ3JlZCcpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAkKCdsaScpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgdmFyIGlucHV0aWQgPSBcXFwiI1xcXCIgKyB0aGlzLmlkLnNwbGl0KFxcXCJTZWxlY3RcXFwiKVswXTtcXG4gICAgICAgICAgICB2YXIgYXJyID0gJChpbnB1dGlkKS52YWwoKS5zcGxpdCgnLCcpO1xcbiAgICAgICAgICAgIGFyciA9IGFyclswXSA9PSAnJyA/IFtdIDogYXJyO1xcbiAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICBpZiAoaW5wdXRpZCAhPT0gJyNjaicgJiYgJCgnLmNqLXVsJykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJykge1xcbiAgICAgICAgICAgICAgICAkKCcuangtdWwnKS5zbGlkZVRvZ2dsZSgzMDApO1xcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxlbjsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIganhMaXN0ID0gJCgnLmp4LXVsIGxpOm5vdCgubXlDaG9pY2UpJykuZXEoaSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyLmluY2x1ZGVzKGp4TGlzdC50ZXh0KCkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAganhMaXN0LmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGp4TGlzdC51bmJpbmQoJ2NsaWNrJykuY2xpY2soZnVuY3Rpb24oZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cignY2hlY2snKSAhPT0gXFxcInRydWVcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnIudW5zaGlmdCgkKHRoaXMpLnRleHQoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXRpZCkudmFsKGFycik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgYXJyLmxlbmd0aDsgYSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyW2FdID09ICQodGhpcykudGV4dCgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZShhLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYoJCgnLmp4LXVsJykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJyl7XFxuICAgICAgICAgICAgICAgICQoJy5jai11bCcpLnNsaWRlVG9nZ2xlKDIwMCk7XFxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY2pMaXN0ID0gJCgnLmNqLXVsIGxpJykuZXEoaSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoJChpbnB1dGlkKS52YWwoKSA9PSBjakxpc3QudGV4dCgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2pMaXN0LmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNqTGlzdC51bmJpbmQoJ2NsaWNrJykuY2xpY2soZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoJCh0aGlzKS50ZXh0KCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5zaWJsaW5ncygpLmF0dHIoJ2NoZWNrJywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgJChkb2N1bWVudCkubm90KCQoJy54bExpc3QnKSkuY2xpY2soZnVuY3Rpb24oZSkge1xcbiAgICAgICAgICAgICQoJy5qeC11bCcpLnNsaWRlVXAoKTtcXG4gICAgICAgICAgICAkKCcuY2otdWwnKS5zbGlkZVVwKCk7XFxuICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykudGV4dCgn4piwJyk7XFxuICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykuY3NzKCdiYWNrZ3JvdW5kJywgJycpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICAkKGZ1bmN0aW9uKCl7XFxuICAgICAgICAgICAgJCgnbGFiZWwnKS5tb3VzZXVwKGZ1bmN0aW9uKCl7XFxuICAgICAgICAgICAgICAgIGxldCBpbnB1dGlkID0gJyMnICsgJCh0aGlzKS5uZXh0KCkuYXR0cignaWQnKTtcXG4gICAgICAgICAgICAgICAgb25lT3JEYmwoaW5wdXRpZCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcXG4gICAgICAgICAgICB2YXIgdGltZXI7XFxuICAgICAgICAgICAgZnVuY3Rpb24gb25lT3JEYmwoaW5wdXRpZCl7XFxuICAgICAgICAgICAgICAgIGNvdW50Kys7XFxuICAgICAgICAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtcXG4gICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ID09IDEpe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnIgPSAkKGlucHV0aWQpLnZhbCgpLnNwbGl0KCcsJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZSgwLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoJycpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XFxuICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDA7XFxuICAgICAgICAgICAgICAgIH0sMjYwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBcXG4gICAgZnVuY3Rpb24gVG9hc3QobXNnLGR1cmF0aW9uKXsgIFxcbiAgICAgICAgZHVyYXRpb249aXNOYU4oZHVyYXRpb24pPzIwMDA6ZHVyYXRpb247ICBcXG4gICAgICAgIHZhciBtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ICBcXG4gICAgICAgIG0uaW5uZXJIVE1MID0gbXNnOyAgXFxuICAgICAgICBtLnN0eWxlLmNzc1RleHQ9XFxcIndpZHRoOjQ1JTsgbWluLXdpZHRoOjE1MHB4OyBiYWNrZ3JvdW5kOiMzMTE7IG9wYWNpdHk6MC42OyBoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OiA0NXB4OyBjb2xvcjojZmZmOyBsaW5lLWhlaWdodDo0NXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czoxMHB4OyBwb3NpdGlvbjpmaXhlZDsgdG9wOjYwJTsgbGVmdDoyNiU7IHotaW5kZXg6OTk5OTk5O1xcXCI7ICBcXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobSk7ICBcXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ICBcXG4gICAgICAgICAgICB2YXIgZCA9IDAuNTsgIFxcbiAgICAgICAgICAgIG0uc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9ICctd2Via2l0LXRyYW5zZm9ybSAnICsgZCArICdzIGVhc2UtaW4sIG9wYWNpdHkgJyArIGQgKyAncyBlYXNlLWluJzsgIFxcbiAgICAgICAgICAgIG0uc3R5bGUub3BhY2l0eSA9ICcwJzsgIFxcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobSkgfSwgZCAqIDEwMDApOyAgXFxuICAgICAgICB9LCBkdXJhdGlvbik7ICBcXG4gICAgfSAgXFxuXFxuICAgIGZ1bmN0aW9uIG9wZW5EblBhZ2UoKXtcXG4gICAgICAgIGZiYS5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBydWxlOiBcXFwiPV5fXj1cXFwiLFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi566h55CG6Kej5p6QXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNcXFwiLFxcbiAgICAgICAgICAgIGZpbmRSdWxlOiBcXFwianM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvanhJdGVtLmpzJyk7anhJdGVtLmp4TGlzdCgpO3NldFJlc3VsdChkKVxcXCJcXG4gICAgICAgIH0pKTtcXG4gICAgfVxcbiAgICBmdW5jdGlvbiBjYW5jZWwoKXtcXG4gICAgICAgIGlmKG15U2V0PT0nJyl7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC53cml0ZUZpbGUob2xkUm91dGUsIEpTT04uc3RyaW5naWZ5KHNldHRpbmdzLCBudWxsLCA0KSk7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5yZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjayhmYWxzZSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgZnVuY3Rpb24gY2xpY2ttZShtc2csZHVyYXRpb24sdGl0bGUpe1xcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGJveERhdGEubGVuZ3RoOyBpKyspe1xcbiAgICAgICAgICAgIGxldCBpZCA9IGJveERhdGFbaV0uaWQ7XFxuICAgICAgICAgICAgc2V0dGluZ3NbaWRdID0gRGlkKGlkKS52YWx1ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmKHNldHRpbmdzLnFqdSA9PSAnJyl7XFxuICAgICAgICAgICAgc2V0dGluZ3MucWp1ID0gJ+m7mOiupCc7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobXlTZWxlY3RbMF0gIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgZXZhbCgndmFyIGJjQ29uZmlnPScgKyBmeV9icmlkZ2VfYXBwLmZldGNoKG5ld1JvdXRlKSk7XFxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihiY0NvbmZpZy5zZXR0aW5ncywgc2V0dGluZ3MpO1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKG5ld1JvdXRlLCAkJCQuc3RyaW5naWZ5KGJjQ29uZmlnKSk7XFxuICAgICAgICB9XFxuICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZShvbGRSb3V0ZSwgJCQkLnN0cmluZ2lmeShzZXR0aW5ncykpO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgVG9hc3QobXNnLGR1cmF0aW9uKTtcXG4gICAgICAgIGlmKHRpdGxlPT1cXFwi5YWzXFxcIil7XFxuICAgICAgICAgICAgaWYoc2ZSZWZyZXNoICE9IERpZChcXFwiY2pcXFwiKS52YWx1ZSl7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjaygpO1xcbiAgICAgICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmJhY2soZmFsc2UpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG48L3NjcmlwdD4gICBcXG48L2h0bWw+XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJQYXJzZV9Ebi5qc1wiLFwicGF0aFwiOlwiUGFyc2VfRG4uanNcIixcInJ1bGVcIjpcIi8vPT09PT09PT09PT095YWN5ZeF6LCD55SoPT09PT09PT09PT09XFxuLy/vvI3vvI3vvI09Xl9ePVxcbnZhciB2ZXJzaW9uID0gXFxcIjMuNS4yNlxcXCI7XFxuXFxudmFyIHBhcnNlUm91dGUgPSAnaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb24nO1xcbnZhciBNeVBhcnNlUyA9IHt9O1xcbnZhciBteVNldCA9IHt9O1xcbmlmIChmaWxlRXhpc3QocGFyc2VSb3V0ZSkpIHtcXG4gICAgZXZhbCgndmFyIHBhcnNlRmlsZSA9JyArIGZldGNoKHBhcnNlUm91dGUpKTtcXG4gICAgTXlQYXJzZVMgPSBwYXJzZUZpbGUuY29kZXM7XFxuICAgIG15U2V0ID0gcGFyc2VGaWxlLnNldHRpbmdzO1xcbn1cXG52YXIgcGFyc2VUaXRsZSA9IFtcXG4gICAgXFxcIvCfpZpcXFwiLFxcbiAgICBcXFwieXVuMTcxN1xcXCIsXFxuICAgIFxcXCJQYW5HdVxcXCIsXFxuICAgIFxcXCJGdVhpbmdcXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9va2p4LmNjLz91cmw9XFxcIixcXG4gICAgXFxcImh0dHBzOi8vangubTN1OC50di9qaWV4aS8/dXJsPVxcXCIsXFxuICAgIFxcXCJodHRwczovL3NiLjVnc2VvLm5ldC8/dXJsPVxcXCJcXG5dO1xcblxcbi8v77yN77yN77yNPV5fXj1cXG5cXG4vL+aOpeWPo+iuvue9ri5cXG5cXG52YXIgc2V0VXJsID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcIjtcXG52YXIgc2V0X3N3aXRjaCA9IHNldFVybDtcXG52YXIgbGF6eSA9IGByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7YXl0bVBhcnNlKGlucHV0KWA7XFxuXFxuLy92YXIgcGFyd2l4ID0gYHZhciB5dXJsPSdodHRwczovL2RhaWxpLm1heWl4aW9uZ2RpLmNuLz91cmw9JztSZWZlcmVyJzogJ2h0dHBzOi8vd3d3Lm1heWl4aW9uZ2RpLmNuL3lzP2lkPSc7J2h0dHBzOi8vZGFpbGkubWF5aXhpb25nZGkuY24vYXBpLnBocCcsICdSZWZlcmVyJzonaHR0cHM6Ly9kYWlsaS5tYXlpeGlvbmdkaS5jbic7XFxuLy8g5YWo5rCRaHR0cHM6Ly9wY3ZpZGVvYWxpeXVuLnRpYW5zaGFuZ3JlbmppYW4ubWd0di5jb20uODh3dW1hLmNvbS8/dXJsPVxcblxcbi8v77yN77yN77yN5aSHIOeUqO+8je+8je+8jVxcbi8qXFxuICog5b2x6KeG5bel5Zy677yaIGh0dHBzOi8veXNnYy5jYy9cXG4gKiDmsZ/muZY6IDU1NeeUteW9sSBodHRwczovL3d3dy41NTVkeTIuY29tL3Bob25lLmh0bWwg772cIDE355yLIGh0dHA6Ly8xN2thbnl5LmNuLyBodHRwOi8vamhqaWV4aS4zMHZyLmNuLz91cmw9IO+9nCBodHRwOi8vYXBpLm1haXppbWFsbC5jb20vaW5kZXgucGhwP3VybD1cXG4gKiDmsZ/muZY6IGh0dHA6Ly93d3cudGlhbnNodXl1bi5uZXQvaW5kZXgucGhwL3ZvZC9wbGF5L2lkLzQ0ODM3Ny9zaWQvMS9uaWQvMS5odG1sXFxuICog5rGf5rmWMjogaHR0cDovLzk4aHlrLmNuL2luZGV4LnBocC92b2QvcGxheS9pZC83Mjg0MS9zaWQvMS9uaWQvMS5odG1sXFxuICog5Lq65Lq66L+3OiBodHRwczovL3ZpcC5zdXNvdS50di9wbGF5ZXIvP3VybD0g772cIGh0dHBzOi8vd3d3Lm1vbWRtLmNjL1xcbiAqIFxcbiAqIHd1aWdlbjogaHR0cHM6Ly93d3cuNWlnZW4uY29tL2RtcGxheWVyL3BsYXllci8/dXJsPVxcbiAqIOW5sumlrSjkurrkurrov7cpOiBodHRwczovL2p4Lnp1aS5jbS8/dXJsPVxcbiAqIGh0dHBzOi8vMi42Nm1vdmllLnRvcC9wbGF5ZXIvP3VybD1cXG4gKiBcXG4gKi9cXG5cXG5cXG52YXIgdG9vbHMgPSB7XFxuICAgIE1ENTogZnVuY3Rpb24oZGF0YSkge1xcbiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5NRDUoZGF0YSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleCk7XFxuICAgIH0sXFxuICAgIEFFUzogZnVuY3Rpb24odGV4dCwga2V5LCBpdiwgaXNFbmNyeXB0KSB7XFxuICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGtleSk7XFxuICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShpdik7XFxuICAgICAgICBpZiAoaXNFbmNyeXB0KSB7XFxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIGtleSwge1xcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICB9KS50b1N0cmluZygpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXG4gICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgIH0sXFxuICAgIC8vYXNjaWlcXG4gICAgbmV4dENoYXJhY3RlcjogZnVuY3Rpb24oYXNjaWlWYWx1ZSwgaykge1xcbiAgICAgICAgdmFyIHMgPSBhc2NpaVZhbHVlO1xcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocyArIGspO1xcbiAgICB9LFxcbiAgICAvL+WHr+aSklxcbiAgICBjYWVzYXJDaXBoZXI6IGZ1bmN0aW9uKHN0cmluZ1ZhbHVlLCBrKSB7XFxuICAgICAgICB2YXIgbmV3U3RyaW5nID0gXFxcIlxcXCI7XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZ1ZhbHVlLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbmV3U3RyaW5nICs9IHRoaXMubmV4dENoYXJhY3RlcihzdHJpbmdWYWx1ZVtpXS5jaGFyQ29kZUF0KCksIGspO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG5ld1N0cmluZztcXG4gICAgfSxcXG4gICAgaGFuZGxlVXJsOiBmdW5jdGlvbih1cmwsIHZpcFVybCkge1xcbiAgICAgICAgaWYgKHVybFswXSA9PSAnLycpIHtcXG4gICAgICAgICAgICB1cmwgPSAnaHR0cHM6JyArIHVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPWh0dHAnKSAhPSAtMSkge1xcbiAgICAgICAgICAgIHVybCA9IHVybC5pbmRleE9mKCcmdXJsPScpID4gLTEgPyB1cmwgOiAnaHR0cCcgKyBkZWNvZGVVUklDb21wb25lbnQodXJsLnNwbGl0KCc9aHR0cCcpWzFdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwubWF0Y2goL21ndHYvZykgPT0gJ21ndHYnKSB7XFxuICAgICAgICAgICAgdXJsID0gdXJsLmluZGV4T2YoJ1VzZXItQWdlbnQnKSA9PSAtMSA/IHVybCArICc7e1VzZXItQWdlbnRAYXBwfScgOiB1cmw7XFxuICAgICAgICB9IGVsc2UgaWYgKHVybC5pbmRleE9mKCcuZmx2JykgIT0gLTEpIHtcXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tVc2VyLUFnZW50QGFwcCYmUmVmZXJlckAnICsgdmlwVXJsICsgJ30nO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHVybCArICcjaXNWaWRlbz10cnVlIyc7XFxuICAgIH1cXG59O1xcblxcbnZhciBQYXJzZVMgPSB7fTtcXG52YXIgb3JpZ2luYWxQYXJzZVMgPSB7XFxuICAgIC8vdXBkYXRlRGF0ZTogdXBkYXRlRGF0ZSxcXG4gICAgQ2l0eUlQOiAnaHR0cDovL3B2LnNvaHUuY29tL2NpdHlqc29uJyxcXG4gICAgcGNVQTogJ1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFzvvJtcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzYnLFxcbiAgICBjYWNoZU0zdTg6IGZ1bmN0aW9uKHZVcmwsIHJlZikge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgbTN1OCA9IGZldGNoKHZVcmwsIHt9KTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvdmlkZW9zLm0zdTgnLCBtM3U4KTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICByZXR1cm4gJ2ZpbGU6Ly8vc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL2NhY2hlL3ZpZGVvcy5tM3U4Iyc7XFxuICAgIH0sXFxuICAgIGRlZmF1bHRQYXJzZTogZnVuY3Rpb24odXJsKSB7XFxuICAgICAgICByZXR1cm4gdXJsO1xcbiAgICB9LFxcbiAgICBtYW9zczogZnVuY3Rpb24oanh1cmwsIHJlZiwga2V5KSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBnZXRWaWRlb0luZm8gPSBmdW5jdGlvbih0ZXh0KSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0b29scy5BRVModGV4dCwga2V5LCBpdik7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAocmVmKSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChodG1sLmluZGV4T2YoJyZidHdhZj0nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICBodG1sID0gcmVxdWVzdChqeHVybCArICcmYnR3YWYnICsgaHRtbC5tYXRjaCgvJmJ0d2FmKC4qPylcXFwiLylbMV0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgaXYgPSBodG1sLnNwbGl0KCdidF90b2tlbiA9IFxcXCInKVsxXS5zcGxpdCgnXFxcIicpWzBdO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5tYXRjaCgvdmFyIGNvbmZpZyA9IHtbXFxcXHNcXFxcU10qP30vKVswXSArICcnKTtcXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybC5zbGljZSgwLCA0KSAhPSAnaHR0cCcpIHtcXG4gICAgICAgICAgICAgICAgY29uZmlnLnVybCA9IGRlY29kZVVSSUNvbXBvbmVudCh0b29scy5BRVMoY29uZmlnLnVybCwgXFxcImR2eVlSUWxuUFJDTWRRU2VcXFwiLCBpdikpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybDtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICByZXR1cm4gJyc7XFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIExMUTogZnVuY3Rpb24oanh1cmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGFwaSA9IGp4dXJsLnNwbGl0KCc/dXJsPScpWzBdICsgXFxcImFwaS5waHBcXFwiO1xcbiAgICAgICAgICAgIHZhciBiNjRpZCA9IGJhc2U2NEVuY29kZShqeHVybC5zcGxpdCgndXJsPScpWzFdKTtcXG4gICAgICAgICAgICB2YXIgcGFyc2VpZCA9IHRvb2xzLmNhZXNhckNpcGhlcihiNjRpZCwgLTEpO1xcbiAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IGp4dXJsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcbiAgICAgICAgICAgICAgICBib2R5OiAndXJsPScgKyBwYXJzZWlkXFxuICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgIHVybCA9IChqc29uLmNvZGUgPT0gMjAwID8gYmFzZTY0RGVjb2RlKHRvb2xzLmNhZXNhckNpcGhlcihqc29uLnVybCwgLTEpKSA6ICcnKTtcXG4gICAgICAgICAgICByZXR1cm4gdXJsO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgUGFuR3U6IGZ1bmN0aW9uKHZpcFVybCwgZGF0YSkge1xcbiAgICAgICAgLyp2YXIgcmVmID0gJ2h0dHBzOi8vd3d3LnBhbmd1amlleGkuY29tLyc7XFxuICAgICAgICB2YXIgcGFyc2UgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpLz91cmw9JyArIHZpcFVybDtcXG4gICAgICAgIHZhciBhcGkgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpL2FwaS5waHAnO1xcbiAgICAgICAgKi9cXG4gICAgICAgIC8vdmFyIHJlZiA9ICdodHRwczovL3hteXN0di5jb20vJztcXG4gICAgICAgIC8vdmFyIHBhcnNlID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9pbmRleC5waHA/dXJsPScgKyB0YWlsVXJsO1xcbiAgICAgICAgLy92YXIgYXBpID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9hcGkucGhwJztcXG4gICAgICAgIHZhciBwYXJzZSA9IFxcXCJodHRwczovL3d3dy5wYW5ndWppZXhpLmNvbS9wYW5ndS8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vcGFuZ3VhcGkubnRyeWpkLm5ldC9wYW5ndTIwMjEvYXBpLnBocFxcXCI7XFxuICAgICAgICBpZiAoZGF0YSkge1xcbiAgICAgICAgICAgIHJlZiA9IGRhdGFbMF07XFxuICAgICAgICAgICAgcGFyc2UgPSBkYXRhWzFdO1xcbiAgICAgICAgICAgIGFwaSA9IGRhdGFbMl07XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgVGltZSA9IChNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkgKiAxKS50b1N0cmluZygpO1xcbiAgICAgICAgdmFyIGpzb24gPSByZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBwYXJzZVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgdmlwVXJsICsgXFxcIiZyZWZlcmVyPVxcXCIgKyBiYXNlNjRFbmNvZGUocGFyc2UpICsgXFxcIiZyZWY9MSZ0aW1lPVxcXCIgKyBUaW1lICsgXFxcIiZ0eXBlPSZvdGhlcj1cXFwiICsgYmFzZTY0RW5jb2RlKHZpcFVybCkgKyBcXFwiJmlvcz0wXFxcIixcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgdXJsID0ganNvblswXSA9PSBcXFwie1xcXCIgPyBKU09OLnBhcnNlKGpzb24pLnVybCA6IFxcXCJcXFwiO1xcbiAgICAgICAgcmV0dXJuIHVybDtcXG4gICAgfSxcXG4gICAgeXVuMTcxNzogZnVuY3Rpb24odmlwVXJsKSB7XFxuICAgICAgICB2YXIgaXN5ayA9IHZpcFVybC5pbmRleE9mKCd5b3VrdScpO1xcbiAgICAgICAgdmFyIHJlZiA9IFxcXCJodHRwczovL3d3dy4xNzE3eXVuLmNvbS9qeC90eS5waHA/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgcGFyc2UgPSBcXFwiaHR0cHM6Ly8xNzE3eXVuLmNvbS56aDE4OC5uZXQvMDgyOC8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vMTcxN3l1bi5jb20uemgxODgubmV0LzEwMDQvLi5pbmRleC4ucGhwXFxcIjtcXG4gICAgICAgIHJldHVybiBpc3lrID09IC0xID8gdGhpcy5QYW5HdSh2aXBVcmwsIFtyZWYsIHBhcnNlLCBhcGldKSA6IHRoaXMuUGFuR3UodmlwVXJsLCBbcmVmICsgJyx2aXA6JywgcGFyc2UgKyAnLHZpcDonLCBhcGldKTtcXG4gICAgfSxcXG4gICAgRnVYaW5nOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgLy9pZih2aXBVcmwuaW5kZXhPZigndi55b3VrdScpIT0tMSl7XFxuICAgICAgICAgICAgLy8gICAgdmlwVXJsID0gKEpTT04ucGFyc2UocmVxdWVzdCh2aXBVcmwsIHtyZWRpcmVjdDpmYWxzZSwgd2l0aEhlYWRlcnM6dHJ1ZX0pKS5oZWFkZXJzLmxvY2F0aW9uICsgJycpLnJlcGxhY2UoL1xcXFw/LiovLCcnKTtcXG4gICAgICAgICAgICAvL31cXG4gICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvP3VybD0nICsgdmlwVXJsO1xcbiAgICAgICAgICAgIHZhciBwYXJzZSA9IHJlZjtcXG4gICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvYXBpdV9meC5waHAnO1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzLlBhbkd1KHZpcFVybCwgW3JlZiwgcGFyc2UsIGFwaV0pO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgXFxcIvCfpZpcXFwiOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIGxldCDkvZzogIVf6KeG55WM55+l5ZCN5aSn5L2sO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBldmFsKGZldGNoKFxcXCJodHRwOi8vcTE2LjIyd2ViLm9yZy9hZXMuanNcXFwiKSk7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHBkZmgoZmV0Y2goXFxcImh0dHA6Ly9xMTYuMjJ3ZWIub3JnL2FwaS5waHBcXFwiKSwgXFxcImJvZHkmJnNjcmlwdCwxJiZIdG1sXFxcIik7XFxuICAgICAgICAgICAgZXZhbCh1cmwucmVwbGFjZShcXFwiZG9jdW1lbnQuXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcImxvY2F0aW9uLlxcXCIsIFxcXCJcXFwiKSk7XFxuICAgICAgICAgICAgdmFyIHBsYXkgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vcTE2LjIyd2ViLm9yZy9hcGkucGhwXFxcIiwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogY29va2llLnNwbGl0KFxcXCI7XFxcIilbMF1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgaW5wdXQsXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgICAgICAgICAgfSkpLnVybDtcXG4gICAgICAgICAgICBpZiAocGxheS5zdGFydHNXaXRoKFxcXCIvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJodHRwczpcXFwiICsgcGxheTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGxheTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxufTtcXG5cXG5PYmplY3QuYXNzaWduKFBhcnNlUywgb3JpZ2luYWxQYXJzZVMsIE15UGFyc2VTKTtcXG4vL+imhueblumhuuW6j++8jOesrOS4ieS4quimhuebluesrOS6jOS4queEtuWQjuimhuebluesrOS4gOS4qlxcblxcblxcbmZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwsIHBhcnNlTmFtZSkge1xcbiAgICB0aGlzLnJlcXVlc3QgPSBmdW5jdGlvbihwYXJhbTAsIHBhcmFtMSwgcGFyYW0yKSB7XFxuICAgICAgICBwYXJhbTEgPSBwYXJhbTEgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTE7XFxuICAgICAgICBpZihpc05hTihwYXJhbTEudGltZW91dCkpIHtcXG4gICAgICAgICAgICBwYXJhbTEudGltZW91dCA9IDI1MDA7XFxuICAgICAgICB9XFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFO1xcbiAgICAgICAgdmFyIHJldFN0ciA9IG1ldGhvZF9yZXF1ZXN0Lmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdGhpcy5mZXRjaCA9IGZ1bmN0aW9uKHBhcmFtMCwgcGFyYW0xLCBwYXJhbTIpIHtcXG4gICAgICAgIHBhcmFtMSA9IHBhcmFtMSA9PSB1bmRlZmluZWQgPyB7fSA6IHBhcmFtMTtcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzID0gcGFyYW0xLmhlYWRlcnMgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTEuaGVhZGVycztcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzWydVc2VyLUFnZW50J10gPSBQQ19VQTtcXG4gICAgICAgIGlmKGlzTmFOKHBhcmFtMS50aW1lb3V0KSkge1xcbiAgICAgICAgICAgIHBhcmFtMS50aW1lb3V0ID0gMjUwMDtcXG4gICAgICAgIH1cXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEU7XFxuICAgICAgICB2YXIgcmV0U3RyID0gbWV0aG9kX2ZldGNoLmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdmFyIGhvc3QgPSB2aXBVcmwubWF0Y2goL1xcXFwuKC4qPylcXFxcLy8pO1xcbiAgICBob3N0ID0gaG9zdCA9PSBudWxsID8gbnVsbCA6IGhvc3RbMV07XFxuICAgIHZhciBub1VybCA9IFxcXCJ0b2FzdDovL+aOpeaUtuWIsOeahOmTvuaOpeS4ujogXFxcIjtcXG4gICAgc3dpdGNoIChteVNldC5xanUpIHtcXG4gICAgICAgIGNhc2UgXFxcIum7mOiupFxcXCI6XFxuICAgICAgICAgICAgc3dpdGNoIChob3N0KSB7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcInFxLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC50eDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCJpcWl5aS5jb21cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gbXlTZXQucXk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwieW91a3UuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0LnlrO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIm1ndHYuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0Lm1nO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcImJpbGliaWxpLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC5ibDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gaG9zdCA9PSBudWxsID8gbm9VcmwgOiBteVNldC5vdGg7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIHN0ciA9IGhvc3QgPT0gbnVsbCA/IG5vVXJsIDogbXlTZXQucWp1O1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxuICAgIGlmIChwYXJzZU5hbWUpIHtcXG4gICAgICAgIHN0ciA9IHBhcnNlTmFtZTtcXG4gICAgfVxcbiAgICBsZXQgbXlDaG9pY2UgPSBzdHIuc3BsaXQoJywnKTtcXG4gICAgbGV0IGxlbiA9IG15Q2hvaWNlLmxlbmd0aDtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgbGV0IG5hbWUgPSBteUNob2ljZVtpXTtcXG4gICAgICAgIGlmICh0eXBlb2YgUGFyc2VTW25hbWVdID09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gUGFyc2VTW25hbWVdKHZpcFVybCk7XFxuICAgICAgICAgICAgbGV0IFJlZyA9IC9tM3U4fG1wNHxodHRwLztcXG4gICAgICAgICAgICBpZiAoaSAhPSBsZW4gLSAxICYmICFSZWcudGVzdCh1cmwpKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhuYW1lICsgJ+ino+aekOWksei0pScpO1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKCFSZWcudGVzdCh1cmwpIHx8IHVybCA9PSB2aXBVcmwpIHtcXG4gICAgICAgICAgICAgICAgbG9nKG5hbWUgKyAn6Kej5p6Q5aSx6LSlJyk7XFxuICAgICAgICAgICAgICAgIHJldHVybiB2aXBVcmw7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2xzLmhhbmRsZVVybCh1cmwsIHZpcFVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgUGFyc2VTW25hbWVdID09ICdzdHJpbmcnKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFBhcnNlUy5kZWZhdWx0UGFyc2UoUGFyc2VTW25hbWVdICsgdmlwVXJsLCB0b29scy5oYW5kbGVVcmwsIG5hbWUpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHIoMCwgNCkgPT0gXFxcImh0dHBcXFwiIHx8IGhvc3QgPT0gbnVsbCA/IG5hbWUgKyB2aXBVcmwgOiBcXFwidG9hc3Q6Ly9cXFwiICsgbmFtZSArIFxcXCIg5LiN5piv55u06ZO+5Lmf5LiN5piv5YWN5ZeFXFxcIjtcXG4gICAgICAgIH1cXG4gICAgfVxcbn07XFxuXFxudmFyIHBsYXlQYXJzZSA9IHtcXG4gICAgcGxheWVyX3h4OiBmdW5jdGlvbihqdXJsLCBMYWJlbCkge1xcbiAgICAgICAgcmV0dXJuICQoanVybCkubGF6eVJ1bGUoKExhYmVsKSA9PiB7XFxuICAgICAgICAgICAgcmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1xcbiAgICAgICAgICAgIHZhciBmYSA9IFsnbGV0dicsICdwcHR2JywgJ3FxJywgJ3lvdWt1JywgJ3FpeWknLCAnaXFpeWknLCAnbWd0dicsICdiaWxpYmlsaScsICdzb2h1JywgJ21pZ3UnLCAnbTE5MDUnLCAndmlwJ107XFxuICAgICAgICAgICAgdmFyIGh0bWwgPSBwYXJzZURvbShyZXF1ZXN0KGlucHV0KSwgTGFiZWwpO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5yZXBsYWNlKC9wbGF5ZXJfLio/PXsvLCAncGRhdGE9eycpKTtcXG4gICAgICAgICAgICBpZiAocGRhdGEudXJsLnN1YnN0cigwLCA4KS5tYXRjaCgvSlQuLkpULi4vKSkge1xcbiAgICAgICAgICAgICAgICBwZGF0YS51cmwgPSBiYXNlNjREZWNvZGUocGRhdGEudXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHBkYXRhLnVybC5zdWJzdHIoMCwgOCkubWF0Y2goLyUuLiUuLi8pKSB7XFxuICAgICAgICAgICAgICAgIHBkYXRhLnVybCA9IHVuZXNjYXBlKHBkYXRhLnVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChmYS5pbmNsdWRlcyhwZGF0YS5mcm9tKSA9PSB0cnVlKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UocGRhdGEudXJsKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGRhdGEudXJsICsgJyNpc1ZpZGVvPXRydWUjJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBMYWJlbClcXG4gICAgfVxcbn07XFxuXFxuZnVuY3Rpb24gc2V0UGFyc2UoKSB7XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuICAgIFJvdXRlLnNldFBhcnNlKCk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIlJvdXRlXCIsXCJydWxlXCI6XCJqczpcXG5yZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuc3dpdGNoIChnZXRQYXJhbShcXFwidHlwZVxcXCIpKSB7XFxuICAgIGNhc2UgXFxcIuiuvue9rlxcXCI6XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICAgICAgUm91dGUuc2V0UGFyc2UoKTtcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIFxcXCLnvJbovpFcXFwiOlxcbiAgICB0aGlzLmQgPSBbXTtcXG4gICByZXF1aXJlKGZMaW5rcy5qeEl0VXJsKTtcXG4gICBqeEl0ZW0uanhMaXN0KCk7XFxuICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgJC5leHBvcnRzID0gUm91dGU7XFxuICAgICAgICBicmVhaztcXG59XFxuXCJ9XSIsImljb24iOiJodHRwczovL3N0YXRpYzAxLmltZ2tyLmNvbS90ZW1wLzIzODEzN2VmYjYxNjQ1ODc5Njg3YTg1MDNmMzRkODkzLnBuZyJ9
重新导入原版啊
同求希望有详细教程