{"remainingRequest":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\ljzc-fvue\\src\\views\\assetsOperating\\HomePage\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\src\\views\\assetsOperating\\HomePage\\index.vue","mtime":1703585192310},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\babel.config.js","mtime":1701311296006},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gJ2VjaGFydHMnOwppbXBvcnQgdXRpbHMgZnJvbSAnQC91dGlscy5qcyc7CmltcG9ydCBQdWJsaWNUaXRsZSBmcm9tICdAL2NvbXBvbmVudHMvUHVibGljVGl0bGUvaW5kZXgnOwppbXBvcnQgYXBpIGZyb20gJ0AvYXBpL2Fzc2V0c09wZXJhdGluZy9hc3NldHNPcGVyYXRpbmcuanMnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0hvbWVQYWdlJywKICAvLyDpppbpobUKICBjb21wb25lbnRzOiB7CiAgICBQdWJsaWNUaXRsZTogUHVibGljVGl0bGUKICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBjb2xvckxpc3Q6IFsnIzU1ZWRiMCcsICcjMDBkNGZmJywgJyNjNjc5ZTUnLCAnIzE5OGNmZiddLAogICAgICBhY3RpdmU6IDEsCiAgICAgIGFyZWFBY3RpdmU6IDEsCiAgICAgIHRvcFN0YXRpc3RpY3M6IHsKICAgICAgICBib29rVmFsdWU6ICcxMzUsMjc4LDc0My41NScsCiAgICAgICAgc3RydWN0dXJlQXJlYTogJzEsMTk0LDMzNy42OScsCiAgICAgICAgdW5jb25maXJtQXJlYTogJzEsMTk0LDMzNy42OScsCiAgICAgICAgeWVhckVhcm5pbmdzOiAnMTI4LDgxNCw3MzMuMjcnLAogICAgICAgIHVudXNlZEFyZWE6ICcxMjgsODE0LDczMy4yNycsCiAgICAgICAgaGlyZUFyZWE6ICcxMjgsODE0LDczMy4yNycKICAgICAgfSwKICAgICAgLy/pobbpg6jnu5/orqEKICAgICAgc3RhdGlzdGljc0xpc3Q6IFt7CiAgICAgICAgbGFiZWw6ICflupTmlLbnp5/ph5Eo5LiH5YWDKScsCiAgICAgICAgdmFsdWU6IDQwCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WunuaUtuenn+mHkSjkuIflhYMpJywKICAgICAgICB2YWx1ZTogMzIKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn6YC+5pyf5qyg56ef5pWw6YePKOS4qiknLAogICAgICAgIHZhbHVlOiA4CiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+asoOaUtuenn+mHkSjkuIflhYMpJywKICAgICAgICB2YWx1ZTogMAogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfmlrDlop7lkIjlkIwo5LiqKScsCiAgICAgICAgdmFsdWU6IDIzCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+e7reetvuWQiOWQjCjkuKopJywKICAgICAgICB2YWx1ZTogMzMKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5Yiw5pyf5ZCI5ZCMKOS4qiknLAogICAgICAgIHZhbHVlOiAwCiAgICAgIH1dLAogICAgICByZW50eERhdGE6IFsn5ZKM6ZSm5a625Zut5ZWG5Lia6Zeo6Z2iJywgJ+WSjOaso+WutuWbrTY05bmi5bqV5ZWGJywgJ+WSjOaso+WutuWbrTY45bmi5bqV5ZWGJywgJ+WSjOaso+WutuWbrTQ05bmi5bqV5ZWGJywgJ+WSjOaso+WutuWbrTTluaLlupXllYYnXSwKICAgICAgcmVudHlEYXRhOiBbOTAsIDgwLCA3MCwgNjAsIDMwLCAyMF0sCiAgICAgIGFyZWFEYXRhOiBbewogICAgICAgIG5hbWU6ICfmlL/lupzotYTkuqcnLAogICAgICAgIHZhbHVlOiAzMCwKICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgIGNvbG9yOiAnIzE5OENGRicKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAn5LyB5Lia6LWE5LqnJywKICAgICAgICB2YWx1ZTogMTIwLAogICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgY29sb3I6ICcjNTVFREIwJwogICAgICAgIH0KICAgICAgfV0KICAgIH07CiAgfSwKICB3YXRjaDoge30sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHt9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICBfdGhpcy5pbml0UHJvamVjdFRvcCgpOwogICAgICBfdGhpcy5pbml0Q2hhdCgpOwogICAgICBfdGhpcy5pbml0QXJlYUNoYXQoKTsKICAgICAgX3RoaXMuaW5pdFZpdGFsaXplQ2hhdCgpOwogICAgICBfdGhpcy5pbml0UmVwYWlyQ2hhdCgpOwogICAgICBfdGhpcy5pbml0RGlzcG9zZUNoYXQoKTsKICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgLy/lrZflhbjnv7vor5EKICAgIGdldERpY3ROYW1lOiBmdW5jdGlvbiBnZXREaWN0TmFtZShjb2RlLCB2YWx1ZSkgewogICAgICByZXR1cm4gdXRpbHMuZ2V0RGljdE5hbWUoY29kZSwgdmFsdWUpOwogICAgfSwKICAgIGNoZWNrVGFiOiBmdW5jdGlvbiBjaGVja1RhYih2YWwpIHsKICAgICAgdGhpcy5hY3RpdmUgPSB2YWw7CiAgICAgIGlmICh2YWwgPT0gMSkgewogICAgICAgIHRoaXMucmVudHhEYXRhID0gWyflkozplKblrrblm63llYbkuJrpl6jpnaInLCAn5ZKM5qyj5a625ZutNjTluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNjjluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNDTluaLlupXllYYnLCAn5ZKM5qyj5a625ZutNOW5ouW6leWVhiddOwogICAgICAgIHRoaXMucmVudHlEYXRhID0gWzkwLCA4MCwgNzAsIDYwLCAzMCwgMjBdOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucmVudHhEYXRhID0gWyflkozmrKPlrrblm602OOW5ouW6leWVhicsICflkozmrKPlrrblm600NOW5ouW6leWVhicsICflkozmrKPlrrblm6005bmi5bqV5ZWGJywgJ+WSjOmUpuWutuWbreWVhuS4mumXqOmdoicsICflkozmrKPlrrblm602NOW5ouW6leWVhiddOwogICAgICAgIHRoaXMucmVudHlEYXRhID0gWzg4LCA3NywgNjYsIDU0LCAzMiwgMzBdOwogICAgICB9CiAgICAgIHRoaXMuaW5pdFByb2plY3RUb3AoKTsKICAgIH0sCiAgICBjaGVja0FyZWFUYWI6IGZ1bmN0aW9uIGNoZWNrQXJlYVRhYih2YWwpIHsKICAgICAgdGhpcy5hcmVhQWN0aXZlID0gdmFsOwogICAgICBpZiAodmFsID09PSAxKSB7CiAgICAgICAgdGhpcy5hcmVhRGF0YSA9IFt7CiAgICAgICAgICBuYW1lOiAn5pS/5bqc6LWE5LqnJywKICAgICAgICAgIHZhbHVlOiAzMCwKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBjb2xvcjogJyMxOThDRkYnCiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+S8geS4mui1hOS6pycsCiAgICAgICAgICB2YWx1ZTogMTIwLAogICAgICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgICAgIGNvbG9yOiAnIzU1RURCMCcKICAgICAgICAgIH0KICAgICAgICB9XTsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09IDIpIHsKICAgICAgICB0aGlzLmFyZWFEYXRhID0gW3sKICAgICAgICAgIG5hbWU6ICfpl7Lnva4nLAogICAgICAgICAgdmFsdWU6IDMwCiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+iHqueUqCcsCiAgICAgICAgICB2YWx1ZTogNDAKICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Ye656efJywKICAgICAgICAgIHZhbHVlOiA0MAogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICfooqvljaDnlKgnLAogICAgICAgICAgdmFsdWU6IDUKICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5a2Y6YePJywKICAgICAgICAgIHZhbHVlOiAyMAogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICfmlrDlop4nLAogICAgICAgICAgdmFsdWU6IDMwCiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+WFtuS7licsCiAgICAgICAgICB2YWx1ZTogMTAKICAgICAgICB9XTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmFyZWFEYXRhID0gW3sKICAgICAgICAgIG5hbWU6ICfoh6rlu7onLAogICAgICAgICAgdmFsdWU6IDg4CiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+i0reS5sCcsCiAgICAgICAgICB2YWx1ZTogMTIwCiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+WIkuaLlCcsCiAgICAgICAgICB2YWx1ZTogNDAKICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn572u5o2iJywKICAgICAgICAgIHZhbHVlOiA3NwogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICflh7rorqknLAogICAgICAgICAgdmFsdWU6IDU1CiAgICAgICAgfV07CiAgICAgIH0KICAgICAgdGhpcy5pbml0QXJlYUNoYXQoKTsKICAgIH0sCiAgICAvL+mhueebrue7j+iQpeaOkuWQjQogICAgaW5pdFByb2plY3RUb3A6IGZ1bmN0aW9uIGluaXRQcm9qZWN0VG9wKCkgewogICAgICB2YXIgY2hhcnREb20gPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2plY3QtY2hhcnQnKSk7CiAgICAgIHZhciBvcHRpb24gPSB7CiAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgdHJpZ2dlcjogJ2F4aXMnLAogICAgICAgICAgYXhpc1BvaW50ZXI6IHsKICAgICAgICAgICAgLy8g5Z2Q5qCH6L205oyH56S65Zmo77yM5Z2Q5qCH6L206Kem5Y+R5pyJ5pWICiAgICAgICAgICAgIHR5cGU6ICdzaGFkb3cnIC8vIOm7mOiupOS4uuebtOe6v++8jOWPr+mAieS4uu+8midsaW5lJyB8ICdzaGFkb3cnCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBncmlkOiB7CiAgICAgICAgICBsZWZ0OiAnNCUnLAogICAgICAgICAgdG9wOiAnMCcsCiAgICAgICAgICByaWdodDogJzAnLAogICAgICAgICAgYm90dG9tOiAnMCcsCiAgICAgICAgICBjb250YWluTGFiZWw6IHRydWUKICAgICAgICB9LAogICAgICAgIHhBeGlzOiBbewogICAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgICB0eXBlOiAndmFsdWUnLAogICAgICAgICAgbmFtZTogJyjljZXkvY065qyhKScKICAgICAgICB9XSwKICAgICAgICB5QXhpczogW3sKICAgICAgICAgIGRhdGE6IHRoaXMucmVudHhEYXRhLAogICAgICAgICAgaW52ZXJzZTogdHJ1ZSwKICAgICAgICAgIC8v5Y+N5ZCRCiAgICAgICAgICBheGlzTGluZTogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNUaWNrOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgICAgIGZvbnRTaXplOiAxMiwKICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiBmb3JtYXR0ZXIodmFsdWUsIGluZGV4KSB7CiAgICAgICAgICAgICAgLy8gdmFyIHN1cmVJbmQgPSB4RGF0YS5tYXAoaXRlbSA9PiBpdGVtKS5pbmRleE9mKHZhbHVlKSArIDEKICAgICAgICAgICAgICB2YXIgc3VyZUluZCA9IGluZGV4ICsgMTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzdXJlSW5kKTsKICAgICAgICAgICAgICBpZiAoc3VyZUluZCA9PSAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ3thfCcgKyBzdXJlSW5kICsgJ30nICsgJ3tlfCcgKyB2YWx1ZSArICd9JzsKICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN1cmVJbmQgPT0gMikgewogICAgICAgICAgICAgICAgcmV0dXJuICd7YnwnICsgc3VyZUluZCArICd9JyArICd7ZXwnICsgdmFsdWUgKyAnfSc7CiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdXJlSW5kID09IDMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAne2N8JyArIHN1cmVJbmQgKyAnfScgKyAne2V8JyArIHZhbHVlICsgJ30nOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ3tkfCcgKyBzdXJlSW5kICsgJ30nICsgJ3tlfCcgKyB2YWx1ZSArICd9JzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJpY2g6IHsKICAgICAgICAgICAgICBhOiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjRkZFMzg3IiwKICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCwKICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsCiAgICAgICAgICAgICAgICB3aWR0aDogMTgsCiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4LAogICAgICAgICAgICAgICAgbGluZUhlaWdodDogMTgsCiAgICAgICAgICAgICAgICBhbGlnbjogImNlbnRlciIsCiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDkKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGNvbG9yOiAnIzY2NjY2NicsCiAgICAgICAgICAgICAgICB3aWR0aDogMTAwCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBiOiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjRDBFMEVCIiwKICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCwKICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsCiAgICAgICAgICAgICAgICB3aWR0aDogMTgsCiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4LAogICAgICAgICAgICAgICAgbGluZUhlaWdodDogMTgsCiAgICAgICAgICAgICAgICBhbGlnbjogImNlbnRlciIsCiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDkKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGM6IHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogIiNGM0JFQUMiLAogICAgICAgICAgICAgICAgZm9udFdlaWdodDogNzAwLAogICAgICAgICAgICAgICAgY29sb3I6ICcjMDAwJywKICAgICAgICAgICAgICAgIHdpZHRoOiAxOCwKICAgICAgICAgICAgICAgIGhlaWdodDogMTgsCiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAxOCwKICAgICAgICAgICAgICAgIGFsaWduOiAiY2VudGVyIiwKICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogOQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgZDogewogICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAsCiAgICAgICAgICAgICAgICBjb2xvcjogJyMwMDAnLAogICAgICAgICAgICAgICAgd2lkdGg6IDE4LAogICAgICAgICAgICAgICAgaGVpZ2h0OiAxOCwKICAgICAgICAgICAgICAgIGFsaWduOiAiY2VudGVyIiwKICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDE4LAogICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA5CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgaW52ZXJzZTogdHJ1ZSwKICAgICAgICAgIC8v5Y+N5ZCRCiAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JywKICAgICAgICAgIC8v5Z2Q5qCH6L205L2N572u77yM56e76Iez5Y+z6L65CiAgICAgICAgICBheGlzTGluZTogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNUaWNrOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgICBkYXRhOiB0aGlzLnJlbnR4RGF0YSwKICAgICAgICAgIGF4aXNMYWJlbDogewogICAgICAgICAgICBjb2xvcjogIiMzMzMiLAogICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uIGZvcm1hdHRlcih2YWx1ZSwgaW5kZXgpIHsKICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gNykgewogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIDYpICsgIi4uLiI7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9XSwKICAgICAgICBzZXJpZXM6IFt7CiAgICAgICAgICB0eXBlOiAnYmFyJywKICAgICAgICAgIGRhdGE6IHRoaXMucmVudHlEYXRhLAogICAgICAgICAgYmFyV2lkdGg6ICcxNScsCiAgICAgICAgICBzdGFjazogJ3VzZXInLAogICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgLy8g5pi+56S65qCH562+CiAgICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLAogICAgICAgICAgICBmb250U2l6ZTogMTYsCiAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsCiAgICAgICAgICAgIG9mZnNldDogWzEwLCAyXQogICAgICAgICAgfSwKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBjb2xvcjogewogICAgICAgICAgICAgIHR5cGU6ICdsaW5lYXInLAogICAgICAgICAgICAgIHg6IDEsCiAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICB4MjogMCwKICAgICAgICAgICAgICB5MjogMCwKICAgICAgICAgICAgICBjb2xvclN0b3BzOiBbewogICAgICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgY29sb3I6ICcjMTk4Q0ZGJyAvLyDmuJDlj5jotbflp4vpopzoibLvvIjnu7/oibLvvIkKICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsCiAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjUsIDE0MCwgMjU1LDAuMiknIC8vIOa4kOWPmOe7k+adn+minOiJsu+8iOa3see7v+iJsu+8iQogICAgICAgICAgICAgIH1dCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWzAsIDMsIDMsIDBdIC8vIOiuvue9ruWchuinkuWkp+WwjwogICAgICAgICAgfQogICAgICAgIH1dCiAgICAgIH07CiAgICAgIGNoYXJ0RG9tLnNldE9wdGlvbihvcHRpb24pOwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24gKCkgewogICAgICAgIGNoYXJ0RG9tLnJlc2l6ZSgpOwogICAgICB9KTsKICAgIH0sCiAgICAvL+i1hOS6p+S4muaAgeS7t+WAvOWIhuaekAogICAgaW5pdENoYXQ6IGZ1bmN0aW9uIGluaXRDaGF0KCkgewogICAgICB2YXIgeERhdGEgPSBbJ+mkkOmlricsICfpm7bllK4nLCAn5ZOB54mM5ZWG5a62JywgJ+i9puS9jScsICfphY3lpZforr7mlr0nLCAn6LaF5biCJywgJ+S9j+WuhScsICflhpnlrZfmpbwnLCAn6KGM5pS/5pyN5YqhJywgJ+WOguaIvycsICfku5PlupPlrabmoKEnLCAn6YWS5bqXJywgJ+WMu+mZoiddOwogICAgICB2YXIgYm9va0RhdGEgPSBbNDAsIDYwLCA0MCwgNjAsIDQwLCA2MCwgNDAsIDYwLCA0MCwgNjAsIDYwLCA0MCwgNjBdOwogICAgICB2YXIgc3RydWN0dXJlRGF0YSA9IFsyMCwgMzAsIDIwLCA2MCwgMjAsIDMwLCAyMCwgMzAsIDIwLCAzMCwgMzAsIDIwLCAzMF07CiAgICAgIHZhciBjaGFydERvbSA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVyY2lhbC1jaGFydCcpKTsKICAgICAgdmFyIG9wdGlvbiA9IHsKICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICB0cmlnZ2VyOiAnYXhpcycsCiAgICAgICAgICBheGlzUG9pbnRlcjogewogICAgICAgICAgICAvLyDlnZDmoIfovbTmjIfnpLrlmajvvIzlnZDmoIfovbTop6blj5HmnInmlYgKICAgICAgICAgICAgdHlwZTogJ3NoYWRvdycgLy8g6buY6K6k5Li655u057q/77yM5Y+v6YCJ5Li677yaJ2xpbmUnIHwgJ3NoYWRvdycKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGxlZ2VuZDogewogICAgICAgICAgZGF0YTogWyfotKbpnaLlh4DlgLwnLCAn6Z2i56evJ10sCiAgICAgICAgICBhbGlnbjogJ2xlZnQnLAogICAgICAgICAgcGFkZGluZzogWzE1LCAwLCAwLCAwXQogICAgICAgIH0sCiAgICAgICAgZ3JpZDogewogICAgICAgICAgbGVmdDogJzMlJywKICAgICAgICAgIHJpZ2h0OiAnNCUnLAogICAgICAgICAgYm90dG9tOiAnMyUnLAogICAgICAgICAgY29udGFpbkxhYmVsOiB0cnVlCiAgICAgICAgfSwKICAgICAgICB4QXhpczogW3sKICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeScsCiAgICAgICAgICBkYXRhOiB4RGF0YSwKICAgICAgICAgIGF4aXNUaWNrOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xpbmU6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgICAgICAgY29sb3I6ICcjQTFBOUIyJyAvLyDmtYXngbDoibIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH1dLAogICAgICAgIHlBeGlzOiBbewogICAgICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgICAgIG5hbWU6ICfljZXkvY3vvJrkuIflhYMnLAogICAgICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgICAgIGZvcm1hdHRlcjogJ3t2YWx1ZX0nCiAgICAgICAgICB9LAogICAgICAgICAgc3BsaXRMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xpbmU6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgICAgICAgY29sb3I6ICcjQTFBOUIyJyAvLyDmtYXngbDoibIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgICAgICBuYW1lOiAn5Y2V5L2N77ya446hJywKICAgICAgICAgIGF4aXNMYWJlbDogewogICAgICAgICAgICBmb3JtYXR0ZXI6ICd7dmFsdWV9JwogICAgICAgICAgfSwKICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLAogICAgICAgICAgc3BsaXRMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xpbmU6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgICAgICAgY29sb3I6ICcjQTFBOUIyJyAvLyDmtYXngbDoibIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH1dLAogICAgICAgIHNlcmllczogW3sKICAgICAgICAgIG5hbWU6ICfotKbpnaLlh4DlgLwnLAogICAgICAgICAgdHlwZTogJ2JhcicsCiAgICAgICAgICBkYXRhOiBib29rRGF0YSwKICAgICAgICAgIGJhcldpZHRoOiAnMTUnLAogICAgICAgICAgeUF4aXNJbmRleDogMCwKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBjb2xvcjogewogICAgICAgICAgICAgIHR5cGU6ICdsaW5lYXInLAogICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICB4MjogMCwKICAgICAgICAgICAgICB5MjogMSwKICAgICAgICAgICAgICBjb2xvclN0b3BzOiBbewogICAgICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgY29sb3I6ICcjNTVFREIwJyAvLyDmuJDlj5jotbflp4vpopzoibLvvIjnu7/oibLvvIkKICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsCiAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoODUsMjM3LDE3NiwwLjIpJyAvLyDmuJDlj5jnu5PmnZ/popzoibLvvIjmt7Hnu7/oibLvvIkKICAgICAgICAgICAgICB9XQogICAgICAgICAgICB9LAogICAgICAgICAgICBib3JkZXJSYWRpdXM6IFszLCAzLCAwLCAwXSAvLyDorr7nva7lnIbop5LlpKflsI8KICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn6Z2i56evJywKICAgICAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgICAgIGRhdGE6IHN0cnVjdHVyZURhdGEsCiAgICAgICAgICAvLyBiYXJXaWR0aDogJzE1JywKICAgICAgICAgIHlBeGlzSW5kZXg6IDEsCiAgICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgICAgY29sb3I6ICcjMTk4Q0ZGJwogICAgICAgICAgfQogICAgICAgIH1dCiAgICAgIH07CiAgICAgIGNoYXJ0RG9tLnNldE9wdGlvbihvcHRpb24pOwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24gKCkgewogICAgICAgIGNoYXJ0RG9tLnJlc2l6ZSgpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDotYTkuqfpnaLnp6/mg4XlhrUKICAgIGluaXRBcmVhQ2hhdDogZnVuY3Rpb24gaW5pdEFyZWFDaGF0KCkgewogICAgICB2YXIgY2hhcnREb20gPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyZWEtY2hhcnQnKSk7CiAgICAgIHZhciBvcHRpb24gPSB7CiAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgdHJpZ2dlcjogJ2l0ZW0nCiAgICAgICAgfSwKICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgIHg6ICdyaWdodCcsCiAgICAgICAgICBhbGlnbjogJ2xlZnQnLAogICAgICAgICAgdG9wOiAnY2VudGVyJywKICAgICAgICAgIG9yaWVudDogJ3ZlcnRpY2FsJwogICAgICAgIH0sCiAgICAgICAgc2VyaWVzOiBbewogICAgICAgICAgbmFtZTogJ+mdouenrycsCiAgICAgICAgICB0eXBlOiAncGllJywKICAgICAgICAgIHJhZGl1czogWyc1NSUnLCAnNjclJ10sCiAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwKICAgICAgICAgIGF2b2lkTGFiZWxPdmVybGFwOiBmYWxzZSwKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBib3JkZXJDb2xvcjogJyNmZmYnLAogICAgICAgICAgICBib3JkZXJXaWR0aDogMgogICAgICAgICAgfSwKICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlLAogICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicKICAgICAgICAgIH0sCiAgICAgICAgICBlbXBoYXNpczogewogICAgICAgICAgICBsYWJlbDogewogICAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICAgICAgZm9udFNpemU6IDMwLAogICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gZm9ybWF0dGVyKHBhcmFtcykgewogICAgICAgICAgICAgICAgcmV0dXJuIFsne251bXwnICsgcGFyYW1zLnZhbHVlICsgJ30nICsgJ3t1bml0fOS4qn0nLCAne2xhYmVsfCcgKyBwYXJhbXMubmFtZSArICd9J10uam9pbignXG4nKTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHJpY2g6IHsKICAgICAgICAgICAgICAgIG51bTogewogICAgICAgICAgICAgICAgICBmb250U2l6ZTogMzAsCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsCiAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLAogICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1bml0OiB7CiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxNCwKICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMTExJywKICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMzAsCiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IFswLCA1XQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyMCwKICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMzAsCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzQ0NCcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBsYWJlbExpbmU6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBkYXRhOiB0aGlzLmFyZWFEYXRhCiAgICAgICAgfSwgewogICAgICAgICAgdHlwZTogJ3BpZScsCiAgICAgICAgICByYWRpdXM6IFsnNTAlJywgJzUwJSddLAogICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sCiAgICAgICAgICBob3ZlckFuaW1hdGlvbjogZmFsc2UsCiAgICAgICAgICBjbG9ja1dpc2U6IGZhbHNlLAogICAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsCiAgICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgICAgbm9ybWFsOiB7CiAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsCiAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjZWFlYWVhJwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgZGF0YTogWzEwMF0KICAgICAgICB9LCB7CiAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLAogICAgICAgICAgcmFkaXVzOiAnOTglJywKICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLAogICAgICAgICAgY2xvY2t3aXNlOiB0cnVlLAogICAgICAgICAgc3RhcnRBbmdsZTogJzEwMCcsCiAgICAgICAgICBlbmRBbmdsZTogJy0yNjkuOTk5OScsCiAgICAgICAgICBzcGxpdE51bWJlcjogMjAwLAogICAgICAgICAgLy/nur/nmoTmnaHmlbAKICAgICAgICAgIHBvaW50ZXI6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBheGlzTGluZTogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNUaWNrOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIHNwbGl0TGluZTogewogICAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgICBsZW5ndGg6IDE1LAogICAgICAgICAgICBsaW5lU3R5bGU6IHsKICAgICAgICAgICAgICBjb2xvcjogJyNlYWVhZWEnLAogICAgICAgICAgICAgIHdpZHRoOiAxCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBheGlzTGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLAogICAgICAgICAgcmFkaXVzOiAnODMuNSUnLAogICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sCiAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsCiAgICAgICAgICBzdGFydEFuZ2xlOiAnMTAwJywKICAgICAgICAgIGVuZEFuZ2xlOiAnLTI2OS45OTk5JywKICAgICAgICAgIHNwbGl0TnVtYmVyOiAxNDAsCiAgICAgICAgICAvL+e6v+eahOadoeaVsAogICAgICAgICAgcG9pbnRlcjogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc1RpY2s6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgc3BsaXRMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICAgIGxlbmd0aDogMSwKICAgICAgICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgICAgICAgY29sb3I6ICcjZWFlYWVhJywKICAgICAgICAgICAgICB3aWR0aDogMgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9CiAgICAgICAgfV0KICAgICAgfTsKICAgICAgY2hhcnREb20uc2V0T3B0aW9uKG9wdGlvbik7CiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgY2hhcnREb20ucmVzaXplKCk7CiAgICAgIH0pOwogICAgICBoYW5kbGVDaGFydExvb3Aob3B0aW9uLCBjaGFydERvbSk7CiAgICAgIC8vIOmlvOWbvuiHquWKqOi9ruaSrQogICAgICBmdW5jdGlvbiBoYW5kbGVDaGFydExvb3Aob3B0aW9uLCBteUNoYXJ0KSB7CiAgICAgICAgaWYgKCFteUNoYXJ0KSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBjdXJyZW50SW5kZXggPSAwOyAvLyDlvZPliY3pq5jkuq7lm77lvaLlnKjppbzlm77mlbDmja7kuK3nmoTkuIvmoIcKICAgICAgICBoaWdobGlnaHRQaWUoKTsKICAgICAgICAvLyDlj5bmtojmiYDmnInpq5jkuq7lubbpq5jkuq7lvZPliY3lm77lvaIKICAgICAgICBmdW5jdGlvbiBoaWdobGlnaHRQaWUoKSB7CiAgICAgICAgICAvLyDpgY3ljobppbzlm77mlbDmja7vvIzlj5bmtojmiYDmnInlm77lvaLnmoTpq5jkuq7mlYjmnpwKICAgICAgICAgIGZvciAodmFyIGlkeCBpbiBvcHRpb24uc2VyaWVzWzBdLmRhdGEpIHsKICAgICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICAgICAgICAgICAgdHlwZTogJ2Rvd25wbGF5JywKICAgICAgICAgICAgICBzZXJpZXNJbmRleDogMCwKICAgICAgICAgICAgICBkYXRhSW5kZXg6IGlkeAogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIOmrmOS6ruW9k+WJjeWbvuW9ogogICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICAgICAgICAgIHR5cGU6ICdoaWdobGlnaHQnLAogICAgICAgICAgICBzZXJpZXNJbmRleDogMCwKICAgICAgICAgICAgZGF0YUluZGV4OiBjdXJyZW50SW5kZXgKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAvLyAvLyDnlKjmiLfpvKDmoIfmgqzmta7liLDmn5DkuIDlm77lvaLml7bvvIzlgZzmraLoh6rliqjliIfmjaLlubbpq5jkuq7pvKDmoIfmgqzmta7nmoTlm77lvaIKICAgICAgICBteUNoYXJ0Lm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAocGFyYW1zKSB7CiAgICAgICAgICBpZiAocGFyYW1zLmNvbXBvbmVudFR5cGUgPT0gJ2dyYXBoaWMnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHBhcmFtcy5kYXRhSW5kZXg7CiAgICAgICAgICBoaWdobGlnaHRQaWUoKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8v6LWE5Lqn55uY5rS7CiAgICBpbml0Vml0YWxpemVDaGF0OiBmdW5jdGlvbiBpbml0Vml0YWxpemVDaGF0KCkgewogICAgICB2YXIgZWNoYXJ0c0RhdGEgPSBbewogICAgICAgIG5hbWU6ICflvoXnm5jmtLsnLAogICAgICAgIHZhbHVlOiAzMCwKICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgIGNvbG9yOiAnI0ZGQUU1RScKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAn5bey55uY5rS7JywKICAgICAgICB2YWx1ZTogMTIwLAogICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgY29sb3I6ICcjNTVFREIwJwogICAgICAgIH0KICAgICAgfV07CiAgICAgIHZhciBjaGFydERvbSA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndml0YWxpemUtY2hhcnQnKSk7CiAgICAgIHZhciBvcHRpb24gPSB7CiAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgdHJpZ2dlcjogJ2l0ZW0nCiAgICAgICAgfSwKICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgIHg6ICdyaWdodCcsCiAgICAgICAgICBhbGlnbjogJ2xlZnQnLAogICAgICAgICAgdG9wOiAnY2VudGVyJywKICAgICAgICAgIG9yaWVudDogJ3ZlcnRpY2FsJwogICAgICAgIH0sCiAgICAgICAgc2VyaWVzOiBbewogICAgICAgICAgbmFtZTogJ+mdouenrycsCiAgICAgICAgICB0eXBlOiAncGllJywKICAgICAgICAgIHJhZGl1czogWyc1NSUnLCAnNjclJ10sCiAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwKICAgICAgICAgIGF2b2lkTGFiZWxPdmVybGFwOiBmYWxzZSwKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBib3JkZXJDb2xvcjogJyNmZmYnLAogICAgICAgICAgICBib3JkZXJXaWR0aDogMgogICAgICAgICAgfSwKICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlLAogICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicKICAgICAgICAgIH0sCiAgICAgICAgICBlbXBoYXNpczogewogICAgICAgICAgICBsYWJlbDogewogICAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICAgICAgZm9udFNpemU6IDMwLAogICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gZm9ybWF0dGVyKHBhcmFtcykgewogICAgICAgICAgICAgICAgcmV0dXJuIFsne251bXwnICsgcGFyYW1zLnBlcmNlbnQgKyAnfScgKyAne3VuaXR8JX0nLCAne2xhYmVsfCcgKyBwYXJhbXMubmFtZSArICd9J10uam9pbignXG4nKTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHJpY2g6IHsKICAgICAgICAgICAgICAgIG51bTogewogICAgICAgICAgICAgICAgICBmb250U2l6ZTogMzAsCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsCiAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLAogICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1bml0OiB7CiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxNCwKICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMTExJywKICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMzAsCiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IFswLCA1XQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyMCwKICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMzAsCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzQ0NCcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBsYWJlbExpbmU6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBkYXRhOiBlY2hhcnRzRGF0YQogICAgICAgIH0sIHsKICAgICAgICAgIHR5cGU6ICdwaWUnLAogICAgICAgICAgcmFkaXVzOiBbJzUwJScsICc1MCUnXSwKICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLAogICAgICAgICAgaG92ZXJBbmltYXRpb246IGZhbHNlLAogICAgICAgICAgY2xvY2tXaXNlOiBmYWxzZSwKICAgICAgICAgIGN1cnNvcjogJ2RlZmF1bHQnLAogICAgICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgICAgIG5vcm1hbDogewogICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI2VhZWFlYScKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBsYWJlbDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGRhdGE6IFsxMDBdCiAgICAgICAgfSwgewogICAgICAgICAgdHlwZTogJ2dhdWdlJywKICAgICAgICAgIHJhZGl1czogJzk4JScsCiAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwKICAgICAgICAgIGNsb2Nrd2lzZTogdHJ1ZSwKICAgICAgICAgIHN0YXJ0QW5nbGU6ICcxMDAnLAogICAgICAgICAgZW5kQW5nbGU6ICctMjY5Ljk5OTknLAogICAgICAgICAgc3BsaXROdW1iZXI6IDIwMCwKICAgICAgICAgIC8v57q/55qE5p2h5pWwCiAgICAgICAgICBwb2ludGVyOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xpbmU6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBheGlzVGljazogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBzcGxpdExpbmU6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgbGVuZ3RoOiAxNSwKICAgICAgICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgICAgICAgY29sb3I6ICcjZWFlYWVhJywKICAgICAgICAgICAgICB3aWR0aDogMQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgdHlwZTogJ2dhdWdlJywKICAgICAgICAgIHJhZGl1czogJzgzLjUlJywKICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLAogICAgICAgICAgY2xvY2t3aXNlOiB0cnVlLAogICAgICAgICAgc3RhcnRBbmdsZTogJzEwMCcsCiAgICAgICAgICBlbmRBbmdsZTogJy0yNjkuOTk5OScsCiAgICAgICAgICBzcGxpdE51bWJlcjogMTQwLAogICAgICAgICAgLy/nur/nmoTmnaHmlbAKICAgICAgICAgIHBvaW50ZXI6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBheGlzTGluZTogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNUaWNrOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIHNwbGl0TGluZTogewogICAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgICBsZW5ndGg6IDEsCiAgICAgICAgICAgIGxpbmVTdHlsZTogewogICAgICAgICAgICAgIGNvbG9yOiAnI2VhZWFlYScsCiAgICAgICAgICAgICAgd2lkdGg6IDIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNMYWJlbDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfQogICAgICAgIH1dCiAgICAgIH07CiAgICAgIGNoYXJ0RG9tLnNldE9wdGlvbihvcHRpb24pOwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24gKCkgewogICAgICAgIGNoYXJ0RG9tLnJlc2l6ZSgpOwogICAgICB9KTsKICAgICAgaGFuZGxlQ2hhcnRMb29wKG9wdGlvbiwgY2hhcnREb20pOwogICAgICAvLyDppbzlm77oh6rliqjova7mkq0KICAgICAgZnVuY3Rpb24gaGFuZGxlQ2hhcnRMb29wKG9wdGlvbiwgbXlDaGFydCkgewogICAgICAgIGlmICghbXlDaGFydCkgewogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gMDsgLy8g5b2T5YmN6auY5Lqu5Zu+5b2i5Zyo6aW85Zu+5pWw5o2u5Lit55qE5LiL5qCHCiAgICAgICAgaGlnaGxpZ2h0UGllKCk7CiAgICAgICAgLy8g5Y+W5raI5omA5pyJ6auY5Lqu5bm26auY5Lqu5b2T5YmN5Zu+5b2iCiAgICAgICAgZnVuY3Rpb24gaGlnaGxpZ2h0UGllKCkgewogICAgICAgICAgLy8g6YGN5Y6G6aW85Zu+5pWw5o2u77yM5Y+W5raI5omA5pyJ5Zu+5b2i55qE6auY5Lqu5pWI5p6cCiAgICAgICAgICBmb3IgKHZhciBpZHggaW4gb3B0aW9uLnNlcmllc1swXS5kYXRhKSB7CiAgICAgICAgICAgIG15Q2hhcnQuZGlzcGF0Y2hBY3Rpb24oewogICAgICAgICAgICAgIHR5cGU6ICdkb3ducGxheScsCiAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IDAsCiAgICAgICAgICAgICAgZGF0YUluZGV4OiBpZHgKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyDpq5jkuq7lvZPliY3lm77lvaIKICAgICAgICAgIG15Q2hhcnQuZGlzcGF0Y2hBY3Rpb24oewogICAgICAgICAgICB0eXBlOiAnaGlnaGxpZ2h0JywKICAgICAgICAgICAgc2VyaWVzSW5kZXg6IDAsCiAgICAgICAgICAgIGRhdGFJbmRleDogY3VycmVudEluZGV4CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgLy8gLy8g55So5oi36byg5qCH5oKs5rWu5Yiw5p+Q5LiA5Zu+5b2i5pe277yM5YGc5q2i6Ieq5Yqo5YiH5o2i5bm26auY5Lqu6byg5qCH5oKs5rWu55qE5Zu+5b2iCiAgICAgICAgbXlDaGFydC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKHBhcmFtcykgewogICAgICAgICAgaWYgKHBhcmFtcy5jb21wb25lbnRUeXBlID09ICdncmFwaGljJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50SW5kZXggPSBwYXJhbXMuZGF0YUluZGV4OwogICAgICAgICAgaGlnaGxpZ2h0UGllKCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvL+i1hOS6p+e7tOS/rgogICAgaW5pdFJlcGFpckNoYXQ6IGZ1bmN0aW9uIGluaXRSZXBhaXJDaGF0KCkgewogICAgICB2YXIgZWNoYXJ0c0RhdGEgPSBbewogICAgICAgIG5hbWU6ICflvoXnu7Tkv64nLAogICAgICAgIHZhbHVlOiAzMCwKICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgIGNvbG9yOiAnI0ZGQUU1RScKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAn5bey5a6M5oiQJywKICAgICAgICB2YWx1ZTogMTIwLAogICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgY29sb3I6ICcjNTVFREIwJwogICAgICAgIH0KICAgICAgfV07CiAgICAgIHZhciBjaGFydERvbSA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVwYWlyLWNoYXJ0JykpOwogICAgICB2YXIgb3B0aW9uID0gewogICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgIHRyaWdnZXI6ICdpdGVtJwogICAgICAgIH0sCiAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICB4OiAncmlnaHQnLAogICAgICAgICAgYWxpZ246ICdsZWZ0JywKICAgICAgICAgIHRvcDogJ2NlbnRlcicsCiAgICAgICAgICBvcmllbnQ6ICd2ZXJ0aWNhbCcKICAgICAgICB9LAogICAgICAgIHNlcmllczogW3sKICAgICAgICAgIG5hbWU6ICfpnaLnp68nLAogICAgICAgICAgdHlwZTogJ3BpZScsCiAgICAgICAgICByYWRpdXM6IFsnNTUlJywgJzY3JSddLAogICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sCiAgICAgICAgICBhdm9pZExhYmVsT3ZlcmxhcDogZmFsc2UsCiAgICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjZmZmJywKICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIKICAgICAgICAgIH0sCiAgICAgICAgICBsYWJlbDogewogICAgICAgICAgICBzaG93OiBmYWxzZSwKICAgICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInCiAgICAgICAgICB9LAogICAgICAgICAgZW1waGFzaXM6IHsKICAgICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgICAgIGZvbnRTaXplOiAzMCwKICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uIGZvcm1hdHRlcihwYXJhbXMpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbJ3tudW18JyArIHBhcmFtcy5wZXJjZW50ICsgJ30nICsgJ3t1bml0fCV9JywgJ3tsYWJlbHwnICsgcGFyYW1zLm5hbWUgKyAnfSddLmpvaW4oJ1xuJyk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICByaWNoOiB7CiAgICAgICAgICAgICAgICBudW06IHsKICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDMwLAogICAgICAgICAgICAgICAgICBjb2xvcjogJyMwMDAnLAogICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAzMCwKICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNzAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5pdDogewogICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzExMScsCiAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLAogICAgICAgICAgICAgICAgICBwYWRkaW5nOiBbMCwgNV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsYWJlbDogewogICAgICAgICAgICAgICAgICBmb250U2l6ZTogMjAsCiAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLAogICAgICAgICAgICAgICAgICBjb2xvcjogJyM0NDQnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgbGFiZWxMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgZGF0YTogZWNoYXJ0c0RhdGEKICAgICAgICB9LCB7CiAgICAgICAgICB0eXBlOiAncGllJywKICAgICAgICAgIHJhZGl1czogWyc1MCUnLCAnNTAlJ10sCiAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwKICAgICAgICAgIGhvdmVyQW5pbWF0aW9uOiBmYWxzZSwKICAgICAgICAgIGNsb2NrV2lzZTogZmFsc2UsCiAgICAgICAgICBjdXJzb3I6ICdkZWZhdWx0JywKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBub3JtYWw6IHsKICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMiwKICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJyNlYWVhZWEnCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBkYXRhOiBbMTAwXQogICAgICAgIH0sIHsKICAgICAgICAgIHR5cGU6ICdnYXVnZScsCiAgICAgICAgICByYWRpdXM6ICc5OCUnLAogICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sCiAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsCiAgICAgICAgICBzdGFydEFuZ2xlOiAnMTAwJywKICAgICAgICAgIGVuZEFuZ2xlOiAnLTI2OS45OTk5JywKICAgICAgICAgIHNwbGl0TnVtYmVyOiAyMDAsCiAgICAgICAgICAvL+e6v+eahOadoeaVsAogICAgICAgICAgcG9pbnRlcjogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc1RpY2s6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgc3BsaXRMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICAgIGxlbmd0aDogMTUsCiAgICAgICAgICAgIGxpbmVTdHlsZTogewogICAgICAgICAgICAgIGNvbG9yOiAnI2VhZWFlYScsCiAgICAgICAgICAgICAgd2lkdGg6IDEKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNMYWJlbDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIHR5cGU6ICdnYXVnZScsCiAgICAgICAgICByYWRpdXM6ICc4My41JScsCiAgICAgICAgICBjZW50ZXI6IFsnMzUuNiUnLCAnNDguNCUnXSwKICAgICAgICAgIGNsb2Nrd2lzZTogdHJ1ZSwKICAgICAgICAgIHN0YXJ0QW5nbGU6ICcxMDAnLAogICAgICAgICAgZW5kQW5nbGU6ICctMjY5Ljk5OTknLAogICAgICAgICAgc3BsaXROdW1iZXI6IDE0MCwKICAgICAgICAgIC8v57q/55qE5p2h5pWwCiAgICAgICAgICBwb2ludGVyOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xpbmU6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBheGlzVGljazogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBzcGxpdExpbmU6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgbGVuZ3RoOiAxLAogICAgICAgICAgICBsaW5lU3R5bGU6IHsKICAgICAgICAgICAgICBjb2xvcjogJyNlYWVhZWEnLAogICAgICAgICAgICAgIHdpZHRoOiAyCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBheGlzTGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0KICAgICAgICB9XQogICAgICB9OwogICAgICBjaGFydERvbS5zZXRPcHRpb24ob3B0aW9uKTsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICBjaGFydERvbS5yZXNpemUoKTsKICAgICAgfSk7CiAgICAgIGhhbmRsZUNoYXJ0TG9vcChvcHRpb24sIGNoYXJ0RG9tKTsKICAgICAgLy8g6aW85Zu+6Ieq5Yqo6L2u5pKtCiAgICAgIGZ1bmN0aW9uIGhhbmRsZUNoYXJ0TG9vcChvcHRpb24sIG15Q2hhcnQpIHsKICAgICAgICBpZiAoIW15Q2hhcnQpIHsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IDA7IC8vIOW9k+WJjemrmOS6ruWbvuW9ouWcqOmlvOWbvuaVsOaNruS4reeahOS4i+aghwogICAgICAgIGhpZ2hsaWdodFBpZSgpOwogICAgICAgIC8vIOWPlua2iOaJgOaciemrmOS6ruW5tumrmOS6ruW9k+WJjeWbvuW9ogogICAgICAgIGZ1bmN0aW9uIGhpZ2hsaWdodFBpZSgpIHsKICAgICAgICAgIC8vIOmBjeWOhumlvOWbvuaVsOaNru+8jOWPlua2iOaJgOacieWbvuW9oueahOmrmOS6ruaViOaenAogICAgICAgICAgZm9yICh2YXIgaWR4IGluIG9wdGlvbi5zZXJpZXNbMF0uZGF0YSkgewogICAgICAgICAgICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsKICAgICAgICAgICAgICB0eXBlOiAnZG93bnBsYXknLAogICAgICAgICAgICAgIHNlcmllc0luZGV4OiAwLAogICAgICAgICAgICAgIGRhdGFJbmRleDogaWR4CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgLy8g6auY5Lqu5b2T5YmN5Zu+5b2iCiAgICAgICAgICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsKICAgICAgICAgICAgdHlwZTogJ2hpZ2hsaWdodCcsCiAgICAgICAgICAgIHNlcmllc0luZGV4OiAwLAogICAgICAgICAgICBkYXRhSW5kZXg6IGN1cnJlbnRJbmRleAogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIC8vIC8vIOeUqOaIt+m8oOagh+aCrOa1ruWIsOafkOS4gOWbvuW9ouaXtu+8jOWBnOatouiHquWKqOWIh+aNouW5tumrmOS6rum8oOagh+aCrOa1rueahOWbvuW9ogogICAgICAgIG15Q2hhcnQub24oJ21vdXNlb3ZlcicsIGZ1bmN0aW9uIChwYXJhbXMpIHsKICAgICAgICAgIGlmIChwYXJhbXMuY29tcG9uZW50VHlwZSA9PSAnZ3JhcGhpYycpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudEluZGV4ID0gcGFyYW1zLmRhdGFJbmRleDsKICAgICAgICAgIGhpZ2hsaWdodFBpZSgpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLy/otYTkuqflpITnva4KICAgIGluaXREaXNwb3NlQ2hhdDogZnVuY3Rpb24gaW5pdERpc3Bvc2VDaGF0KCkgewogICAgICB2YXIgZWNoYXJ0c0RhdGEgPSBbewogICAgICAgIG5hbWU6ICfotYTkuqfmiqXlup8nLAogICAgICAgIHZhbHVlOiAzMCwKICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgIGNvbG9yOiAnIzE5OENGRicKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAn6LWE5Lqn6L2s6K6pJywKICAgICAgICB2YWx1ZTogMTIwLAogICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgY29sb3I6ICcjNTVFREIwJwogICAgICAgIH0KICAgICAgfV07CiAgICAgIHZhciBjaGFydERvbSA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzcG9zZS1jaGFydCcpKTsKICAgICAgdmFyIG9wdGlvbiA9IHsKICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICB0cmlnZ2VyOiAnaXRlbScKICAgICAgICB9LAogICAgICAgIGxlZ2VuZDogewogICAgICAgICAgeDogJ3JpZ2h0JywKICAgICAgICAgIGFsaWduOiAnbGVmdCcsCiAgICAgICAgICB0b3A6ICdjZW50ZXInLAogICAgICAgICAgb3JpZW50OiAndmVydGljYWwnCiAgICAgICAgfSwKICAgICAgICBzZXJpZXM6IFt7CiAgICAgICAgICBuYW1lOiAn6Z2i56evJywKICAgICAgICAgIHR5cGU6ICdwaWUnLAogICAgICAgICAgcmFkaXVzOiBbJzU1JScsICc2NyUnXSwKICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLAogICAgICAgICAgYXZvaWRMYWJlbE92ZXJsYXA6IGZhbHNlLAogICAgICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI2ZmZicsCiAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyCiAgICAgICAgICB9LAogICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJwogICAgICAgICAgfSwKICAgICAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgICBmb250U2l6ZTogMzAsCiAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiBmb3JtYXR0ZXIocGFyYW1zKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWyd7bnVtfCcgKyBwYXJhbXMudmFsdWUgKyAnfScgKyAne3VuaXR85LiqfScsICd7bGFiZWx8JyArIHBhcmFtcy5uYW1lICsgJ30nXS5qb2luKCdcbicpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgcmljaDogewogICAgICAgICAgICAgICAgbnVtOiB7CiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAzMCwKICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMDAwJywKICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogMzAsCiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuaXQ6IHsKICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDE0LAogICAgICAgICAgICAgICAgICBjb2xvcjogJyMxMTEnLAogICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAzMCwKICAgICAgICAgICAgICAgICAgcGFkZGluZzogWzAsIDVdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDIwLAogICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAzMCwKICAgICAgICAgICAgICAgICAgY29sb3I6ICcjNDQ0JwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIGxhYmVsTGluZTogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGRhdGE6IGVjaGFydHNEYXRhCiAgICAgICAgfSwgewogICAgICAgICAgdHlwZTogJ3BpZScsCiAgICAgICAgICByYWRpdXM6IFsnNTAlJywgJzUwJSddLAogICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sCiAgICAgICAgICBob3ZlckFuaW1hdGlvbjogZmFsc2UsCiAgICAgICAgICBjbG9ja1dpc2U6IGZhbHNlLAogICAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsCiAgICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgICAgbm9ybWFsOiB7CiAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsCiAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjZWFlYWVhJwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgZGF0YTogWzEwMF0KICAgICAgICB9LCB7CiAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLAogICAgICAgICAgcmFkaXVzOiAnOTglJywKICAgICAgICAgIGNlbnRlcjogWyczNS42JScsICc0OC40JSddLAogICAgICAgICAgY2xvY2t3aXNlOiB0cnVlLAogICAgICAgICAgc3RhcnRBbmdsZTogJzEwMCcsCiAgICAgICAgICBlbmRBbmdsZTogJy0yNjkuOTk5OScsCiAgICAgICAgICBzcGxpdE51bWJlcjogMjAwLAogICAgICAgICAgLy/nur/nmoTmnaHmlbAKICAgICAgICAgIHBvaW50ZXI6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBheGlzTGluZTogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNUaWNrOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIHNwbGl0TGluZTogewogICAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgICBsZW5ndGg6IDE1LAogICAgICAgICAgICBsaW5lU3R5bGU6IHsKICAgICAgICAgICAgICBjb2xvcjogJyNlYWVhZWEnLAogICAgICAgICAgICAgIHdpZHRoOiAxCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBheGlzTGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICB0eXBlOiAnZ2F1Z2UnLAogICAgICAgICAgcmFkaXVzOiAnODMuNSUnLAogICAgICAgICAgY2VudGVyOiBbJzM1LjYlJywgJzQ4LjQlJ10sCiAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsCiAgICAgICAgICBzdGFydEFuZ2xlOiAnMTAwJywKICAgICAgICAgIGVuZEFuZ2xlOiAnLTI2OS45OTk5JywKICAgICAgICAgIHNwbGl0TnVtYmVyOiAxNDAsCiAgICAgICAgICAvL+e6v+eahOadoeaVsAogICAgICAgICAgcG9pbnRlcjogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgYXhpc1RpY2s6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgc3BsaXRMaW5lOiB7CiAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICAgIGxlbmd0aDogMSwKICAgICAgICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgICAgICAgY29sb3I6ICcjZWFlYWVhJywKICAgICAgICAgICAgICB3aWR0aDogMgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICB9CiAgICAgICAgfV0KICAgICAgfTsKICAgICAgY2hhcnREb20uc2V0T3B0aW9uKG9wdGlvbik7CiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgY2hhcnREb20ucmVzaXplKCk7CiAgICAgIH0pOwogICAgICBoYW5kbGVDaGFydExvb3Aob3B0aW9uLCBjaGFydERvbSk7CiAgICAgIC8vIOmlvOWbvuiHquWKqOi9ruaSrQogICAgICBmdW5jdGlvbiBoYW5kbGVDaGFydExvb3Aob3B0aW9uLCBteUNoYXJ0KSB7CiAgICAgICAgaWYgKCFteUNoYXJ0KSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBjdXJyZW50SW5kZXggPSAwOyAvLyDlvZPliY3pq5jkuq7lm77lvaLlnKjppbzlm77mlbDmja7kuK3nmoTkuIvmoIcKICAgICAgICBoaWdobGlnaHRQaWUoKTsKICAgICAgICAvLyDlj5bmtojmiYDmnInpq5jkuq7lubbpq5jkuq7lvZPliY3lm77lvaIKICAgICAgICBmdW5jdGlvbiBoaWdobGlnaHRQaWUoKSB7CiAgICAgICAgICAvLyDpgY3ljobppbzlm77mlbDmja7vvIzlj5bmtojmiYDmnInlm77lvaLnmoTpq5jkuq7mlYjmnpwKICAgICAgICAgIGZvciAodmFyIGlkeCBpbiBvcHRpb24uc2VyaWVzWzBdLmRhdGEpIHsKICAgICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICAgICAgICAgICAgdHlwZTogJ2Rvd25wbGF5JywKICAgICAgICAgICAgICBzZXJpZXNJbmRleDogMCwKICAgICAgICAgICAgICBkYXRhSW5kZXg6IGlkeAogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIOmrmOS6ruW9k+WJjeWbvuW9ogogICAgICAgICAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICAgICAgICAgIHR5cGU6ICdoaWdobGlnaHQnLAogICAgICAgICAgICBzZXJpZXNJbmRleDogMCwKICAgICAgICAgICAgZGF0YUluZGV4OiBjdXJyZW50SW5kZXgKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAvLyAvLyDnlKjmiLfpvKDmoIfmgqzmta7liLDmn5DkuIDlm77lvaLml7bvvIzlgZzmraLoh6rliqjliIfmjaLlubbpq5jkuq7pvKDmoIfmgqzmta7nmoTlm77lvaIKICAgICAgICBteUNoYXJ0Lm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAocGFyYW1zKSB7CiAgICAgICAgICBpZiAocGFyYW1zLmNvbXBvbmVudFR5cGUgPT0gJ2dyYXBoaWMnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHBhcmFtcy5kYXRhSW5kZXg7CiAgICAgICAgICBoaWdobGlnaHRQaWUoKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHt9Cn07"},null]}