c76419b71565333edb9f9f7afa20d7a3.json 27 KB

1
  1. {"remainingRequest":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/thread-loader/dist/cjs.js!/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/babel-loader/lib/index.js!/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/element-ui/lib/checkbox.js","dependencies":[{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/element-ui/lib/checkbox.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/babel-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:cmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbCIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbiIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC50by1zdHJpbmctdGFnIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0Iik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5kZXgtb2YiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZSIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnRvLXN0cmluZy10YWciKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5tYXRoLnRvLXN0cmluZy10YWciKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nIik7Cgp2YXIgX3R5cGVvZiA9IHJlcXVpcmUoIi91c3IvbG9jYWwvZGV2ZWxvcC9waHAvd3d3L3dhaWJhby9wcm9qZWN0L05OMjAyMDA2MDgwMS9hZGRvbnMvYWRtaW4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mIik7Cgptb2R1bGUuZXhwb3J0cyA9Ci8qKioqKiovCmZ1bmN0aW9uIChtb2R1bGVzKSB7CiAgLy8gd2VicGFja0Jvb3RzdHJhcAoKICAvKioqKioqLwogIC8vIFRoZSBtb2R1bGUgY2FjaGUKCiAgLyoqKioqKi8KICB2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb24KCiAgLyoqKioqKi8KCiAgZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkgewogICAgLyoqKioqKi8KCiAgICAvKioqKioqLwogICAgLy8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlCgogICAgLyoqKioqKi8KICAgIGlmIChpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkgewogICAgICAvKioqKioqLwogICAgICByZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0czsKICAgICAgLyoqKioqKi8KICAgIH0KICAgIC8qKioqKiovCiAgICAvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQoKICAgIC8qKioqKiovCgoKICAgIHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKICAgICAgLyoqKioqKi8KICAgICAgaTogbW9kdWxlSWQsCgogICAgICAvKioqKioqLwogICAgICBsOiBmYWxzZSwKCiAgICAgIC8qKioqKiovCiAgICAgIGV4cG9ydHM6IHt9CiAgICAgIC8qKioqKiovCgogICAgfTsKICAgIC8qKioqKiovCgogICAgLyoqKioqKi8KICAgIC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvbgoKICAgIC8qKioqKiovCgogICAgbW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7CiAgICAvKioqKioqLwoKICAgIC8qKioqKiovCiAgICAvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkCgogICAgLyoqKioqKi8KCiAgICBtb2R1bGUubCA9IHRydWU7CiAgICAvKioqKioqLwoKICAgIC8qKioqKiovCiAgICAvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQoKICAgIC8qKioqKiovCgogICAgcmV0dXJuIG1vZHVsZS5leHBvcnRzOwogICAgLyoqKioqKi8KICB9CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKQoKICAvKioqKioqLwoKCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlczsKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlCgogIC8qKioqKiovCgogIF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHMKCiAgLyoqKioqKi8KCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24gKGV4cG9ydHMsIG5hbWUsIGdldHRlcikgewogICAgLyoqKioqKi8KICAgIGlmICghX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7CiAgICAgIC8qKioqKiovCiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7CiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKICAgICAgICBnZXQ6IGdldHRlcgogICAgICB9KTsKICAgICAgLyoqKioqKi8KICAgIH0KICAgIC8qKioqKiovCgogIH07CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzCgogIC8qKioqKiovCgoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbiAoZXhwb3J0cykgewogICAgLyoqKioqKi8KICAgIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHsKICAgICAgLyoqKioqKi8KICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgewogICAgICAgIHZhbHVlOiAnTW9kdWxlJwogICAgICB9KTsKICAgICAgLyoqKioqKi8KICAgIH0KICAgIC8qKioqKiovCgoKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsKICAgICAgdmFsdWU6IHRydWUKICAgIH0pOwogICAgLyoqKioqKi8KICB9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0CgogIC8qKioqKiovCiAgLy8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0CgogIC8qKioqKiovCiAgLy8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zCgogIC8qKioqKiovCiAgLy8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0CgogIC8qKioqKiovCiAgLy8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZQoKICAvKioqKioqLwoKCiAgX193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24gKHZhbHVlLCBtb2RlKSB7CiAgICAvKioqKioqLwogICAgaWYgKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpOwogICAgLyoqKioqKi8KCiAgICBpZiAobW9kZSAmIDgpIHJldHVybiB2YWx1ZTsKICAgIC8qKioqKiovCgogICAgaWYgKG1vZGUgJiA0ICYmIF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7CiAgICAvKioqKioqLwoKICAgIHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAvKioqKioqLwoKICAgIF9fd2VicGFja19yZXF1aXJlX18ucihucyk7CiAgICAvKioqKioqLwoKCiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgewogICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICB2YWx1ZTogdmFsdWUKICAgIH0pOwogICAgLyoqKioqKi8KCiAgICBpZiAobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHsKICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICByZXR1cm4gdmFsdWVba2V5XTsKICAgICAgfS5iaW5kKG51bGwsIGtleSkpOwogICAgfQogICAgLyoqKioqKi8KCiAgICByZXR1cm4gbnM7CiAgICAvKioqKioqLwogIH07CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlcwoKICAvKioqKioqLwoKCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24gKG1vZHVsZSkgewogICAgLyoqKioqKi8KICAgIHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgPwogICAgLyoqKioqKi8KICAgIGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7CiAgICAgIHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsKICAgIH0gOgogICAgLyoqKioqKi8KICAgIGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7CiAgICAgIHJldHVybiBtb2R1bGU7CiAgICB9OwogICAgLyoqKioqKi8KCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7CiAgICAvKioqKioqLwoKCiAgICByZXR1cm4gZ2V0dGVyOwogICAgLyoqKioqKi8KICB9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsCgogIC8qKioqKiovCgoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbiAob2JqZWN0LCBwcm9wZXJ0eSkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKICB9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gX193ZWJwYWNrX3B1YmxpY19wYXRoX18KCiAgLyoqKioqKi8KCgogIF9fd2VicGFja19yZXF1aXJlX18ucCA9ICIvZGlzdC8iOwogIC8qKioqKiovCgogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzCgogIC8qKioqKiovCgogIHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDgzKTsKICAvKioqKioqLwp9KAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoqKioqKi8KewogIC8qKiovCiAgMDoKICAvKioqLwogIGZ1bmN0aW9uIF8obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICAvKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8KCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgImEiLCBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVDb21wb25lbnQ7CiAgICB9KTsKICAgIC8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqLwogICAgLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuCiAgICAvLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbAogICAgLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuCgoKICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudChzY3JpcHRFeHBvcnRzLCByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgZnVuY3Rpb25hbFRlbXBsYXRlLCBpbmplY3RTdHlsZXMsIHNjb3BlSWQsIG1vZHVsZUlkZW50aWZpZXIsCiAgICAvKiBzZXJ2ZXIgb25seSAqLwogICAgc2hhZG93TW9kZQogICAgLyogdnVlLWNsaSBvbmx5ICovCiAgICApIHsKICAgICAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcAogICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zIDogc2NyaXB0RXhwb3J0czsgLy8gcmVuZGVyIGZ1bmN0aW9ucwoKICAgICAgaWYgKHJlbmRlcikgewogICAgICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyOwogICAgICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zOwogICAgICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZTsKICAgICAgfSAvLyBmdW5jdGlvbmFsIHRlbXBsYXRlCgoKICAgICAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkgewogICAgICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWU7CiAgICAgIH0gLy8gc2NvcGVkSWQKCgogICAgICBpZiAoc2NvcGVJZCkgewogICAgICAgIG9wdGlvbnMuX3Njb3BlSWQgPSAnZGF0YS12LScgKyBzY29wZUlkOwogICAgICB9CgogICAgICB2YXIgaG9vazsKCiAgICAgIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7CiAgICAgICAgLy8gc2VydmVyIGJ1aWxkCiAgICAgICAgaG9vayA9IGZ1bmN0aW9uIGhvb2soY29udGV4dCkgewogICAgICAgICAgLy8gMi4zIGluamVjdGlvbgogICAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGwKICAgICAgICAgIHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQgfHwgLy8gc3RhdGVmdWwKICAgICAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dDsgLy8gZnVuY3Rpb25hbAogICAgICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlCgogICAgICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfXzsKICAgICAgICAgIH0gLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXMKCgogICAgICAgICAgaWYgKGluamVjdFN0eWxlcykgewogICAgICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KTsKICAgICAgICAgIH0gLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlCgoKICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7CiAgICAgICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKTsKICAgICAgICAgIH0KICAgICAgICB9OyAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZQogICAgICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkCgoKICAgICAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2s7CiAgICAgIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7CiAgICAgICAgaG9vayA9IHNoYWRvd01vZGUgPyBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpOwogICAgICAgIH0gOiBpbmplY3RTdHlsZXM7CiAgICAgIH0KCiAgICAgIGlmIChob29rKSB7CiAgICAgICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25hbCkgewogICAgICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3QKICAgICAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXIKICAgICAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2s7IC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlCgogICAgICAgICAgdmFyIG9yaWdpbmFsUmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7CgogICAgICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24oaCwgY29udGV4dCkgewogICAgICAgICAgICBob29rLmNhbGwoY29udGV4dCk7CiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KTsKICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rCiAgICAgICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZTsKICAgICAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmcgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spIDogW2hvb2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHsKICAgICAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLAogICAgICAgIG9wdGlvbnM6IG9wdGlvbnMKICAgICAgfTsKICAgIH0KICAgIC8qKiovCgogIH0sCgogIC8qKiovCiAgNDoKICAvKioqLwogIGZ1bmN0aW9uIF8obW9kdWxlLCBleHBvcnRzKSB7CiAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoImVsZW1lbnQtdWkvbGliL21peGlucy9lbWl0dGVyIik7CiAgICAvKioqLwogIH0sCgogIC8qKiovCiAgODM6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogICAgInVzZSBzdHJpY3QiOwoKICAgIF9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMzg3MDc0JgoKCiAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkgewogICAgICB2YXIgX3ZtID0gdGhpczsKCiAgICAgIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudDsKCiAgICAgIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaDsKCiAgICAgIHJldHVybiBfYygibGFiZWwiLCB7CiAgICAgICAgc3RhdGljQ2xhc3M6ICJlbC1jaGVja2JveCIsCiAgICAgICAgY2xhc3M6IFtfdm0uYm9yZGVyICYmIF92bS5jaGVja2JveFNpemUgPyAiZWwtY2hlY2tib3gtLSIgKyBfdm0uY2hlY2tib3hTaXplIDogIiIsIHsKICAgICAgICAgICJpcy1kaXNhYmxlZCI6IF92bS5pc0Rpc2FibGVkCiAgICAgICAgfSwgewogICAgICAgICAgImlzLWJvcmRlcmVkIjogX3ZtLmJvcmRlcgogICAgICAgIH0sIHsKICAgICAgICAgICJpcy1jaGVja2VkIjogX3ZtLmlzQ2hlY2tlZAogICAgICAgIH1dLAogICAgICAgIGF0dHJzOiB7CiAgICAgICAgICBpZDogX3ZtLmlkCiAgICAgICAgfQogICAgICB9LCBbX2MoInNwYW4iLCB7CiAgICAgICAgc3RhdGljQ2xhc3M6ICJlbC1jaGVja2JveF9faW5wdXQiLAogICAgICAgIGNsYXNzOiB7CiAgICAgICAgICAiaXMtZGlzYWJsZWQiOiBfdm0uaXNEaXNhYmxlZCwKICAgICAgICAgICJpcy1jaGVja2VkIjogX3ZtLmlzQ2hlY2tlZCwKICAgICAgICAgICJpcy1pbmRldGVybWluYXRlIjogX3ZtLmluZGV0ZXJtaW5hdGUsCiAgICAgICAgICAiaXMtZm9jdXMiOiBfdm0uZm9jdXMKICAgICAgICB9LAogICAgICAgIGF0dHJzOiB7CiAgICAgICAgICB0YWJpbmRleDogX3ZtLmluZGV0ZXJtaW5hdGUgPyAwIDogZmFsc2UsCiAgICAgICAgICByb2xlOiBfdm0uaW5kZXRlcm1pbmF0ZSA/ICJjaGVja2JveCIgOiBmYWxzZSwKICAgICAgICAgICJhcmlhLWNoZWNrZWQiOiBfdm0uaW5kZXRlcm1pbmF0ZSA/ICJtaXhlZCIgOiBmYWxzZQogICAgICAgIH0KICAgICAgfSwgW19jKCJzcGFuIiwgewogICAgICAgIHN0YXRpY0NsYXNzOiAiZWwtY2hlY2tib3hfX2lubmVyIgogICAgICB9KSwgX3ZtLnRydWVMYWJlbCB8fCBfdm0uZmFsc2VMYWJlbCA/IF9jKCJpbnB1dCIsIHsKICAgICAgICBkaXJlY3RpdmVzOiBbewogICAgICAgICAgbmFtZTogIm1vZGVsIiwKICAgICAgICAgIHJhd05hbWU6ICJ2LW1vZGVsIiwKICAgICAgICAgIHZhbHVlOiBfdm0ubW9kZWwsCiAgICAgICAgICBleHByZXNzaW9uOiAibW9kZWwiCiAgICAgICAgfV0sCiAgICAgICAgc3RhdGljQ2xhc3M6ICJlbC1jaGVja2JveF9fb3JpZ2luYWwiLAogICAgICAgIGF0dHJzOiB7CiAgICAgICAgICB0eXBlOiAiY2hlY2tib3giLAogICAgICAgICAgImFyaWEtaGlkZGVuIjogX3ZtLmluZGV0ZXJtaW5hdGUgPyAidHJ1ZSIgOiAiZmFsc2UiLAogICAgICAgICAgbmFtZTogX3ZtLm5hbWUsCiAgICAgICAgICBkaXNhYmxlZDogX3ZtLmlzRGlzYWJsZWQsCiAgICAgICAgICAidHJ1ZS12YWx1ZSI6IF92bS50cnVlTGFiZWwsCiAgICAgICAgICAiZmFsc2UtdmFsdWUiOiBfdm0uZmFsc2VMYWJlbAogICAgICAgIH0sCiAgICAgICAgZG9tUHJvcHM6IHsKICAgICAgICAgIGNoZWNrZWQ6IEFycmF5LmlzQXJyYXkoX3ZtLm1vZGVsKSA/IF92bS5faShfdm0ubW9kZWwsIG51bGwpID4gLTEgOiBfdm0uX3EoX3ZtLm1vZGVsLCBfdm0udHJ1ZUxhYmVsKQogICAgICAgIH0sCiAgICAgICAgb246IHsKICAgICAgICAgIGNoYW5nZTogW2Z1bmN0aW9uICgkZXZlbnQpIHsKICAgICAgICAgICAgdmFyICQkYSA9IF92bS5tb2RlbCwKICAgICAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LAogICAgICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gX3ZtLnRydWVMYWJlbCA6IF92bS5mYWxzZUxhYmVsOwoKICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkgewogICAgICAgICAgICAgIHZhciAkJHYgPSBudWxsLAogICAgICAgICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpOwoKICAgICAgICAgICAgICBpZiAoJCRlbC5jaGVja2VkKSB7CiAgICAgICAgICAgICAgICAkJGkgPCAwICYmIChfdm0ubW9kZWwgPSAkJGEuY29uY2F0KFskJHZdKSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICQkaSA+IC0xICYmIChfdm0ubW9kZWwgPSAkJGEuc2xpY2UoMCwgJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIF92bS5tb2RlbCA9ICQkYzsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX3ZtLmhhbmRsZUNoYW5nZV0sCiAgICAgICAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMoJGV2ZW50KSB7CiAgICAgICAgICAgIF92bS5mb2N1cyA9IHRydWU7CiAgICAgICAgICB9LAogICAgICAgICAgYmx1cjogZnVuY3Rpb24gYmx1cigkZXZlbnQpIHsKICAgICAgICAgICAgX3ZtLmZvY3VzID0gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KSA6IF9jKCJpbnB1dCIsIHsKICAgICAgICBkaXJlY3RpdmVzOiBbewogICAgICAgICAgbmFtZTogIm1vZGVsIiwKICAgICAgICAgIHJhd05hbWU6ICJ2LW1vZGVsIiwKICAgICAgICAgIHZhbHVlOiBfdm0ubW9kZWwsCiAgICAgICAgICBleHByZXNzaW9uOiAibW9kZWwiCiAgICAgICAgfV0sCiAgICAgICAgc3RhdGljQ2xhc3M6ICJlbC1jaGVja2JveF9fb3JpZ2luYWwiLAogICAgICAgIGF0dHJzOiB7CiAgICAgICAgICB0eXBlOiAiY2hlY2tib3giLAogICAgICAgICAgImFyaWEtaGlkZGVuIjogX3ZtLmluZGV0ZXJtaW5hdGUgPyAidHJ1ZSIgOiAiZmFsc2UiLAogICAgICAgICAgZGlzYWJsZWQ6IF92bS5pc0Rpc2FibGVkLAogICAgICAgICAgbmFtZTogX3ZtLm5hbWUKICAgICAgICB9LAogICAgICAgIGRvbVByb3BzOiB7CiAgICAgICAgICB2YWx1ZTogX3ZtLmxhYmVsLAogICAgICAgICAgY2hlY2tlZDogQXJyYXkuaXNBcnJheShfdm0ubW9kZWwpID8gX3ZtLl9pKF92bS5tb2RlbCwgX3ZtLmxhYmVsKSA+IC0xIDogX3ZtLm1vZGVsCiAgICAgICAgfSwKICAgICAgICBvbjogewogICAgICAgICAgY2hhbmdlOiBbZnVuY3Rpb24gKCRldmVudCkgewogICAgICAgICAgICB2YXIgJCRhID0gX3ZtLm1vZGVsLAogICAgICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsCiAgICAgICAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyB0cnVlIDogZmFsc2U7CgogICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7CiAgICAgICAgICAgICAgdmFyICQkdiA9IF92bS5sYWJlbCwKICAgICAgICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KTsKCiAgICAgICAgICAgICAgaWYgKCQkZWwuY2hlY2tlZCkgewogICAgICAgICAgICAgICAgJCRpIDwgMCAmJiAoX3ZtLm1vZGVsID0gJCRhLmNvbmNhdChbJCR2XSkpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkJGkgPiAtMSAmJiAoX3ZtLm1vZGVsID0gJCRhLnNsaWNlKDAsICQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfdm0ubW9kZWwgPSAkJGM7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF92bS5oYW5kbGVDaGFuZ2VdLAogICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCRldmVudCkgewogICAgICAgICAgICBfdm0uZm9jdXMgPSB0cnVlOwogICAgICAgICAgfSwKICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoJGV2ZW50KSB7CiAgICAgICAgICAgIF92bS5mb2N1cyA9IGZhbHNlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSldKSwgX3ZtLiRzbG90cy5kZWZhdWx0IHx8IF92bS5sYWJlbCA/IF9jKCJzcGFuIiwgewogICAgICAgIHN0YXRpY0NsYXNzOiAiZWwtY2hlY2tib3hfX2xhYmVsIgogICAgICB9LCBbX3ZtLl90KCJkZWZhdWx0IiksICFfdm0uJHNsb3RzLmRlZmF1bHQgPyBbX3ZtLl92KF92bS5fcyhfdm0ubGFiZWwpKV0gOiBfdm0uX2UoKV0sIDIpIDogX3ZtLl9lKCldKTsKICAgIH07CgogICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IFtdOwogICAgcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlOyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDAzODcwNzQmCiAgICAvLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsICJlbGVtZW50LXVpL2xpYi9taXhpbnMvZW1pdHRlciIKCiAgICB2YXIgZW1pdHRlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwoKICAgIHZhciBlbWl0dGVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGVtaXR0ZXJfKTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYKICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCgogICAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKCiAgICB2YXIgY2hlY2tib3h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSB7CiAgICAgIG5hbWU6ICdFbENoZWNrYm94JywKICAgICAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmFdLAogICAgICBpbmplY3Q6IHsKICAgICAgICBlbEZvcm06IHsKICAgICAgICAgIGRlZmF1bHQ6ICcnCiAgICAgICAgfSwKICAgICAgICBlbEZvcm1JdGVtOiB7CiAgICAgICAgICBkZWZhdWx0OiAnJwogICAgICAgIH0KICAgICAgfSwKICAgICAgY29tcG9uZW50TmFtZTogJ0VsQ2hlY2tib3gnLAogICAgICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICBzZWxmTW9kZWw6IGZhbHNlLAogICAgICAgICAgZm9jdXM6IGZhbHNlLAogICAgICAgICAgaXNMaW1pdEV4Y2VlZGVkOiBmYWxzZQogICAgICAgIH07CiAgICAgIH0sCiAgICAgIGNvbXB1dGVkOiB7CiAgICAgICAgbW9kZWw6IHsKICAgICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5zdG9yZSA6IHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMudmFsdWUgOiB0aGlzLnNlbGZNb2RlbDsKICAgICAgICAgIH0sCiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHsKICAgICAgICAgICAgaWYgKHRoaXMuaXNHcm91cCkgewogICAgICAgICAgICAgIHRoaXMuaXNMaW1pdEV4Y2VlZGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgdGhpcy5fY2hlY2tib3hHcm91cC5taW4gIT09IHVuZGVmaW5lZCAmJiB2YWwubGVuZ3RoIDwgdGhpcy5fY2hlY2tib3hHcm91cC5taW4gJiYgKHRoaXMuaXNMaW1pdEV4Y2VlZGVkID0gdHJ1ZSk7CiAgICAgICAgICAgICAgdGhpcy5fY2hlY2tib3hHcm91cC5tYXggIT09IHVuZGVmaW5lZCAmJiB2YWwubGVuZ3RoID4gdGhpcy5fY2hlY2tib3hHcm91cC5tYXggJiYgKHRoaXMuaXNMaW1pdEV4Y2VlZGVkID0gdHJ1ZSk7CiAgICAgICAgICAgICAgdGhpcy5pc0xpbWl0RXhjZWVkZWQgPT09IGZhbHNlICYmIHRoaXMuZGlzcGF0Y2goJ0VsQ2hlY2tib3hHcm91cCcsICdpbnB1dCcsIFt2YWxdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbCk7CiAgICAgICAgICAgICAgdGhpcy5zZWxmTW9kZWwgPSB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGlzQ2hlY2tlZDogZnVuY3Rpb24gaXNDaGVja2VkKCkgewogICAgICAgICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwodGhpcy5tb2RlbCkgPT09ICdbb2JqZWN0IEJvb2xlYW5dJykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDsKICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5pbmRleE9mKHRoaXMubGFiZWwpID4gLTE7CiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWwgIT09IG51bGwgJiYgdGhpcy5tb2RlbCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZGVsID09PSB0aGlzLnRydWVMYWJlbDsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGlzR3JvdXA6IGZ1bmN0aW9uIGlzR3JvdXAoKSB7CiAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50OwoKICAgICAgICAgIHdoaWxlIChwYXJlbnQpIHsKICAgICAgICAgICAgaWYgKHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lICE9PSAnRWxDaGVja2JveEdyb3VwJykgewogICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuX2NoZWNrYm94R3JvdXAgPSBwYXJlbnQ7CiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSwKICAgICAgICBzdG9yZTogZnVuY3Rpb24gc3RvcmUoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tib3hHcm91cCA/IHRoaXMuX2NoZWNrYm94R3JvdXAudmFsdWUgOiB0aGlzLnZhbHVlOwogICAgICAgIH0sCgogICAgICAgIC8qIHVzZWQgdG8gbWFrZSB0aGUgaXNEaXNhYmxlZCBqdWRnbWVudCB1bmRlciBtYXgvbWluIHByb3BzICovCiAgICAgICAgaXNMaW1pdERpc2FibGVkOiBmdW5jdGlvbiBpc0xpbWl0RGlzYWJsZWQoKSB7CiAgICAgICAgICB2YXIgX2NoZWNrYm94R3JvdXAgPSB0aGlzLl9jaGVja2JveEdyb3VwLAogICAgICAgICAgICAgIG1heCA9IF9jaGVja2JveEdyb3VwLm1heCwKICAgICAgICAgICAgICBtaW4gPSBfY2hlY2tib3hHcm91cC5taW47CiAgICAgICAgICByZXR1cm4gISEobWF4IHx8IG1pbikgJiYgdGhpcy5tb2RlbC5sZW5ndGggPj0gbWF4ICYmICF0aGlzLmlzQ2hlY2tlZCB8fCB0aGlzLm1vZGVsLmxlbmd0aCA8PSBtaW4gJiYgdGhpcy5pc0NoZWNrZWQ7CiAgICAgICAgfSwKICAgICAgICBpc0Rpc2FibGVkOiBmdW5jdGlvbiBpc0Rpc2FibGVkKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuX2NoZWNrYm94R3JvdXAuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkIHx8IHRoaXMuaXNMaW1pdERpc2FibGVkIDogdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkOwogICAgICAgIH0sCiAgICAgICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7CiAgICAgICAgICByZXR1cm4gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7CiAgICAgICAgfSwKICAgICAgICBjaGVja2JveFNpemU6IGZ1bmN0aW9uIGNoZWNrYm94U2l6ZSgpIHsKICAgICAgICAgIHZhciB0ZW1DaGVja2JveFNpemUgPSB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5fY2hlY2tib3hHcm91cC5jaGVja2JveEdyb3VwU2l6ZSB8fCB0ZW1DaGVja2JveFNpemUgOiB0ZW1DaGVja2JveFNpemU7CiAgICAgICAgfQogICAgICB9LAogICAgICBwcm9wczogewogICAgICAgIHZhbHVlOiB7fSwKICAgICAgICBsYWJlbDoge30sCiAgICAgICAgaW5kZXRlcm1pbmF0ZTogQm9vbGVhbiwKICAgICAgICBkaXNhYmxlZDogQm9vbGVhbiwKICAgICAgICBjaGVja2VkOiBCb29sZWFuLAogICAgICAgIG5hbWU6IFN0cmluZywKICAgICAgICB0cnVlTGFiZWw6IFtTdHJpbmcsIE51bWJlcl0sCiAgICAgICAgZmFsc2VMYWJlbDogW1N0cmluZywgTnVtYmVyXSwKICAgICAgICBpZDogU3RyaW5nLAoKICAgICAgICAvKiDlvZNpbmRldGVybWluYXRl5Li655yf5pe277yM5Li6Y29udHJvbHPmj5Dkvpvnm7jlhbPov57nmoRjaGVja2JveOeahGlk77yM6KGo5piO5YWD57Sg6Ze055qE5o6n5Yi25YWz57O7Ki8KICAgICAgICBjb250cm9sczogU3RyaW5nLAoKICAgICAgICAvKiDlvZNpbmRldGVybWluYXRl5Li655yf5pe277yM5Li6Y29udHJvbHPmj5Dkvpvnm7jlhbPov57nmoRjaGVja2JveOeahGlk77yM6KGo5piO5YWD57Sg6Ze055qE5o6n5Yi25YWz57O7Ki8KICAgICAgICBib3JkZXI6IEJvb2xlYW4sCiAgICAgICAgc2l6ZTogU3RyaW5nCiAgICAgIH0sCiAgICAgIG1ldGhvZHM6IHsKICAgICAgICBhZGRUb1N0b3JlOiBmdW5jdGlvbiBhZGRUb1N0b3JlKCkgewogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgdGhpcy5tb2RlbC5pbmRleE9mKHRoaXMubGFiZWwpID09PSAtMSkgewogICAgICAgICAgICB0aGlzLm1vZGVsLnB1c2godGhpcy5sYWJlbCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy50cnVlTGFiZWwgfHwgdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhhbmRsZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2KSB7CiAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgICAgIGlmICh0aGlzLmlzTGltaXRFeGNlZWRlZCkgcmV0dXJuOwogICAgICAgICAgdmFyIHZhbHVlID0gdm9pZCAwOwoKICAgICAgICAgIGlmIChldi50YXJnZXQuY2hlY2tlZCkgewogICAgICAgICAgICB2YWx1ZSA9IHRoaXMudHJ1ZUxhYmVsID09PSB1bmRlZmluZWQgPyB0cnVlIDogdGhpcy50cnVlTGFiZWw7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZmFsc2VMYWJlbCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiB0aGlzLmZhbHNlTGFiZWw7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsdWUsIGV2KTsKICAgICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKF90aGlzLmlzR3JvdXApIHsKICAgICAgICAgICAgICBfdGhpcy5kaXNwYXRjaCgnRWxDaGVja2JveEdyb3VwJywgJ2NoYW5nZScsIFtfdGhpcy5fY2hlY2tib3hHcm91cC52YWx1ZV0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICAgICAgdGhpcy5jaGVja2VkICYmIHRoaXMuYWRkVG9TdG9yZSgpOwogICAgICB9LAogICAgICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgICAgIC8vIOS4umluZGV0ZXJtaW5hdGXlhYPntKAg5re75YqgYXJpYS1jb250cm9scyDlsZ7mgKcKICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlKSB7CiAgICAgICAgICB0aGlzLiRlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCB0aGlzLmNvbnRyb2xzKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHdhdGNoOiB7CiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKF92YWx1ZSkgewogICAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIF92YWx1ZSk7CiAgICAgICAgfQogICAgICB9CiAgICB9OyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmCgogICAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKICAgIHZhciBzcmNfY2hlY2tib3h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSBjaGVja2JveHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXzsgLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMKCiAgICB2YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LnZ1ZQoKICAgIC8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KCgogICAgdmFyIGNvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyWyJhIgogICAgLyogZGVmYXVsdCAqLwogICAgXSkoc3JjX2NoZWNrYm94dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLCByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgZmFsc2UsIG51bGwsIG51bGwsIG51bGwpOwogICAgLyogaG90IHJlbG9hZCAqLwoKICAgIGlmIChmYWxzZSkgewogICAgICB2YXIgYXBpOwogICAgfQoKICAgIGNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9ICJwYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gudnVlIjsKICAgIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCiAgICB2YXIgc3JjX2NoZWNrYm94ID0gY29tcG9uZW50LmV4cG9ydHM7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvaW5kZXguanMKCiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwoKICAgIHNyY19jaGVja2JveC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkgewogICAgICBWdWUuY29tcG9uZW50KHNyY19jaGVja2JveC5uYW1lLCBzcmNfY2hlY2tib3gpOwogICAgfTsKICAgIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCgogICAgdmFyIHBhY2thZ2VzX2NoZWNrYm94ID0gX193ZWJwYWNrX2V4cG9ydHNfX1siZGVmYXVsdCJdID0gc3JjX2NoZWNrYm94OwogICAgLyoqKi8KICB9CiAgLyoqKioqKi8KCn0pOw=="},null]}