fe5915c4bc5ca767fc6bf6d1e05e993c.json 208 KB

1
  1. {"remainingRequest":"/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/select.js","dependencies":[{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/element-ui/lib/select.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/babel-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:cmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbCIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbiIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5pdGVyYXRvciIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC50by1zdHJpbmctdGFnIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0Iik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZXZlcnkiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mb3ItZWFjaCIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluZGV4LW9mIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb21lIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZSIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24udG8tc3RyaW5nLXRhZyIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLm1hdGgudG8tc3RyaW5nLXRhZyIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3RvciIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmciKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYyIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmciKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvciIpOwoKdmFyIF90eXBlb2YyID0gcmVxdWlyZSgiL3Vzci9sb2NhbC9kZXZlbG9wL3BocC93d3cvd2FpYmFvL3Byb2plY3QvTk4yMDIwMDYwODAxL2FkZG9ucy9hZG1pbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YiKTsKCm1vZHVsZS5leHBvcnRzID0KLyoqKioqKi8KZnVuY3Rpb24gKG1vZHVsZXMpIHsKICAvLyB3ZWJwYWNrQm9vdHN0cmFwCgogIC8qKioqKiovCiAgLy8gVGhlIG1vZHVsZSBjYWNoZQoKICAvKioqKioqLwogIHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgoKICAvKioqKioqLwoKICBmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7CiAgICAvKioqKioqLwoKICAgIC8qKioqKiovCiAgICAvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKCiAgICAvKioqKioqLwogICAgaWYgKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7CiAgICAgIC8qKioqKiovCiAgICAgIHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzOwogICAgICAvKioqKioqLwogICAgfQogICAgLyoqKioqKi8KICAgIC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCgogICAgLyoqKioqKi8KCgogICAgdmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0gewogICAgICAvKioqKioqLwogICAgICBpOiBtb2R1bGVJZCwKCiAgICAgIC8qKioqKiovCiAgICAgIGw6IGZhbHNlLAoKICAgICAgLyoqKioqKi8KICAgICAgZXhwb3J0czoge30KICAgICAgLyoqKioqKi8KCiAgICB9OwogICAgLyoqKioqKi8KCiAgICAvKioqKioqLwogICAgLy8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uCgogICAgLyoqKioqKi8KCiAgICBtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTsKICAgIC8qKioqKiovCgogICAgLyoqKioqKi8KICAgIC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWQKCiAgICAvKioqKioqLwoKICAgIG1vZHVsZS5sID0gdHJ1ZTsKICAgIC8qKioqKiovCgogICAgLyoqKioqKi8KICAgIC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlCgogICAgLyoqKioqKi8KCiAgICByZXR1cm4gbW9kdWxlLmV4cG9ydHM7CiAgICAvKioqKioqLwogIH0KICAvKioqKioqLwoKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pCgogIC8qKioqKiovCgoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGUKCiAgLyoqKioqKi8KCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0cwoKICAvKioqKioqLwoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbiAoZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7CiAgICAvKioqKioqLwogICAgaWYgKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHsKICAgICAgLyoqKioqKi8KICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsKICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICAgIGdldDogZ2V0dGVyCiAgICAgIH0pOwogICAgICAvKioqKioqLwogICAgfQogICAgLyoqKioqKi8KCiAgfTsKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHMKCiAgLyoqKioqKi8KCgogIF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAvKioqKioqLwogICAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykgewogICAgICAvKioqKioqLwogICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7CiAgICAgICAgdmFsdWU6ICdNb2R1bGUnCiAgICAgIH0pOwogICAgICAvKioqKioqLwogICAgfQogICAgLyoqKioqKi8KCgogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgewogICAgICB2YWx1ZTogdHJ1ZQogICAgfSk7CiAgICAvKioqKioqLwogIH07CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3QKCiAgLyoqKioqKi8KICAvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXQKCiAgLyoqKioqKi8KICAvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnMKCiAgLyoqKioqKi8KICAvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3QKCiAgLyoqKioqKi8KICAvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlCgogIC8qKioqKiovCgoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbiAodmFsdWUsIG1vZGUpIHsKICAgIC8qKioqKiovCiAgICBpZiAobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7CiAgICAvKioqKioqLwoKICAgIGlmIChtb2RlICYgOCkgcmV0dXJuIHZhbHVlOwogICAgLyoqKioqKi8KCiAgICBpZiAobW9kZSAmIDQgJiYgX3R5cGVvZjIodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7CiAgICAvKioqKioqLwoKICAgIHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAvKioqKioqLwoKICAgIF9fd2VicGFja19yZXF1aXJlX18ucihucyk7CiAgICAvKioqKioqLwoKCiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgewogICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICB2YWx1ZTogdmFsdWUKICAgIH0pOwogICAgLyoqKioqKi8KCiAgICBpZiAobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHsKICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICByZXR1cm4gdmFsdWVba2V5XTsKICAgICAgfS5iaW5kKG51bGwsIGtleSkpOwogICAgfQogICAgLyoqKioqKi8KCiAgICByZXR1cm4gbnM7CiAgICAvKioqKioqLwogIH07CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlcwoKICAvKioqKioqLwoKCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24gKG1vZHVsZSkgewogICAgLyoqKioqKi8KICAgIHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgPwogICAgLyoqKioqKi8KICAgIGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7CiAgICAgIHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsKICAgIH0gOgogICAgLyoqKioqKi8KICAgIGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7CiAgICAgIHJldHVybiBtb2R1bGU7CiAgICB9OwogICAgLyoqKioqKi8KCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7CiAgICAvKioqKioqLwoKCiAgICByZXR1cm4gZ2V0dGVyOwogICAgLyoqKioqKi8KICB9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsCgogIC8qKioqKiovCgoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbiAob2JqZWN0LCBwcm9wZXJ0eSkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKICB9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gX193ZWJwYWNrX3B1YmxpY19wYXRoX18KCiAgLyoqKioqKi8KCgogIF9fd2VicGFja19yZXF1aXJlX18ucCA9ICIvZGlzdC8iOwogIC8qKioqKiovCgogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzCgogIC8qKioqKiovCgogIHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDYxKTsKICAvKioqKioqLwp9KAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoqKioqKi8KWwovKiAwICovCgovKioqLwpmdW5jdGlvbiAobW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAgInVzZSBzdHJpY3QiOwogIC8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLwoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgImEiLCBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gbm9ybWFsaXplQ29tcG9uZW50OwogIH0pOwogIC8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqLwogIC8vIElNUE9SVEFOVDogRG8gTk9UIHVzZSBFUzIwMTUgZmVhdHVyZXMgaW4gdGhpcyBmaWxlIChleGNlcHQgZm9yIG1vZHVsZXMpLgogIC8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsCiAgLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuCgoKICBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQoc2NyaXB0RXhwb3J0cywgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIGZ1bmN0aW9uYWxUZW1wbGF0ZSwgaW5qZWN0U3R5bGVzLCBzY29wZUlkLCBtb2R1bGVJZGVudGlmaWVyLAogIC8qIHNlcnZlciBvbmx5ICovCiAgc2hhZG93TW9kZQogIC8qIHZ1ZS1jbGkgb25seSAqLwogICkgewogICAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcAogICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJyA/IHNjcmlwdEV4cG9ydHMub3B0aW9ucyA6IHNjcmlwdEV4cG9ydHM7IC8vIHJlbmRlciBmdW5jdGlvbnMKCiAgICBpZiAocmVuZGVyKSB7CiAgICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyOwogICAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuczsKICAgICAgb3B0aW9ucy5fY29tcGlsZWQgPSB0cnVlOwogICAgfSAvLyBmdW5jdGlvbmFsIHRlbXBsYXRlCgoKICAgIGlmIChmdW5jdGlvbmFsVGVtcGxhdGUpIHsKICAgICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZTsKICAgIH0gLy8gc2NvcGVkSWQKCgogICAgaWYgKHNjb3BlSWQpIHsKICAgICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWQ7CiAgICB9CgogICAgdmFyIGhvb2s7CgogICAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsKICAgICAgLy8gc2VydmVyIGJ1aWxkCiAgICAgIGhvb2sgPSBmdW5jdGlvbiBob29rKGNvbnRleHQpIHsKICAgICAgICAvLyAyLjMgaW5qZWN0aW9uCiAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGwKICAgICAgICB0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0IHx8IC8vIHN0YXRlZnVsCiAgICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0OyAvLyBmdW5jdGlvbmFsCiAgICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlCgogICAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fOwogICAgICAgIH0gLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXMKCgogICAgICAgIGlmIChpbmplY3RTdHlsZXMpIHsKICAgICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpOwogICAgICAgIH0gLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlCgoKICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykgewogICAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpOwogICAgICAgIH0KICAgICAgfTsgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGUKICAgICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWQKCgogICAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2s7CiAgICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykgewogICAgICBob29rID0gc2hhZG93TW9kZSA/IGZ1bmN0aW9uICgpIHsKICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpOwogICAgICB9IDogaW5qZWN0U3R5bGVzOwogICAgfQoKICAgIGlmIChob29rKSB7CiAgICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHsKICAgICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndAogICAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXIKICAgICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rOyAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUgZmlsZQoKICAgICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlcjsKCiAgICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24oaCwgY29udGV4dCkgewogICAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpOwogICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpOwogICAgICAgIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2sKICAgICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZTsKICAgICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKSA6IFtob29rXTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiB7CiAgICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsCiAgICAgIG9wdGlvbnM6IG9wdGlvbnMKICAgIH07CiAgfQogIC8qKiovCgp9LCwsCi8qIDEgKi8KCi8qIDIgKi8KCi8qIDMgKi8KCi8qKiovCmZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwiKTsKICAvKioqLwp9LAovKiA0ICovCgovKioqLwpmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi9taXhpbnMvZW1pdHRlciIpOwogIC8qKiovCn0sCi8qIDUgKi8KCi8qKiovCmZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoImVsZW1lbnQtdWkvbGliL3V0aWxzL3Z1ZS1wb3BwZXIiKTsKICAvKioqLwp9LAovKiA2ICovCgovKioqLwpmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi9taXhpbnMvbG9jYWxlIik7CiAgLyoqKi8KfSwsLCwKLyogNyAqLwoKLyogOCAqLwoKLyogOSAqLwoKLyogMTAgKi8KCi8qKiovCmZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoImVsZW1lbnQtdWkvbGliL2lucHV0Iik7CiAgLyoqKi8KfSwsCi8qIDExICovCgovKiAxMiAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvdXRpbHMvY2xpY2tvdXRzaWRlIik7CiAgLyoqKi8KfSwsCi8qIDEzICovCgovKiAxNCAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvc2Nyb2xsYmFyIik7CiAgLyoqKi8KfSwsCi8qIDE1ICovCgovKiAxNiAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvdXRpbHMvcmVzaXplLWV2ZW50Iik7CiAgLyoqKi8KfSwKLyogMTcgKi8KCi8qKiovCmZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoInRocm90dGxlLWRlYm91bmNlL2RlYm91bmNlIik7CiAgLyoqKi8KfSwsCi8qIDE4ICovCgovKiAxOSAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvbG9jYWxlIik7CiAgLyoqKi8KfSwsCi8qIDIwICovCgovKiAyMSAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvdXRpbHMvc2hhcmVkIik7CiAgLyoqKi8KfSwKLyogMjIgKi8KCi8qKiovCmZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoImVsZW1lbnQtdWkvbGliL21peGlucy9mb2N1cyIpOwogIC8qKiovCn0sLCwsLCwsLCwKLyogMjMgKi8KCi8qIDI0ICovCgovKiAyNSAqLwoKLyogMjYgKi8KCi8qIDI3ICovCgovKiAyOCAqLwoKLyogMjkgKi8KCi8qIDMwICovCgovKiAzMSAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsLWludG8tdmlldyIpOwogIC8qKiovCn0sLCwKLyogMzIgKi8KCi8qIDMzICovCgovKiAzNCAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogICJ1c2Ugc3RyaWN0IjsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E0NGM2NDImCgogIHZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7CiAgICB2YXIgX3ZtID0gdGhpczsKCiAgICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnQ7CgogICAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oOwoKICAgIHJldHVybiBfYygibGkiLCB7CiAgICAgIGRpcmVjdGl2ZXM6IFt7CiAgICAgICAgbmFtZTogInNob3ciLAogICAgICAgIHJhd05hbWU6ICJ2LXNob3ciLAogICAgICAgIHZhbHVlOiBfdm0udmlzaWJsZSwKICAgICAgICBleHByZXNzaW9uOiAidmlzaWJsZSIKICAgICAgfV0sCiAgICAgIHN0YXRpY0NsYXNzOiAiZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtIiwKICAgICAgY2xhc3M6IHsKICAgICAgICBzZWxlY3RlZDogX3ZtLml0ZW1TZWxlY3RlZCwKICAgICAgICAiaXMtZGlzYWJsZWQiOiBfdm0uZGlzYWJsZWQgfHwgX3ZtLmdyb3VwRGlzYWJsZWQgfHwgX3ZtLmxpbWl0UmVhY2hlZCwKICAgICAgICBob3ZlcjogX3ZtLmhvdmVyCiAgICAgIH0sCiAgICAgIG9uOiB7CiAgICAgICAgbW91c2VlbnRlcjogX3ZtLmhvdmVySXRlbSwKICAgICAgICBjbGljazogZnVuY3Rpb24gY2xpY2soJGV2ZW50KSB7CiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICByZXR1cm4gX3ZtLnNlbGVjdE9wdGlvbkNsaWNrKCRldmVudCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LCBbX3ZtLl90KCJkZWZhdWx0IiwgW19jKCJzcGFuIiwgW192bS5fdihfdm0uX3MoX3ZtLmN1cnJlbnRMYWJlbCkpXSldKV0sIDIpOwogIH07CgogIHZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXTsKICByZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWU7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNDRjNjQyJgogIC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL21peGlucy9lbWl0dGVyIgoKICB2YXIgZW1pdHRlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwoKICB2YXIgZW1pdHRlcl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihlbWl0dGVyXyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwiCgoKICB2YXIgdXRpbF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmCgoKICB2YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgX3R5cGVvZjIoU3ltYm9sLml0ZXJhdG9yKSA9PT0gInN5bWJvbCIgPyBmdW5jdGlvbiAob2JqKSB7CiAgICByZXR1cm4gX3R5cGVvZjIob2JqKTsKICB9IDogZnVuY3Rpb24gKG9iaikgewogICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogX3R5cGVvZjIob2JqKTsKICB9OyAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCgogIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCgogIHZhciBvcHRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSB7CiAgICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sCiAgICBuYW1lOiAnRWxPcHRpb24nLAogICAgY29tcG9uZW50TmFtZTogJ0VsT3B0aW9uJywKICAgIGluamVjdDogWydzZWxlY3QnXSwKICAgIHByb3BzOiB7CiAgICAgIHZhbHVlOiB7CiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgfSwKICAgICAgbGFiZWw6IFtTdHJpbmcsIE51bWJlcl0sCiAgICAgIGNyZWF0ZWQ6IEJvb2xlYW4sCiAgICAgIGRpc2FibGVkOiB7CiAgICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgICB9CiAgICB9LAogICAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBpbmRleDogLTEsCiAgICAgICAgZ3JvdXBEaXNhYmxlZDogZmFsc2UsCiAgICAgICAgdmlzaWJsZTogdHJ1ZSwKICAgICAgICBoaXRTdGF0ZTogZmFsc2UsCiAgICAgICAgaG92ZXI6IGZhbHNlCiAgICAgIH07CiAgICB9LAogICAgY29tcHV0ZWQ6IHsKICAgICAgaXNPYmplY3Q6IGZ1bmN0aW9uIGlzT2JqZWN0KCkgewogICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy52YWx1ZSkudG9Mb3dlckNhc2UoKSA9PT0gJ1tvYmplY3Qgb2JqZWN0XSc7CiAgICAgIH0sCiAgICAgIGN1cnJlbnRMYWJlbDogZnVuY3Rpb24gY3VycmVudExhYmVsKCkgewogICAgICAgIHJldHVybiB0aGlzLmxhYmVsIHx8ICh0aGlzLmlzT2JqZWN0ID8gJycgOiB0aGlzLnZhbHVlKTsKICAgICAgfSwKICAgICAgY3VycmVudFZhbHVlOiBmdW5jdGlvbiBjdXJyZW50VmFsdWUoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy5sYWJlbCB8fCAnJzsKICAgICAgfSwKICAgICAgaXRlbVNlbGVjdGVkOiBmdW5jdGlvbiBpdGVtU2VsZWN0ZWQoKSB7CiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdC5tdWx0aXBsZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNFcXVhbCh0aGlzLnZhbHVlLCB0aGlzLnNlbGVjdC52YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHRoaXMuc2VsZWN0LnZhbHVlLCB0aGlzLnZhbHVlKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGxpbWl0UmVhY2hlZDogZnVuY3Rpb24gbGltaXRSZWFjaGVkKCkgewogICAgICAgIGlmICh0aGlzLnNlbGVjdC5tdWx0aXBsZSkgewogICAgICAgICAgcmV0dXJuICF0aGlzLml0ZW1TZWxlY3RlZCAmJiAodGhpcy5zZWxlY3QudmFsdWUgfHwgW10pLmxlbmd0aCA+PSB0aGlzLnNlbGVjdC5tdWx0aXBsZUxpbWl0ICYmIHRoaXMuc2VsZWN0Lm11bHRpcGxlTGltaXQgPiAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgd2F0Y2g6IHsKICAgICAgY3VycmVudExhYmVsOiBmdW5jdGlvbiBjdXJyZW50TGFiZWwoKSB7CiAgICAgICAgaWYgKCF0aGlzLmNyZWF0ZWQgJiYgIXRoaXMuc2VsZWN0LnJlbW90ZSkgdGhpcy5kaXNwYXRjaCgnRWxTZWxlY3QnLCAnc2V0U2VsZWN0ZWQnKTsKICAgICAgfSwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKHZhbCwgb2xkVmFsKSB7CiAgICAgICAgdmFyIF9zZWxlY3QgPSB0aGlzLnNlbGVjdCwKICAgICAgICAgICAgcmVtb3RlID0gX3NlbGVjdC5yZW1vdGUsCiAgICAgICAgICAgIHZhbHVlS2V5ID0gX3NlbGVjdC52YWx1ZUtleTsKCiAgICAgICAgaWYgKCF0aGlzLmNyZWF0ZWQgJiYgIXJlbW90ZSkgewogICAgICAgICAgaWYgKHZhbHVlS2V5ICYmICh0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZih2YWwpKSA9PT0gJ29iamVjdCcgJiYgKHR5cGVvZiBvbGRWYWwgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG9sZFZhbCkpID09PSAnb2JqZWN0JyAmJiB2YWxbdmFsdWVLZXldID09PSBvbGRWYWxbdmFsdWVLZXldKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbFNlbGVjdCcsICdzZXRTZWxlY3RlZCcpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIG1ldGhvZHM6IHsKICAgICAgaXNFcXVhbDogZnVuY3Rpb24gaXNFcXVhbChhLCBiKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzT2JqZWN0KSB7CiAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHZhbHVlS2V5ID0gdGhpcy5zZWxlY3QudmFsdWVLZXk7CiAgICAgICAgICByZXR1cm4gT2JqZWN0KHV0aWxfWyJnZXRWYWx1ZUJ5UGF0aCJdKShhLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1siZ2V0VmFsdWVCeVBhdGgiXSkoYiwgdmFsdWVLZXkpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgY29udGFpbnM6IGZ1bmN0aW9uIGNvbnRhaW5zKCkgewogICAgICAgIHZhciBhcnIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdOwogICAgICAgIHZhciB0YXJnZXQgPSBhcmd1bWVudHNbMV07CgogICAgICAgIGlmICghdGhpcy5pc09iamVjdCkgewogICAgICAgICAgcmV0dXJuIGFyciAmJiBhcnIuaW5kZXhPZih0YXJnZXQpID4gLTE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciB2YWx1ZUtleSA9IHRoaXMuc2VsZWN0LnZhbHVlS2V5OwogICAgICAgICAgcmV0dXJuIGFyciAmJiBhcnIuc29tZShmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICByZXR1cm4gT2JqZWN0KHV0aWxfWyJnZXRWYWx1ZUJ5UGF0aCJdKShpdGVtLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1siZ2V0VmFsdWVCeVBhdGgiXSkodGFyZ2V0LCB2YWx1ZUtleSk7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGhhbmRsZUdyb3VwRGlzYWJsZWQ6IGZ1bmN0aW9uIGhhbmRsZUdyb3VwRGlzYWJsZWQodmFsKSB7CiAgICAgICAgdGhpcy5ncm91cERpc2FibGVkID0gdmFsOwogICAgICB9LAogICAgICBob3Zlckl0ZW06IGZ1bmN0aW9uIGhvdmVySXRlbSgpIHsKICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZ3JvdXBEaXNhYmxlZCkgewogICAgICAgICAgdGhpcy5zZWxlY3QuaG92ZXJJbmRleCA9IHRoaXMuc2VsZWN0Lm9wdGlvbnMuaW5kZXhPZih0aGlzKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHNlbGVjdE9wdGlvbkNsaWNrOiBmdW5jdGlvbiBzZWxlY3RPcHRpb25DbGljaygpIHsKICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCAhPT0gdHJ1ZSAmJiB0aGlzLmdyb3VwRGlzYWJsZWQgIT09IHRydWUpIHsKICAgICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsU2VsZWN0JywgJ2hhbmRsZU9wdGlvbkNsaWNrJywgW3RoaXMsIHRydWVdKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHF1ZXJ5Q2hhbmdlOiBmdW5jdGlvbiBxdWVyeUNoYW5nZShxdWVyeSkgewogICAgICAgIHRoaXMudmlzaWJsZSA9IG5ldyBSZWdFeHAoT2JqZWN0KHV0aWxfWyJlc2NhcGVSZWdleHBTdHJpbmciXSkocXVlcnkpLCAnaScpLnRlc3QodGhpcy5jdXJyZW50TGFiZWwpIHx8IHRoaXMuY3JlYXRlZDsKCiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHsKICAgICAgICAgIHRoaXMuc2VsZWN0LmZpbHRlcmVkT3B0aW9uc0NvdW50LS07CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgICAgdGhpcy5zZWxlY3Qub3B0aW9ucy5wdXNoKHRoaXMpOwogICAgICB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLnB1c2godGhpcyk7CiAgICAgIHRoaXMuc2VsZWN0Lm9wdGlvbnNDb3VudCsrOwogICAgICB0aGlzLnNlbGVjdC5maWx0ZXJlZE9wdGlvbnNDb3VudCsrOwogICAgICB0aGlzLiRvbigncXVlcnlDaGFuZ2UnLCB0aGlzLnF1ZXJ5Q2hhbmdlKTsKICAgICAgdGhpcy4kb24oJ2hhbmRsZUdyb3VwRGlzYWJsZWQnLCB0aGlzLmhhbmRsZUdyb3VwRGlzYWJsZWQpOwogICAgfSwKICAgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAgIHZhciBfc2VsZWN0MiA9IHRoaXMuc2VsZWN0LAogICAgICAgICAgc2VsZWN0ZWQgPSBfc2VsZWN0Mi5zZWxlY3RlZCwKICAgICAgICAgIG11bHRpcGxlID0gX3NlbGVjdDIubXVsdGlwbGU7CiAgICAgIHZhciBzZWxlY3RlZE9wdGlvbnMgPSBtdWx0aXBsZSA/IHNlbGVjdGVkIDogW3NlbGVjdGVkXTsKICAgICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3QuY2FjaGVkT3B0aW9ucy5pbmRleE9mKHRoaXMpOwogICAgICB2YXIgc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkT3B0aW9ucy5pbmRleE9mKHRoaXMpOyAvLyBpZiBvcHRpb24gaXMgbm90IHNlbGVjdGVkLCByZW1vdmUgaXQgZnJvbSBjYWNoZQoKICAgICAgaWYgKGluZGV4ID4gLTEgJiYgc2VsZWN0ZWRJbmRleCA8IDApIHsKICAgICAgICB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLnNwbGljZShpbmRleCwgMSk7CiAgICAgIH0KCiAgICAgIHRoaXMuc2VsZWN0Lm9uT3B0aW9uRGVzdHJveSh0aGlzLnNlbGVjdC5vcHRpb25zLmluZGV4T2YodGhpcykpOwogICAgfQogIH07IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJgoKICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgogIHZhciBzcmNfb3B0aW9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gb3B0aW9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfOyAvLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcwoKICB2YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlCgogIC8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KCgogIHZhciBjb21wb25lbnQgPSBPYmplY3QoY29tcG9uZW50Tm9ybWFsaXplclsiYSIKICAvKiBkZWZhdWx0ICovCiAgXSkoc3JjX29wdGlvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXywgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIGZhbHNlLCBudWxsLCBudWxsLCBudWxsKTsKICAvKiBob3QgcmVsb2FkICovCgogIGlmIChmYWxzZSkgewogICAgdmFyIGFwaTsKICB9CgogIGNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9ICJwYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWUiOwogIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCiAgdmFyIHNyY19vcHRpb24gPSBfX3dlYnBhY2tfZXhwb3J0c19fWyJhIl0gPSBjb21wb25lbnQuZXhwb3J0czsKICAvKioqLwp9LCwsLAovKiAzNSAqLwoKLyogMzYgKi8KCi8qIDM3ICovCgovKiAzOCAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvdGFnIik7CiAgLyoqKi8KfSwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsCi8qIDM5ICovCgovKiA0MCAqLwoKLyogNDEgKi8KCi8qIDQyICovCgovKiA0MyAqLwoKLyogNDQgKi8KCi8qIDQ1ICovCgovKiA0NiAqLwoKLyogNDcgKi8KCi8qIDQ4ICovCgovKiA0OSAqLwoKLyogNTAgKi8KCi8qIDUxICovCgovKiA1MiAqLwoKLyogNTMgKi8KCi8qIDU0ICovCgovKiA1NSAqLwoKLyogNTYgKi8KCi8qIDU3ICovCgovKiA1OCAqLwoKLyogNTkgKi8KCi8qIDYwICovCgovKiA2MSAqLwoKLyoqKi8KZnVuY3Rpb24gKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogICJ1c2Ugc3RyaWN0IjsKCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTRhYWRlNiYKCgogIHZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7CiAgICB2YXIgX3ZtID0gdGhpczsKCiAgICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnQ7CgogICAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oOwoKICAgIHJldHVybiBfYygiZGl2IiwgewogICAgICBkaXJlY3RpdmVzOiBbewogICAgICAgIG5hbWU6ICJjbGlja291dHNpZGUiLAogICAgICAgIHJhd05hbWU6ICJ2LWNsaWNrb3V0c2lkZSIsCiAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVDbG9zZSwKICAgICAgICBleHByZXNzaW9uOiAiaGFuZGxlQ2xvc2UiCiAgICAgIH1dLAogICAgICBzdGF0aWNDbGFzczogImVsLXNlbGVjdCIsCiAgICAgIGNsYXNzOiBbX3ZtLnNlbGVjdFNpemUgPyAiZWwtc2VsZWN0LS0iICsgX3ZtLnNlbGVjdFNpemUgOiAiIl0sCiAgICAgIG9uOiB7CiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIGNsaWNrKCRldmVudCkgewogICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgcmV0dXJuIF92bS50b2dnbGVNZW51KCRldmVudCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LCBbX3ZtLm11bHRpcGxlID8gX2MoImRpdiIsIHsKICAgICAgcmVmOiAidGFncyIsCiAgICAgIHN0YXRpY0NsYXNzOiAiZWwtc2VsZWN0X190YWdzIiwKICAgICAgc3R5bGU6IHsKICAgICAgICAibWF4LXdpZHRoIjogX3ZtLmlucHV0V2lkdGggLSAzMiArICJweCIsCiAgICAgICAgd2lkdGg6ICIxMDAlIgogICAgICB9CiAgICB9LCBbX3ZtLmNvbGxhcHNlVGFncyAmJiBfdm0uc2VsZWN0ZWQubGVuZ3RoID8gX2MoInNwYW4iLCBbX2MoImVsLXRhZyIsIHsKICAgICAgYXR0cnM6IHsKICAgICAgICBjbG9zYWJsZTogIV92bS5zZWxlY3REaXNhYmxlZCwKICAgICAgICBzaXplOiBfdm0uY29sbGFwc2VUYWdTaXplLAogICAgICAgIGhpdDogX3ZtLnNlbGVjdGVkWzBdLmhpdFN0YXRlLAogICAgICAgIHR5cGU6ICJpbmZvIiwKICAgICAgICAiZGlzYWJsZS10cmFuc2l0aW9ucyI6ICIiCiAgICAgIH0sCiAgICAgIG9uOiB7CiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKCRldmVudCkgewogICAgICAgICAgX3ZtLmRlbGV0ZVRhZygkZXZlbnQsIF92bS5zZWxlY3RlZFswXSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LCBbX2MoInNwYW4iLCB7CiAgICAgIHN0YXRpY0NsYXNzOiAiZWwtc2VsZWN0X190YWdzLXRleHQiCiAgICB9LCBbX3ZtLl92KF92bS5fcyhfdm0uc2VsZWN0ZWRbMF0uY3VycmVudExhYmVsKSldKV0pLCBfdm0uc2VsZWN0ZWQubGVuZ3RoID4gMSA/IF9jKCJlbC10YWciLCB7CiAgICAgIGF0dHJzOiB7CiAgICAgICAgY2xvc2FibGU6IGZhbHNlLAogICAgICAgIHNpemU6IF92bS5jb2xsYXBzZVRhZ1NpemUsCiAgICAgICAgdHlwZTogImluZm8iLAogICAgICAgICJkaXNhYmxlLXRyYW5zaXRpb25zIjogIiIKICAgICAgfQogICAgfSwgW19jKCJzcGFuIiwgewogICAgICBzdGF0aWNDbGFzczogImVsLXNlbGVjdF9fdGFncy10ZXh0IgogICAgfSwgW192bS5fdigiKyAiICsgX3ZtLl9zKF92bS5zZWxlY3RlZC5sZW5ndGggLSAxKSldKV0pIDogX3ZtLl9lKCldLCAxKSA6IF92bS5fZSgpLCAhX3ZtLmNvbGxhcHNlVGFncyA/IF9jKCJ0cmFuc2l0aW9uLWdyb3VwIiwgewogICAgICBvbjogewogICAgICAgICJhZnRlci1sZWF2ZSI6IF92bS5yZXNldElucHV0SGVpZ2h0CiAgICAgIH0KICAgIH0sIF92bS5fbChfdm0uc2VsZWN0ZWQsIGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgIHJldHVybiBfYygiZWwtdGFnIiwgewogICAgICAgIGtleTogX3ZtLmdldFZhbHVlS2V5KGl0ZW0pLAogICAgICAgIGF0dHJzOiB7CiAgICAgICAgICBjbG9zYWJsZTogIV92bS5zZWxlY3REaXNhYmxlZCwKICAgICAgICAgIHNpemU6IF92bS5jb2xsYXBzZVRhZ1NpemUsCiAgICAgICAgICBoaXQ6IGl0ZW0uaGl0U3RhdGUsCiAgICAgICAgICB0eXBlOiAiaW5mbyIsCiAgICAgICAgICAiZGlzYWJsZS10cmFuc2l0aW9ucyI6ICIiCiAgICAgICAgfSwKICAgICAgICBvbjogewogICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKCRldmVudCkgewogICAgICAgICAgICBfdm0uZGVsZXRlVGFnKCRldmVudCwgaXRlbSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LCBbX2MoInNwYW4iLCB7CiAgICAgICAgc3RhdGljQ2xhc3M6ICJlbC1zZWxlY3RfX3RhZ3MtdGV4dCIKICAgICAgfSwgW192bS5fdihfdm0uX3MoaXRlbS5jdXJyZW50TGFiZWwpKV0pXSk7CiAgICB9KSwgMSkgOiBfdm0uX2UoKSwgX3ZtLmZpbHRlcmFibGUgPyBfYygiaW5wdXQiLCB7CiAgICAgIGRpcmVjdGl2ZXM6IFt7CiAgICAgICAgbmFtZTogIm1vZGVsIiwKICAgICAgICByYXdOYW1lOiAidi1tb2RlbCIsCiAgICAgICAgdmFsdWU6IF92bS5xdWVyeSwKICAgICAgICBleHByZXNzaW9uOiAicXVlcnkiCiAgICAgIH1dLAogICAgICByZWY6ICJpbnB1dCIsCiAgICAgIHN0YXRpY0NsYXNzOiAiZWwtc2VsZWN0X19pbnB1dCIsCiAgICAgIGNsYXNzOiBbX3ZtLnNlbGVjdFNpemUgPyAiaXMtIiArIF92bS5zZWxlY3RTaXplIDogIiJdLAogICAgICBzdHlsZTogewogICAgICAgICJmbGV4LWdyb3ciOiAiMSIsCiAgICAgICAgd2lkdGg6IF92bS5pbnB1dExlbmd0aCAvIChfdm0uaW5wdXRXaWR0aCAtIDMyKSArICIlIiwKICAgICAgICAibWF4LXdpZHRoIjogX3ZtLmlucHV0V2lkdGggLSA0MiArICJweCIKICAgICAgfSwKICAgICAgYXR0cnM6IHsKICAgICAgICB0eXBlOiAidGV4dCIsCiAgICAgICAgZGlzYWJsZWQ6IF92bS5zZWxlY3REaXNhYmxlZCwKICAgICAgICBhdXRvY29tcGxldGU6IF92bS5hdXRvQ29tcGxldGUgfHwgX3ZtLmF1dG9jb21wbGV0ZQogICAgICB9LAogICAgICBkb21Qcm9wczogewogICAgICAgIHZhbHVlOiBfdm0ucXVlcnkKICAgICAgfSwKICAgICAgb246IHsKICAgICAgICBmb2N1czogX3ZtLmhhbmRsZUZvY3VzLAogICAgICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoJGV2ZW50KSB7CiAgICAgICAgICBfdm0uc29mdEZvY3VzID0gZmFsc2U7CiAgICAgICAgfSwKICAgICAgICBrZXl1cDogX3ZtLm1hbmFnZVBsYWNlaG9sZGVyLAogICAgICAgIGtleWRvd246IFtfdm0ucmVzZXRJbnB1dFN0YXRlLCBmdW5jdGlvbiAoJGV2ZW50KSB7CiAgICAgICAgICBpZiAoISgiYnV0dG9uIiBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5Q29kZSwgImRvd24iLCA0MCwgJGV2ZW50LmtleSwgWyJEb3duIiwgIkFycm93RG93biJdKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KCiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgICBfdm0ubmF2aWdhdGVPcHRpb25zKCJuZXh0Iik7CiAgICAgICAgfSwgZnVuY3Rpb24gKCRldmVudCkgewogICAgICAgICAgaWYgKCEoImJ1dHRvbiIgaW4gJGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsICJ1cCIsIDM4LCAkZXZlbnQua2V5LCBbIlVwIiwgIkFycm93VXAiXSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CgogICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgX3ZtLm5hdmlnYXRlT3B0aW9ucygicHJldiIpOwogICAgICAgIH0sIGZ1bmN0aW9uICgkZXZlbnQpIHsKICAgICAgICAgIGlmICghKCJidXR0b24iIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCAiZW50ZXIiLCAxMywgJGV2ZW50LmtleSwgIkVudGVyIikpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CgogICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICByZXR1cm4gX3ZtLnNlbGVjdE9wdGlvbigkZXZlbnQpOwogICAgICAgIH0sIGZ1bmN0aW9uICgkZXZlbnQpIHsKICAgICAgICAgIGlmICghKCJidXR0b24iIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCAiZXNjIiwgMjcsICRldmVudC5rZXksIFsiRXNjIiwgIkVzY2FwZSJdKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KCiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIF92bS52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgfSwgZnVuY3Rpb24gKCRldmVudCkgewogICAgICAgICAgaWYgKCEoImJ1dHRvbiIgaW4gJGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsICJkZWxldGUiLCBbOCwgNDZdLCAkZXZlbnQua2V5LCBbIkJhY2tzcGFjZSIsICJEZWxldGUiLCAiRGVsIl0pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfdm0uZGVsZXRlUHJldlRhZygkZXZlbnQpOwogICAgICAgIH0sIGZ1bmN0aW9uICgkZXZlbnQpIHsKICAgICAgICAgIGlmICghKCJidXR0b24iIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCAidGFiIiwgOSwgJGV2ZW50LmtleSwgIlRhYiIpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIF92bS52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgfV0sCiAgICAgICAgY29tcG9zaXRpb25zdGFydDogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uLAogICAgICAgIGNvbXBvc2l0aW9udXBkYXRlOiBfdm0uaGFuZGxlQ29tcG9zaXRpb24sCiAgICAgICAgY29tcG9zaXRpb25lbmQ6IF92bS5oYW5kbGVDb21wb3NpdGlvbiwKICAgICAgICBpbnB1dDogW2Z1bmN0aW9uICgkZXZlbnQpIHsKICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgICAgX3ZtLnF1ZXJ5ID0gJGV2ZW50LnRhcmdldC52YWx1ZTsKICAgICAgICB9LCBfdm0uZGVib3VuY2VkUXVlcnlDaGFuZ2VdCiAgICAgIH0KICAgIH0pIDogX3ZtLl9lKCldLCAxKSA6IF92bS5fZSgpLCBfYygiZWwtaW5wdXQiLCB7CiAgICAgIHJlZjogInJlZmVyZW5jZSIsCiAgICAgIGNsYXNzOiB7CiAgICAgICAgImlzLWZvY3VzIjogX3ZtLnZpc2libGUKICAgICAgfSwKICAgICAgYXR0cnM6IHsKICAgICAgICB0eXBlOiAidGV4dCIsCiAgICAgICAgcGxhY2Vob2xkZXI6IF92bS5jdXJyZW50UGxhY2Vob2xkZXIsCiAgICAgICAgbmFtZTogX3ZtLm5hbWUsCiAgICAgICAgaWQ6IF92bS5pZCwKICAgICAgICBhdXRvY29tcGxldGU6IF92bS5hdXRvQ29tcGxldGUgfHwgX3ZtLmF1dG9jb21wbGV0ZSwKICAgICAgICBzaXplOiBfdm0uc2VsZWN0U2l6ZSwKICAgICAgICBkaXNhYmxlZDogX3ZtLnNlbGVjdERpc2FibGVkLAogICAgICAgIHJlYWRvbmx5OiBfdm0ucmVhZG9ubHksCiAgICAgICAgInZhbGlkYXRlLWV2ZW50IjogZmFsc2UsCiAgICAgICAgdGFiaW5kZXg6IF92bS5tdWx0aXBsZSAmJiBfdm0uZmlsdGVyYWJsZSA/ICItMSIgOiBudWxsCiAgICAgIH0sCiAgICAgIG9uOiB7CiAgICAgICAgZm9jdXM6IF92bS5oYW5kbGVGb2N1cywKICAgICAgICBibHVyOiBfdm0uaGFuZGxlQmx1cgogICAgICB9LAogICAgICBuYXRpdmVPbjogewogICAgICAgIGtleXVwOiBmdW5jdGlvbiBrZXl1cCgkZXZlbnQpIHsKICAgICAgICAgIHJldHVybiBfdm0uZGVib3VuY2VkT25JbnB1dENoYW5nZSgkZXZlbnQpOwogICAgICAgIH0sCiAgICAgICAga2V5ZG93bjogW2Z1bmN0aW9uICgkZXZlbnQpIHsKICAgICAgICAgIGlmICghKCJidXR0b24iIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCAiZG93biIsIDQwLCAkZXZlbnQua2V5LCBbIkRvd24iLCAiQXJyb3dEb3duIl0pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgIF92bS5uYXZpZ2F0ZU9wdGlvbnMoIm5leHQiKTsKICAgICAgICB9LCBmdW5jdGlvbiAoJGV2ZW50KSB7CiAgICAgICAgICBpZiAoISgiYnV0dG9uIiBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5Q29kZSwgInVwIiwgMzgsICRldmVudC5rZXksIFsiVXAiLCAiQXJyb3dVcCJdKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KCiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgICBfdm0ubmF2aWdhdGVPcHRpb25zKCJwcmV2Iik7CiAgICAgICAgfSwgZnVuY3Rpb24gKCRldmVudCkgewogICAgICAgICAgaWYgKCEoImJ1dHRvbiIgaW4gJGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsICJlbnRlciIsIDEzLCAkZXZlbnQua2V5LCAiRW50ZXIiKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KCiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIHJldHVybiBfdm0uc2VsZWN0T3B0aW9uKCRldmVudCk7CiAgICAgICAgfSwgZnVuY3Rpb24gKCRldmVudCkgewogICAgICAgICAgaWYgKCEoImJ1dHRvbiIgaW4gJGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsICJlc2MiLCAyNywgJGV2ZW50LmtleSwgWyJFc2MiLCAiRXNjYXBlIl0pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgX3ZtLnZpc2libGUgPSBmYWxzZTsKICAgICAgICB9LCBmdW5jdGlvbiAoJGV2ZW50KSB7CiAgICAgICAgICBpZiAoISgiYnV0dG9uIiBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5Q29kZSwgInRhYiIsIDksICRldmVudC5rZXksICJUYWIiKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KCiAgICAgICAgICBfdm0udmlzaWJsZSA9IGZhbHNlOwogICAgICAgIH1dLAogICAgICAgIHBhc3RlOiBmdW5jdGlvbiBwYXN0ZSgkZXZlbnQpIHsKICAgICAgICAgIHJldHVybiBfdm0uZGVib3VuY2VkT25JbnB1dENoYW5nZSgkZXZlbnQpOwogICAgICAgIH0sCiAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24gbW91c2VlbnRlcigkZXZlbnQpIHsKICAgICAgICAgIF92bS5pbnB1dEhvdmVyaW5nID0gdHJ1ZTsKICAgICAgICB9LAogICAgICAgIG1vdXNlbGVhdmU6IGZ1bmN0aW9uIG1vdXNlbGVhdmUoJGV2ZW50KSB7CiAgICAgICAgICBfdm0uaW5wdXRIb3ZlcmluZyA9IGZhbHNlOwogICAgICAgIH0KICAgICAgfSwKICAgICAgbW9kZWw6IHsKICAgICAgICB2YWx1ZTogX3ZtLnNlbGVjdGVkTGFiZWwsCiAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKCQkdikgewogICAgICAgICAgX3ZtLnNlbGVjdGVkTGFiZWwgPSAkJHY7CiAgICAgICAgfSwKICAgICAgICBleHByZXNzaW9uOiAic2VsZWN0ZWRMYWJlbCIKICAgICAgfQogICAgfSwgW192bS4kc2xvdHMucHJlZml4ID8gX2MoInRlbXBsYXRlIiwgewogICAgICBzbG90OiAicHJlZml4IgogICAgfSwgW192bS5fdCgicHJlZml4IildLCAyKSA6IF92bS5fZSgpLCBfYygidGVtcGxhdGUiLCB7CiAgICAgIHNsb3Q6ICJzdWZmaXgiCiAgICB9LCBbX2MoImkiLCB7CiAgICAgIGRpcmVjdGl2ZXM6IFt7CiAgICAgICAgbmFtZTogInNob3ciLAogICAgICAgIHJhd05hbWU6ICJ2LXNob3ciLAogICAgICAgIHZhbHVlOiAhX3ZtLnNob3dDbG9zZSwKICAgICAgICBleHByZXNzaW9uOiAiIXNob3dDbG9zZSIKICAgICAgfV0sCiAgICAgIGNsYXNzOiBbImVsLXNlbGVjdF9fY2FyZXQiLCAiZWwtaW5wdXRfX2ljb24iLCAiZWwtaWNvbi0iICsgX3ZtLmljb25DbGFzc10KICAgIH0pLCBfdm0uc2hvd0Nsb3NlID8gX2MoImkiLCB7CiAgICAgIHN0YXRpY0NsYXNzOiAiZWwtc2VsZWN0X19jYXJldCBlbC1pbnB1dF9faWNvbiBlbC1pY29uLWNpcmNsZS1jbG9zZSIsCiAgICAgIG9uOiB7CiAgICAgICAgY2xpY2s6IF92bS5oYW5kbGVDbGVhckNsaWNrCiAgICAgIH0KICAgIH0pIDogX3ZtLl9lKCldKV0sIDIpLCBfYygidHJhbnNpdGlvbiIsIHsKICAgICAgYXR0cnM6IHsKICAgICAgICBuYW1lOiAiZWwtem9vbS1pbi10b3AiCiAgICAgIH0sCiAgICAgIG9uOiB7CiAgICAgICAgImJlZm9yZS1lbnRlciI6IF92bS5oYW5kbGVNZW51RW50ZXIsCiAgICAgICAgImFmdGVyLWxlYXZlIjogX3ZtLmRvRGVzdHJveQogICAgICB9CiAgICB9LCBbX2MoImVsLXNlbGVjdC1tZW51IiwgewogICAgICBkaXJlY3RpdmVzOiBbewogICAgICAgIG5hbWU6ICJzaG93IiwKICAgICAgICByYXdOYW1lOiAidi1zaG93IiwKICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUgJiYgX3ZtLmVtcHR5VGV4dCAhPT0gZmFsc2UsCiAgICAgICAgZXhwcmVzc2lvbjogInZpc2libGUgJiYgZW1wdHlUZXh0ICE9PSBmYWxzZSIKICAgICAgfV0sCiAgICAgIHJlZjogInBvcHBlciIsCiAgICAgIGF0dHJzOiB7CiAgICAgICAgImFwcGVuZC10by1ib2R5IjogX3ZtLnBvcHBlckFwcGVuZFRvQm9keQogICAgICB9CiAgICB9LCBbX2MoImVsLXNjcm9sbGJhciIsIHsKICAgICAgZGlyZWN0aXZlczogW3sKICAgICAgICBuYW1lOiAic2hvdyIsCiAgICAgICAgcmF3TmFtZTogInYtc2hvdyIsCiAgICAgICAgdmFsdWU6IF92bS5vcHRpb25zLmxlbmd0aCA+IDAgJiYgIV92bS5sb2FkaW5nLAogICAgICAgIGV4cHJlc3Npb246ICJvcHRpb25zLmxlbmd0aCA+IDAgJiYgIWxvYWRpbmciCiAgICAgIH1dLAogICAgICByZWY6ICJzY3JvbGxiYXIiLAogICAgICBjbGFzczogewogICAgICAgICJpcy1lbXB0eSI6ICFfdm0uYWxsb3dDcmVhdGUgJiYgX3ZtLnF1ZXJ5ICYmIF92bS5maWx0ZXJlZE9wdGlvbnNDb3VudCA9PT0gMAogICAgICB9LAogICAgICBhdHRyczogewogICAgICAgIHRhZzogInVsIiwKICAgICAgICAid3JhcC1jbGFzcyI6ICJlbC1zZWxlY3QtZHJvcGRvd25fX3dyYXAiLAogICAgICAgICJ2aWV3LWNsYXNzIjogImVsLXNlbGVjdC1kcm9wZG93bl9fbGlzdCIKICAgICAgfQogICAgfSwgW192bS5zaG93TmV3T3B0aW9uID8gX2MoImVsLW9wdGlvbiIsIHsKICAgICAgYXR0cnM6IHsKICAgICAgICB2YWx1ZTogX3ZtLnF1ZXJ5LAogICAgICAgIGNyZWF0ZWQ6ICIiCiAgICAgIH0KICAgIH0pIDogX3ZtLl9lKCksIF92bS5fdCgiZGVmYXVsdCIpXSwgMiksIF92bS5lbXB0eVRleHQgJiYgKCFfdm0uYWxsb3dDcmVhdGUgfHwgX3ZtLmxvYWRpbmcgfHwgX3ZtLmFsbG93Q3JlYXRlICYmIF92bS5vcHRpb25zLmxlbmd0aCA9PT0gMCkgPyBbX3ZtLiRzbG90cy5lbXB0eSA/IF92bS5fdCgiZW1wdHkiKSA6IF9jKCJwIiwgewogICAgICBzdGF0aWNDbGFzczogImVsLXNlbGVjdC1kcm9wZG93bl9fZW1wdHkiCiAgICB9LCBbX3ZtLl92KCJcbiAgICAgICAgICAiICsgX3ZtLl9zKF92bS5lbXB0eVRleHQpICsgIlxuICAgICAgICAiKV0pXSA6IF92bS5fZSgpXSwgMildLCAxKV0sIDEpOwogIH07CgogIHZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXTsKICByZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWU7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNGFhZGU2JgogIC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL21peGlucy9lbWl0dGVyIgoKICB2YXIgZW1pdHRlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwoKICB2YXIgZW1pdHRlcl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihlbWl0dGVyXyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL21peGlucy9mb2N1cyIKCgogIHZhciBmb2N1c18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTsKCiAgdmFyIGZvY3VzX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGZvY3VzXyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL21peGlucy9sb2NhbGUiCgoKICB2YXIgbG9jYWxlXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CgogIHZhciBsb2NhbGVfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4obG9jYWxlXyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL2lucHV0IgoKCiAgdmFyIGlucHV0XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOwoKICB2YXIgaW5wdXRfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oaW5wdXRfKTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC1kcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY4Mjg3NDgmCgoKICB2YXIgc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY4Mjg3NDhfcmVuZGVyID0gZnVuY3Rpb24gc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY4Mjg3NDhfcmVuZGVyKCkgewogICAgdmFyIF92bSA9IHRoaXM7CgogICAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50OwoKICAgIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaDsKCiAgICByZXR1cm4gX2MoImRpdiIsIHsKICAgICAgc3RhdGljQ2xhc3M6ICJlbC1zZWxlY3QtZHJvcGRvd24gZWwtcG9wcGVyIiwKICAgICAgY2xhc3M6IFt7CiAgICAgICAgImlzLW11bHRpcGxlIjogX3ZtLiRwYXJlbnQubXVsdGlwbGUKICAgICAgfSwgX3ZtLnBvcHBlckNsYXNzXSwKICAgICAgc3R5bGU6IHsKICAgICAgICBtaW5XaWR0aDogX3ZtLm1pbldpZHRoCiAgICAgIH0KICAgIH0sIFtfdm0uX3QoImRlZmF1bHQiKV0sIDIpOwogIH07CgogIHZhciBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjgyODc0OF9zdGF0aWNSZW5kZXJGbnMgPSBbXTsKICBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjgyODc0OF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWU7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QtZHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2ODI4NzQ4JgogIC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL3V0aWxzL3Z1ZS1wb3BwZXIiCgogIHZhciB2dWVfcG9wcGVyXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CgogIHZhciB2dWVfcG9wcGVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHZ1ZV9wb3BwZXJfKTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QtZHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJgogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwoKICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgoKICB2YXIgc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gewogICAgbmFtZTogJ0VsU2VsZWN0RHJvcGRvd24nLAogICAgY29tcG9uZW50TmFtZTogJ0VsU2VsZWN0RHJvcGRvd24nLAogICAgbWl4aW5zOiBbdnVlX3BvcHBlcl9kZWZhdWx0LmFdLAogICAgcHJvcHM6IHsKICAgICAgcGxhY2VtZW50OiB7CiAgICAgICAgZGVmYXVsdDogJ2JvdHRvbS1zdGFydCcKICAgICAgfSwKICAgICAgYm91bmRhcmllc1BhZGRpbmc6IHsKICAgICAgICBkZWZhdWx0OiAwCiAgICAgIH0sCiAgICAgIHBvcHBlck9wdGlvbnM6IHsKICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGdwdUFjY2VsZXJhdGlvbjogZmFsc2UKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICB9LAogICAgICB2aXNpYmxlQXJyb3c6IHsKICAgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgIH0sCiAgICAgIGFwcGVuZFRvQm9keTogewogICAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgICAgZGVmYXVsdDogdHJ1ZQogICAgICB9CiAgICB9LAogICAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBtaW5XaWR0aDogJycKICAgICAgfTsKICAgIH0sCiAgICBjb21wdXRlZDogewogICAgICBwb3BwZXJDbGFzczogZnVuY3Rpb24gcG9wcGVyQ2xhc3MoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5wb3BwZXJDbGFzczsKICAgICAgfQogICAgfSwKICAgIHdhdGNoOiB7CiAgICAgICckcGFyZW50LmlucHV0V2lkdGgnOiBmdW5jdGlvbiAkcGFyZW50SW5wdXRXaWR0aCgpIHsKICAgICAgICB0aGlzLm1pbldpZHRoID0gdGhpcy4kcGFyZW50LiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArICdweCc7CiAgICAgIH0KICAgIH0sCiAgICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgdGhpcy5yZWZlcmVuY2VFbG0gPSB0aGlzLiRwYXJlbnQuJHJlZnMucmVmZXJlbmNlLiRlbDsKICAgICAgdGhpcy4kcGFyZW50LnBvcHBlckVsbSA9IHRoaXMucG9wcGVyRWxtID0gdGhpcy4kZWw7CiAgICAgIHRoaXMuJG9uKCd1cGRhdGVQb3BwZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKF90aGlzLiRwYXJlbnQudmlzaWJsZSkgX3RoaXMudXBkYXRlUG9wcGVyKCk7CiAgICAgIH0pOwogICAgICB0aGlzLiRvbignZGVzdHJveVBvcHBlcicsIHRoaXMuZGVzdHJveVBvcHBlcik7CiAgICB9CiAgfTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC1kcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmCgogIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCiAgdmFyIHNyY19zZWxlY3RfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc187IC8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzCgogIHZhciBjb21wb25lbnROb3JtYWxpemVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC1kcm9wZG93bi52dWUKCiAgLyogbm9ybWFsaXplIGNvbXBvbmVudCAqLwoKCiAgdmFyIGNvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyWyJhIgogIC8qIGRlZmF1bHQgKi8KICBdKShzcmNfc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLCBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjgyODc0OF9yZW5kZXIsIHNlbGVjdF9kcm9wZG93bnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2ODI4NzQ4X3N0YXRpY1JlbmRlckZucywgZmFsc2UsIG51bGwsIG51bGwsIG51bGwpOwogIC8qIGhvdCByZWxvYWQgKi8KCiAgaWYgKGZhbHNlKSB7CiAgICB2YXIgYXBpOwogIH0KCiAgY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gInBhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LWRyb3Bkb3duLnZ1ZSI7CiAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKICB2YXIgc2VsZWN0X2Ryb3Bkb3duID0gY29tcG9uZW50LmV4cG9ydHM7IC8vIEVYVEVSTkFMIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWUgKyA0IG1vZHVsZXMKCiAgdmFyIHNyY19vcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTsgLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCAiZWxlbWVudC11aS9saWIvdGFnIgoKCiAgdmFyIHRhZ18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTsKCiAgdmFyIHRhZ19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubih0YWdfKTsgLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCAiZWxlbWVudC11aS9saWIvc2Nyb2xsYmFyIgoKCiAgdmFyIHNjcm9sbGJhcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKCiAgdmFyIHNjcm9sbGJhcl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihzY3JvbGxiYXJfKTsgLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCAidGhyb3R0bGUtZGVib3VuY2UvZGVib3VuY2UiCgoKICB2YXIgZGVib3VuY2VfID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7CgogIHZhciBkZWJvdW5jZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihkZWJvdW5jZV8pOyAvLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsICJlbGVtZW50LXVpL2xpYi91dGlscy9jbGlja291dHNpZGUiCgoKICB2YXIgY2xpY2tvdXRzaWRlXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpOwoKICB2YXIgY2xpY2tvdXRzaWRlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNsaWNrb3V0c2lkZV8pOyAvLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsICJlbGVtZW50LXVpL2xpYi91dGlscy9yZXNpemUtZXZlbnQiCgoKICB2YXIgcmVzaXplX2V2ZW50XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOyAvLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsICJlbGVtZW50LXVpL2xpYi9sb2NhbGUiCgoKICB2YXIgbGliX2xvY2FsZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTsgLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCAiZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsLWludG8tdmlldyIKCgogIHZhciBzY3JvbGxfaW50b192aWV3XyA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpOwoKICB2YXIgc2Nyb2xsX2ludG9fdmlld19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihzY3JvbGxfaW50b192aWV3Xyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwiCgoKICB2YXIgdXRpbF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NlbGVjdC9zcmMvbmF2aWdhdGlvbi1taXhpbi5qcwoKICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgoKICB2YXIgbmF2aWdhdGlvbl9taXhpbiA9IHsKICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgaG92ZXJPcHRpb246IC0xCiAgICAgIH07CiAgICB9LAogICAgY29tcHV0ZWQ6IHsKICAgICAgb3B0aW9uc0FsbERpc2FibGVkOiBmdW5jdGlvbiBvcHRpb25zQWxsRGlzYWJsZWQoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKG9wdGlvbikgewogICAgICAgICAgcmV0dXJuIG9wdGlvbi52aXNpYmxlOwogICAgICAgIH0pLmV2ZXJ5KGZ1bmN0aW9uIChvcHRpb24pIHsKICAgICAgICAgIHJldHVybiBvcHRpb24uZGlzYWJsZWQ7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICB3YXRjaDogewogICAgICBob3ZlckluZGV4OiBmdW5jdGlvbiBob3ZlckluZGV4KHZhbCkgewogICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiB2YWwgPiAtMSkgewogICAgICAgICAgdGhpcy5ob3Zlck9wdGlvbiA9IHRoaXMub3B0aW9uc1t2YWxdIHx8IHt9OwogICAgICAgIH0KCiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKG9wdGlvbikgewogICAgICAgICAgb3B0aW9uLmhvdmVyID0gX3RoaXMuaG92ZXJPcHRpb24gPT09IG9wdGlvbjsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIG1ldGhvZHM6IHsKICAgICAgbmF2aWdhdGVPcHRpb25zOiBmdW5jdGlvbiBuYXZpZ2F0ZU9wdGlvbnMoZGlyZWN0aW9uKSB7CiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7CiAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDAgfHwgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9PT0gMCkgcmV0dXJuOwoKICAgICAgICBpZiAoIXRoaXMub3B0aW9uc0FsbERpc2FibGVkKSB7CiAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnbmV4dCcpIHsKICAgICAgICAgICAgdGhpcy5ob3ZlckluZGV4Kys7CgogICAgICAgICAgICBpZiAodGhpcy5ob3ZlckluZGV4ID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgdGhpcy5ob3ZlckluZGV4ID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdwcmV2JykgewogICAgICAgICAgICB0aGlzLmhvdmVySW5kZXgtLTsKCiAgICAgICAgICAgIGlmICh0aGlzLmhvdmVySW5kZXggPCAwKSB7CiAgICAgICAgICAgICAgdGhpcy5ob3ZlckluZGV4ID0gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgb3B0aW9uID0gdGhpcy5vcHRpb25zW3RoaXMuaG92ZXJJbmRleF07CgogICAgICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBvcHRpb24uZ3JvdXBEaXNhYmxlZCA9PT0gdHJ1ZSB8fCAhb3B0aW9uLnZpc2libGUpIHsKICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZU9wdGlvbnMoZGlyZWN0aW9uKTsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiBfdGhpczIuc2Nyb2xsVG9PcHRpb24oX3RoaXMyLmhvdmVyT3B0aW9uKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL3V0aWxzL3NoYXJlZCIKCiAgdmFyIHNoYXJlZF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJgogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwogIC8vCiAgLy8KICAvLwoKICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgoKICB2YXIgc2VsZWN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gewogICAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmEsIGxvY2FsZV9kZWZhdWx0LmEsIGZvY3VzX2RlZmF1bHQoKSgncmVmZXJlbmNlJyksIG5hdmlnYXRpb25fbWl4aW5dLAogICAgbmFtZTogJ0VsU2VsZWN0JywKICAgIGNvbXBvbmVudE5hbWU6ICdFbFNlbGVjdCcsCiAgICBpbmplY3Q6IHsKICAgICAgZWxGb3JtOiB7CiAgICAgICAgZGVmYXVsdDogJycKICAgICAgfSwKICAgICAgZWxGb3JtSXRlbTogewogICAgICAgIGRlZmF1bHQ6ICcnCiAgICAgIH0KICAgIH0sCiAgICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkgewogICAgICByZXR1cm4gewogICAgICAgICdzZWxlY3QnOiB0aGlzCiAgICAgIH07CiAgICB9LAogICAgY29tcHV0ZWQ6IHsKICAgICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7CiAgICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplOwogICAgICB9LAogICAgICByZWFkb25seTogZnVuY3Rpb24gcmVhZG9ubHkoKSB7CiAgICAgICAgcmV0dXJuICF0aGlzLmZpbHRlcmFibGUgfHwgdGhpcy5tdWx0aXBsZSB8fCAhT2JqZWN0KHV0aWxfWyJpc0lFIl0pKCkgJiYgIU9iamVjdCh1dGlsX1siaXNFZGdlIl0pKCkgJiYgIXRoaXMudmlzaWJsZTsKICAgICAgfSwKICAgICAgc2hvd0Nsb3NlOiBmdW5jdGlvbiBzaG93Q2xvc2UoKSB7CiAgICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwIDogdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gJyc7CiAgICAgICAgdmFyIGNyaXRlcmlhID0gdGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuc2VsZWN0RGlzYWJsZWQgJiYgdGhpcy5pbnB1dEhvdmVyaW5nICYmIGhhc1ZhbHVlOwogICAgICAgIHJldHVybiBjcml0ZXJpYTsKICAgICAgfSwKICAgICAgaWNvbkNsYXNzOiBmdW5jdGlvbiBpY29uQ2xhc3MoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3RlICYmIHRoaXMuZmlsdGVyYWJsZSA/ICcnIDogdGhpcy52aXNpYmxlID8gJ2Fycm93LXVwIGlzLXJldmVyc2UnIDogJ2Fycm93LXVwJzsKICAgICAgfSwKICAgICAgZGVib3VuY2U6IGZ1bmN0aW9uIGRlYm91bmNlKCkgewogICAgICAgIHJldHVybiB0aGlzLnJlbW90ZSA/IDMwMCA6IDA7CiAgICAgIH0sCiAgICAgIGVtcHR5VGV4dDogZnVuY3Rpb24gZW1wdHlUZXh0KCkgewogICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmdUZXh0IHx8IHRoaXMudCgnZWwuc2VsZWN0LmxvYWRpbmcnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoaXMucmVtb3RlICYmIHRoaXMucXVlcnkgPT09ICcnICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTsKCiAgICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlICYmIHRoaXMucXVlcnkgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5ub01hdGNoVGV4dCB8fCB0aGlzLnQoJ2VsLnNlbGVjdC5ub01hdGNoJyk7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9EYXRhVGV4dCB8fCB0aGlzLnQoJ2VsLnNlbGVjdC5ub0RhdGEnKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgICB9LAogICAgICBzaG93TmV3T3B0aW9uOiBmdW5jdGlvbiBzaG93TmV3T3B0aW9uKCkgewogICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICAgIHZhciBoYXNFeGlzdGluZ09wdGlvbiA9IHRoaXMub3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKG9wdGlvbikgewogICAgICAgICAgcmV0dXJuICFvcHRpb24uY3JlYXRlZDsKICAgICAgICB9KS5zb21lKGZ1bmN0aW9uIChvcHRpb24pIHsKICAgICAgICAgIHJldHVybiBvcHRpb24uY3VycmVudExhYmVsID09PSBfdGhpcy5xdWVyeTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJhYmxlICYmIHRoaXMuYWxsb3dDcmVhdGUgJiYgdGhpcy5xdWVyeSAhPT0gJycgJiYgIWhhc0V4aXN0aW5nT3B0aW9uOwogICAgICB9LAogICAgICBzZWxlY3RTaXplOiBmdW5jdGlvbiBzZWxlY3RTaXplKCkgewogICAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7CiAgICAgIH0sCiAgICAgIHNlbGVjdERpc2FibGVkOiBmdW5jdGlvbiBzZWxlY3REaXNhYmxlZCgpIHsKICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkOwogICAgICB9LAogICAgICBjb2xsYXBzZVRhZ1NpemU6IGZ1bmN0aW9uIGNvbGxhcHNlVGFnU2l6ZSgpIHsKICAgICAgICByZXR1cm4gWydzbWFsbCcsICdtaW5pJ10uaW5kZXhPZih0aGlzLnNlbGVjdFNpemUpID4gLTEgPyAnbWluaScgOiAnc21hbGwnOwogICAgICB9CiAgICB9LAogICAgY29tcG9uZW50czogewogICAgICBFbElucHV0OiBpbnB1dF9kZWZhdWx0LmEsCiAgICAgIEVsU2VsZWN0TWVudTogc2VsZWN0X2Ryb3Bkb3duLAogICAgICBFbE9wdGlvbjogc3JjX29wdGlvblsiYSIKICAgICAgLyogZGVmYXVsdCAqLwogICAgICBdLAogICAgICBFbFRhZzogdGFnX2RlZmF1bHQuYSwKICAgICAgRWxTY3JvbGxiYXI6IHNjcm9sbGJhcl9kZWZhdWx0LmEKICAgIH0sCiAgICBkaXJlY3RpdmVzOiB7CiAgICAgIENsaWNrb3V0c2lkZTogY2xpY2tvdXRzaWRlX2RlZmF1bHQuYQogICAgfSwKICAgIHByb3BzOiB7CiAgICAgIG5hbWU6IFN0cmluZywKICAgICAgaWQ6IFN0cmluZywKICAgICAgdmFsdWU6IHsKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICB9LAogICAgICBhdXRvY29tcGxldGU6IHsKICAgICAgICB0eXBlOiBTdHJpbmcsCiAgICAgICAgZGVmYXVsdDogJ29mZicKICAgICAgfSwKCiAgICAgIC8qKiBARGVwcmVjYXRlZCBpbiBuZXh0IG1ham9yIHZlcnNpb24gKi8KICAgICAgYXV0b0NvbXBsZXRlOiB7CiAgICAgICAgdHlwZTogU3RyaW5nLAogICAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkgewogICAgICAgICAgZmFsc2UgJiYgZmFsc2U7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGF1dG9tYXRpY0Ryb3Bkb3duOiBCb29sZWFuLAogICAgICBzaXplOiBTdHJpbmcsCiAgICAgIGRpc2FibGVkOiBCb29sZWFuLAogICAgICBjbGVhcmFibGU6IEJvb2xlYW4sCiAgICAgIGZpbHRlcmFibGU6IEJvb2xlYW4sCiAgICAgIGFsbG93Q3JlYXRlOiBCb29sZWFuLAogICAgICBsb2FkaW5nOiBCb29sZWFuLAogICAgICBwb3BwZXJDbGFzczogU3RyaW5nLAogICAgICByZW1vdGU6IEJvb2xlYW4sCiAgICAgIGxvYWRpbmdUZXh0OiBTdHJpbmcsCiAgICAgIG5vTWF0Y2hUZXh0OiBTdHJpbmcsCiAgICAgIG5vRGF0YVRleHQ6IFN0cmluZywKICAgICAgcmVtb3RlTWV0aG9kOiBGdW5jdGlvbiwKICAgICAgZmlsdGVyTWV0aG9kOiBGdW5jdGlvbiwKICAgICAgbXVsdGlwbGU6IEJvb2xlYW4sCiAgICAgIG11bHRpcGxlTGltaXQ6IHsKICAgICAgICB0eXBlOiBOdW1iZXIsCiAgICAgICAgZGVmYXVsdDogMAogICAgICB9LAogICAgICBwbGFjZWhvbGRlcjogewogICAgICAgIHR5cGU6IFN0cmluZywKICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICAgIHJldHVybiBPYmplY3QobGliX2xvY2FsZV9bInQiXSkoJ2VsLnNlbGVjdC5wbGFjZWhvbGRlcicpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgZGVmYXVsdEZpcnN0T3B0aW9uOiBCb29sZWFuLAogICAgICByZXNlcnZlS2V5d29yZDogQm9vbGVhbiwKICAgICAgdmFsdWVLZXk6IHsKICAgICAgICB0eXBlOiBTdHJpbmcsCiAgICAgICAgZGVmYXVsdDogJ3ZhbHVlJwogICAgICB9LAogICAgICBjb2xsYXBzZVRhZ3M6IEJvb2xlYW4sCiAgICAgIHBvcHBlckFwcGVuZFRvQm9keTogewogICAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgICAgZGVmYXVsdDogdHJ1ZQogICAgICB9CiAgICB9LAogICAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBvcHRpb25zOiBbXSwKICAgICAgICBjYWNoZWRPcHRpb25zOiBbXSwKICAgICAgICBjcmVhdGVkTGFiZWw6IG51bGwsCiAgICAgICAgY3JlYXRlZFNlbGVjdGVkOiBmYWxzZSwKICAgICAgICBzZWxlY3RlZDogdGhpcy5tdWx0aXBsZSA/IFtdIDoge30sCiAgICAgICAgaW5wdXRMZW5ndGg6IDIwLAogICAgICAgIGlucHV0V2lkdGg6IDAsCiAgICAgICAgaW5pdGlhbElucHV0SGVpZ2h0OiAwLAogICAgICAgIGNhY2hlZFBsYWNlSG9sZGVyOiAnJywKICAgICAgICBvcHRpb25zQ291bnQ6IDAsCiAgICAgICAgZmlsdGVyZWRPcHRpb25zQ291bnQ6IDAsCiAgICAgICAgdmlzaWJsZTogZmFsc2UsCiAgICAgICAgc29mdEZvY3VzOiBmYWxzZSwKICAgICAgICBzZWxlY3RlZExhYmVsOiAnJywKICAgICAgICBob3ZlckluZGV4OiAtMSwKICAgICAgICBxdWVyeTogJycsCiAgICAgICAgcHJldmlvdXNRdWVyeTogbnVsbCwKICAgICAgICBpbnB1dEhvdmVyaW5nOiBmYWxzZSwKICAgICAgICBjdXJyZW50UGxhY2Vob2xkZXI6ICcnLAogICAgICAgIG1lbnVWaXNpYmxlT25Gb2N1czogZmFsc2UsCiAgICAgICAgaXNPbkNvbXBvc2l0aW9uOiBmYWxzZSwKICAgICAgICBpc1NpbGVudEJsdXI6IGZhbHNlCiAgICAgIH07CiAgICB9LAogICAgd2F0Y2g6IHsKICAgICAgc2VsZWN0RGlzYWJsZWQ6IGZ1bmN0aW9uIHNlbGVjdERpc2FibGVkKCkgewogICAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczIucmVzZXRJbnB1dEhlaWdodCgpOwogICAgICAgIH0pOwogICAgICB9LAogICAgICBwbGFjZWhvbGRlcjogZnVuY3Rpb24gcGxhY2Vob2xkZXIodmFsKSB7CiAgICAgICAgdGhpcy5jYWNoZWRQbGFjZUhvbGRlciA9IHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID0gdmFsOwogICAgICB9LAogICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsLCBvbGRWYWwpIHsKICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkgewogICAgICAgICAgdGhpcy5yZXNldElucHV0SGVpZ2h0KCk7CgogICAgICAgICAgaWYgKHZhbCAmJiB2YWwubGVuZ3RoID4gMCB8fCB0aGlzLiRyZWZzLmlucHV0ICYmIHRoaXMucXVlcnkgIT09ICcnKSB7CiAgICAgICAgICAgIHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID0gJyc7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMuY2FjaGVkUGxhY2VIb2xkZXI7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiAhdGhpcy5yZXNlcnZlS2V5d29yZCkgewogICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7CiAgICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcnlDaGFuZ2UodGhpcy5xdWVyeSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLnNldFNlbGVjdGVkKCk7CgogICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUgJiYgIXRoaXMubXVsdGlwbGUpIHsKICAgICAgICAgIHRoaXMuaW5wdXRMZW5ndGggPSAyMDsKICAgICAgICB9CgogICAgICAgIGlmICghT2JqZWN0KHV0aWxfWyJ2YWx1ZUVxdWFscyJdKSh2YWwsIG9sZFZhbCkpIHsKICAgICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsRm9ybUl0ZW0nLCAnZWwuZm9ybS5jaGFuZ2UnLCB2YWwpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgdmlzaWJsZTogZnVuY3Rpb24gdmlzaWJsZSh2YWwpIHsKICAgICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgICAgaWYgKCF2YWwpIHsKICAgICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ2Rlc3Ryb3lQb3BwZXInKTsKCiAgICAgICAgICBpZiAodGhpcy4kcmVmcy5pbnB1dCkgewogICAgICAgICAgICB0aGlzLiRyZWZzLmlucHV0LmJsdXIoKTsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7CiAgICAgICAgICB0aGlzLnByZXZpb3VzUXVlcnkgPSBudWxsOwogICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gJyc7CiAgICAgICAgICB0aGlzLmlucHV0TGVuZ3RoID0gMjA7CiAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlT25Gb2N1cyA9IGZhbHNlOwogICAgICAgICAgdGhpcy5yZXNldEhvdmVySW5kZXgoKTsKICAgICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKF90aGlzMy4kcmVmcy5pbnB1dCAmJiBfdGhpczMuJHJlZnMuaW5wdXQudmFsdWUgPT09ICcnICYmIF90aGlzMy5zZWxlY3RlZC5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICBfdGhpczMuY3VycmVudFBsYWNlaG9sZGVyID0gX3RoaXMzLmNhY2hlZFBsYWNlSG9sZGVyOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKCiAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHsKICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlICYmIHRoaXMuYWxsb3dDcmVhdGUgJiYgdGhpcy5jcmVhdGVkU2VsZWN0ZWQgJiYgdGhpcy5jcmVhdGVkTGFiZWwpIHsKICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9IHRoaXMuY3JlYXRlZExhYmVsOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWwgPSB0aGlzLnNlbGVjdGVkLmN1cnJlbnRMYWJlbDsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUpIHRoaXMucXVlcnkgPSB0aGlzLnNlbGVjdGVkTGFiZWw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUpIHsKICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMuY2FjaGVkUGxhY2VIb2xkZXI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsU2VsZWN0RHJvcGRvd24nLCAndXBkYXRlUG9wcGVyJyk7CgogICAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSkgewogICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5yZW1vdGUgPyAnJyA6IHRoaXMuc2VsZWN0ZWRMYWJlbDsKICAgICAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUNoYW5nZSh0aGlzLnF1ZXJ5KTsKCiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7CiAgICAgICAgICAgICAgdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmICghdGhpcy5yZW1vdGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbicsICdxdWVyeUNoYW5nZScsICcnKTsKICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbkdyb3VwJywgJ3F1ZXJ5Q2hhbmdlJyk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZExhYmVsKSB7CiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0ZWRMYWJlbDsKICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9ICcnOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhpcy4kZW1pdCgndmlzaWJsZS1jaGFuZ2UnLCB2YWwpOwogICAgICB9LAogICAgICBvcHRpb25zOiBmdW5jdGlvbiBvcHRpb25zKCkgewogICAgICAgIHZhciBfdGhpczQgPSB0aGlzOwoKICAgICAgICBpZiAodGhpcy4kaXNTZXJ2ZXIpIHJldHVybjsKICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczQuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ3VwZGF0ZVBvcHBlcicpOwogICAgICAgIH0pOwoKICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkgewogICAgICAgICAgdGhpcy5yZXNldElucHV0SGVpZ2h0KCk7CiAgICAgICAgfQoKICAgICAgICB2YXIgaW5wdXRzID0gdGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQnKTsKCiAgICAgICAgaWYgKFtdLmluZGV4T2YuY2FsbChpbnB1dHMsIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpID09PSAtMSkgewogICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEZpcnN0T3B0aW9uICYmICh0aGlzLmZpbHRlcmFibGUgfHwgdGhpcy5yZW1vdGUpICYmIHRoaXMuZmlsdGVyZWRPcHRpb25zQ291bnQpIHsKICAgICAgICAgIHRoaXMuY2hlY2tEZWZhdWx0Rmlyc3RPcHRpb24oKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBtZXRob2RzOiB7CiAgICAgIGhhbmRsZUNvbXBvc2l0aW9uOiBmdW5jdGlvbiBoYW5kbGVDb21wb3NpdGlvbihldmVudCkgewogICAgICAgIHZhciBfdGhpczUgPSB0aGlzOwoKICAgICAgICB2YXIgdGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTsKCiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb21wb3NpdGlvbmVuZCcpIHsKICAgICAgICAgIHRoaXMuaXNPbkNvbXBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgICAgICByZXR1cm4gX3RoaXM1LmhhbmRsZVF1ZXJ5Q2hhbmdlKHRleHQpOwogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBsYXN0Q2hhcmFjdGVyID0gdGV4dFt0ZXh0Lmxlbmd0aCAtIDFdIHx8ICcnOwogICAgICAgICAgdGhpcy5pc09uQ29tcG9zaXRpb24gPSAhT2JqZWN0KHNoYXJlZF9bImlzS29yZWFuIl0pKGxhc3RDaGFyYWN0ZXIpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgaGFuZGxlUXVlcnlDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVF1ZXJ5Q2hhbmdlKHZhbCkgewogICAgICAgIHZhciBfdGhpczYgPSB0aGlzOwoKICAgICAgICBpZiAodGhpcy5wcmV2aW91c1F1ZXJ5ID09PSB2YWwgfHwgdGhpcy5pc09uQ29tcG9zaXRpb24pIHJldHVybjsKCiAgICAgICAgaWYgKHRoaXMucHJldmlvdXNRdWVyeSA9PT0gbnVsbCAmJiAodHlwZW9mIHRoaXMuZmlsdGVyTWV0aG9kID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLnJlbW90ZU1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykpIHsKICAgICAgICAgIHRoaXMucHJldmlvdXNRdWVyeSA9IHZhbDsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRoaXMucHJldmlvdXNRdWVyeSA9IHZhbDsKICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAoX3RoaXM2LnZpc2libGUpIF90aGlzNi5icm9hZGNhc3QoJ0VsU2VsZWN0RHJvcGRvd24nLCAndXBkYXRlUG9wcGVyJyk7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5ob3ZlckluZGV4ID0gLTE7CgogICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZmlsdGVyYWJsZSkgewogICAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgbGVuZ3RoID0gX3RoaXM2LiRyZWZzLmlucHV0LnZhbHVlLmxlbmd0aCAqIDE1ICsgMjA7CiAgICAgICAgICAgIF90aGlzNi5pbnB1dExlbmd0aCA9IF90aGlzNi5jb2xsYXBzZVRhZ3MgPyBNYXRoLm1pbig1MCwgbGVuZ3RoKSA6IGxlbmd0aDsKCiAgICAgICAgICAgIF90aGlzNi5tYW5hZ2VQbGFjZWhvbGRlcigpOwoKICAgICAgICAgICAgX3RoaXM2LnJlc2V0SW5wdXRIZWlnaHQoKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMucmVtb3RlICYmIHR5cGVvZiB0aGlzLnJlbW90ZU1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgdGhpcy5ob3ZlckluZGV4ID0gLTE7CiAgICAgICAgICB0aGlzLnJlbW90ZU1ldGhvZCh2YWwpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZmlsdGVyTWV0aG9kID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGlzLmZpbHRlck1ldGhvZCh2YWwpOwogICAgICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsT3B0aW9uR3JvdXAnLCAncXVlcnlDaGFuZ2UnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9IHRoaXMub3B0aW9uc0NvdW50OwogICAgICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsT3B0aW9uJywgJ3F1ZXJ5Q2hhbmdlJywgdmFsKTsKICAgICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbkdyb3VwJywgJ3F1ZXJ5Q2hhbmdlJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAodGhpcy5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgKHRoaXMuZmlsdGVyYWJsZSB8fCB0aGlzLnJlbW90ZSkgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCkgewogICAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRGaXJzdE9wdGlvbigpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgc2Nyb2xsVG9PcHRpb246IGZ1bmN0aW9uIHNjcm9sbFRvT3B0aW9uKG9wdGlvbikgewogICAgICAgIHZhciB0YXJnZXQgPSBBcnJheS5pc0FycmF5KG9wdGlvbikgJiYgb3B0aW9uWzBdID8gb3B0aW9uWzBdLiRlbCA6IG9wdGlvbi4kZWw7CgogICAgICAgIGlmICh0aGlzLiRyZWZzLnBvcHBlciAmJiB0YXJnZXQpIHsKICAgICAgICAgIHZhciBtZW51ID0gdGhpcy4kcmVmcy5wb3BwZXIuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1zZWxlY3QtZHJvcGRvd25fX3dyYXAnKTsKICAgICAgICAgIHNjcm9sbF9pbnRvX3ZpZXdfZGVmYXVsdCgpKG1lbnUsIHRhcmdldCk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLiRyZWZzLnNjcm9sbGJhciAmJiB0aGlzLiRyZWZzLnNjcm9sbGJhci5oYW5kbGVTY3JvbGwoKTsKICAgICAgfSwKICAgICAgaGFuZGxlTWVudUVudGVyOiBmdW5jdGlvbiBoYW5kbGVNZW51RW50ZXIoKSB7CiAgICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CgogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiBfdGhpczcuc2Nyb2xsVG9PcHRpb24oX3RoaXM3LnNlbGVjdGVkKTsKICAgICAgICB9KTsKICAgICAgfSwKICAgICAgZW1pdENoYW5nZTogZnVuY3Rpb24gZW1pdENoYW5nZSh2YWwpIHsKICAgICAgICBpZiAoIU9iamVjdCh1dGlsX1sidmFsdWVFcXVhbHMiXSkodGhpcy52YWx1ZSwgdmFsKSkgewogICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGdldE9wdGlvbjogZnVuY3Rpb24gZ2V0T3B0aW9uKHZhbHVlKSB7CiAgICAgICAgdmFyIG9wdGlvbiA9IHZvaWQgMDsKICAgICAgICB2YXIgaXNPYmplY3QgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnRvTG93ZXJDYXNlKCkgPT09ICdbb2JqZWN0IG9iamVjdF0nOwogICAgICAgIHZhciBpc051bGwgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnRvTG93ZXJDYXNlKCkgPT09ICdbb2JqZWN0IG51bGxdJzsKICAgICAgICB2YXIgaXNVbmRlZmluZWQgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnRvTG93ZXJDYXNlKCkgPT09ICdbb2JqZWN0IHVuZGVmaW5lZF0nOwoKICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5jYWNoZWRPcHRpb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICB2YXIgY2FjaGVkT3B0aW9uID0gdGhpcy5jYWNoZWRPcHRpb25zW2ldOwogICAgICAgICAgdmFyIGlzRXF1YWwgPSBpc09iamVjdCA/IE9iamVjdCh1dGlsX1siZ2V0VmFsdWVCeVBhdGgiXSkoY2FjaGVkT3B0aW9uLnZhbHVlLCB0aGlzLnZhbHVlS2V5KSA9PT0gT2JqZWN0KHV0aWxfWyJnZXRWYWx1ZUJ5UGF0aCJdKSh2YWx1ZSwgdGhpcy52YWx1ZUtleSkgOiBjYWNoZWRPcHRpb24udmFsdWUgPT09IHZhbHVlOwoKICAgICAgICAgIGlmIChpc0VxdWFsKSB7CiAgICAgICAgICAgIG9wdGlvbiA9IGNhY2hlZE9wdGlvbjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAob3B0aW9uKSByZXR1cm4gb3B0aW9uOwogICAgICAgIHZhciBsYWJlbCA9ICFpc09iamVjdCAmJiAhaXNOdWxsICYmICFpc1VuZGVmaW5lZCA/IHZhbHVlIDogJyc7CiAgICAgICAgdmFyIG5ld09wdGlvbiA9IHsKICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKICAgICAgICAgIGN1cnJlbnRMYWJlbDogbGFiZWwKICAgICAgICB9OwoKICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkgewogICAgICAgICAgbmV3T3B0aW9uLmhpdFN0YXRlID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3T3B0aW9uOwogICAgICB9LAogICAgICBzZXRTZWxlY3RlZDogZnVuY3Rpb24gc2V0U2VsZWN0ZWQoKSB7CiAgICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CgogICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkgewogICAgICAgICAgdmFyIG9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uKHRoaXMudmFsdWUpOwoKICAgICAgICAgIGlmIChvcHRpb24uY3JlYXRlZCkgewogICAgICAgICAgICB0aGlzLmNyZWF0ZWRMYWJlbCA9IG9wdGlvbi5jdXJyZW50TGFiZWw7CiAgICAgICAgICAgIHRoaXMuY3JlYXRlZFNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuY3JlYXRlZFNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gb3B0aW9uLmN1cnJlbnRMYWJlbDsKICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBvcHRpb247CiAgICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlKSB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWxlY3RlZExhYmVsOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwoKICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkgewogICAgICAgICAgdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICByZXN1bHQucHVzaChfdGhpczguZ2V0T3B0aW9uKHZhbHVlKSk7CiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIHRoaXMuc2VsZWN0ZWQgPSByZXN1bHQ7CiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXM4LnJlc2V0SW5wdXRIZWlnaHQoKTsKICAgICAgICB9KTsKICAgICAgfSwKICAgICAgaGFuZGxlRm9jdXM6IGZ1bmN0aW9uIGhhbmRsZUZvY3VzKGV2ZW50KSB7CiAgICAgICAgaWYgKCF0aGlzLnNvZnRGb2N1cykgewogICAgICAgICAgaWYgKHRoaXMuYXV0b21hdGljRHJvcGRvd24gfHwgdGhpcy5maWx0ZXJhYmxlKSB7CiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7CgogICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlKSB7CiAgICAgICAgICAgICAgdGhpcy5tZW51VmlzaWJsZU9uRm9jdXMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy4kZW1pdCgnZm9jdXMnLCBldmVudCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuc29mdEZvY3VzID0gZmFsc2U7CiAgICAgICAgfQogICAgICB9LAogICAgICBibHVyOiBmdW5jdGlvbiBibHVyKCkgewogICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgICAgIHRoaXMuJHJlZnMucmVmZXJlbmNlLmJsdXIoKTsKICAgICAgfSwKICAgICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cihldmVudCkgewogICAgICAgIHZhciBfdGhpczkgPSB0aGlzOwoKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmIChfdGhpczkuaXNTaWxlbnRCbHVyKSB7CiAgICAgICAgICAgIF90aGlzOS5pc1NpbGVudEJsdXIgPSBmYWxzZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF90aGlzOS4kZW1pdCgnYmx1cicsIGV2ZW50KTsKICAgICAgICAgIH0KICAgICAgICB9LCA1MCk7CiAgICAgICAgdGhpcy5zb2Z0Rm9jdXMgPSBmYWxzZTsKICAgICAgfSwKICAgICAgaGFuZGxlQ2xlYXJDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xlYXJDbGljayhldmVudCkgewogICAgICAgIHRoaXMuZGVsZXRlU2VsZWN0ZWQoZXZlbnQpOwogICAgICB9LAogICAgICBkb0Rlc3Ryb3k6IGZ1bmN0aW9uIGRvRGVzdHJveSgpIHsKICAgICAgICB0aGlzLiRyZWZzLnBvcHBlciAmJiB0aGlzLiRyZWZzLnBvcHBlci5kb0Rlc3Ryb3koKTsKICAgICAgfSwKICAgICAgaGFuZGxlQ2xvc2U6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlKCkgewogICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgICB9LAogICAgICB0b2dnbGVMYXN0T3B0aW9uSGl0U3RhdGU6IGZ1bmN0aW9uIHRvZ2dsZUxhc3RPcHRpb25IaXRTdGF0ZShoaXQpIHsKICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZCkpIHJldHVybjsKICAgICAgICB2YXIgb3B0aW9uID0gdGhpcy5zZWxlY3RlZFt0aGlzLnNlbGVjdGVkLmxlbmd0aCAtIDFdOwogICAgICAgIGlmICghb3B0aW9uKSByZXR1cm47CgogICAgICAgIGlmIChoaXQgPT09IHRydWUgfHwgaGl0ID09PSBmYWxzZSkgewogICAgICAgICAgb3B0aW9uLmhpdFN0YXRlID0gaGl0OwogICAgICAgICAgcmV0dXJuIGhpdDsKICAgICAgICB9CgogICAgICAgIG9wdGlvbi5oaXRTdGF0ZSA9ICFvcHRpb24uaGl0U3RhdGU7CiAgICAgICAgcmV0dXJuIG9wdGlvbi5oaXRTdGF0ZTsKICAgICAgfSwKICAgICAgZGVsZXRlUHJldlRhZzogZnVuY3Rpb24gZGVsZXRlUHJldlRhZyhlKSB7CiAgICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlLmxlbmd0aCA8PSAwICYmICF0aGlzLnRvZ2dsZUxhc3RPcHRpb25IaXRTdGF0ZSgpKSB7CiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLnNsaWNlKCk7CiAgICAgICAgICB2YWx1ZS5wb3AoKTsKICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpOwogICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIG1hbmFnZVBsYWNlaG9sZGVyOiBmdW5jdGlvbiBtYW5hZ2VQbGFjZWhvbGRlcigpIHsKICAgICAgICBpZiAodGhpcy5jdXJyZW50UGxhY2Vob2xkZXIgIT09ICcnKSB7CiAgICAgICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMuJHJlZnMuaW5wdXQudmFsdWUgPyAnJyA6IHRoaXMuY2FjaGVkUGxhY2VIb2xkZXI7CiAgICAgICAgfQogICAgICB9LAogICAgICByZXNldElucHV0U3RhdGU6IGZ1bmN0aW9uIHJlc2V0SW5wdXRTdGF0ZShlKSB7CiAgICAgICAgaWYgKGUua2V5Q29kZSAhPT0gOCkgdGhpcy50b2dnbGVMYXN0T3B0aW9uSGl0U3RhdGUoZmFsc2UpOwogICAgICAgIHRoaXMuaW5wdXRMZW5ndGggPSB0aGlzLiRyZWZzLmlucHV0LnZhbHVlLmxlbmd0aCAqIDE1ICsgMjA7CiAgICAgICAgdGhpcy5yZXNldElucHV0SGVpZ2h0KCk7CiAgICAgIH0sCiAgICAgIHJlc2V0SW5wdXRIZWlnaHQ6IGZ1bmN0aW9uIHJlc2V0SW5wdXRIZWlnaHQoKSB7CiAgICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwoKICAgICAgICBpZiAodGhpcy5jb2xsYXBzZVRhZ3MgJiYgIXRoaXMuZmlsdGVyYWJsZSkgcmV0dXJuOwogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmICghX3RoaXMxMC4kcmVmcy5yZWZlcmVuY2UpIHJldHVybjsKICAgICAgICAgIHZhciBpbnB1dENoaWxkTm9kZXMgPSBfdGhpczEwLiRyZWZzLnJlZmVyZW5jZS4kZWwuY2hpbGROb2RlczsKICAgICAgICAgIHZhciBpbnB1dCA9IFtdLmZpbHRlci5jYWxsKGlucHV0Q2hpbGROb2RlcywgZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgcmV0dXJuIGl0ZW0udGFnTmFtZSA9PT0gJ0lOUFVUJzsKICAgICAgICAgIH0pWzBdOwogICAgICAgICAgdmFyIHRhZ3MgPSBfdGhpczEwLiRyZWZzLnRhZ3M7CiAgICAgICAgICB2YXIgc2l6ZUluTWFwID0gX3RoaXMxMC5pbml0aWFsSW5wdXRIZWlnaHQgfHwgNDA7CiAgICAgICAgICBpbnB1dC5zdHlsZS5oZWlnaHQgPSBfdGhpczEwLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCA/IHNpemVJbk1hcCArICdweCcgOiBNYXRoLm1heCh0YWdzID8gdGFncy5jbGllbnRIZWlnaHQgKyAodGFncy5jbGllbnRIZWlnaHQgPiBzaXplSW5NYXAgPyA2IDogMCkgOiAwLCBzaXplSW5NYXApICsgJ3B4JzsKCiAgICAgICAgICBpZiAoX3RoaXMxMC52aXNpYmxlICYmIF90aGlzMTAuZW1wdHlUZXh0ICE9PSBmYWxzZSkgewogICAgICAgICAgICBfdGhpczEwLmJyb2FkY2FzdCgnRWxTZWxlY3REcm9wZG93bicsICd1cGRhdGVQb3BwZXInKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSwKICAgICAgcmVzZXRIb3ZlckluZGV4OiBmdW5jdGlvbiByZXNldEhvdmVySW5kZXgoKSB7CiAgICAgICAgdmFyIF90aGlzMTEgPSB0aGlzOwoKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmICghX3RoaXMxMS5tdWx0aXBsZSkgewogICAgICAgICAgICBfdGhpczExLmhvdmVySW5kZXggPSBfdGhpczExLm9wdGlvbnMuaW5kZXhPZihfdGhpczExLnNlbGVjdGVkKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChfdGhpczExLnNlbGVjdGVkLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICBfdGhpczExLmhvdmVySW5kZXggPSBNYXRoLm1pbi5hcHBseShudWxsLCBfdGhpczExLnNlbGVjdGVkLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMTEub3B0aW9ucy5pbmRleE9mKGl0ZW0pOwogICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfdGhpczExLmhvdmVySW5kZXggPSAtMTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sIDMwMCk7CiAgICAgIH0sCiAgICAgIGhhbmRsZU9wdGlvblNlbGVjdDogZnVuY3Rpb24gaGFuZGxlT3B0aW9uU2VsZWN0KG9wdGlvbiwgYnlDbGljaykgewogICAgICAgIHZhciBfdGhpczEyID0gdGhpczsKCiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHsKICAgICAgICAgIHZhciB2YWx1ZSA9ICh0aGlzLnZhbHVlIHx8IFtdKS5zbGljZSgpOwogICAgICAgICAgdmFyIG9wdGlvbkluZGV4ID0gdGhpcy5nZXRWYWx1ZUluZGV4KHZhbHVlLCBvcHRpb24udmFsdWUpOwoKICAgICAgICAgIGlmIChvcHRpb25JbmRleCA+IC0xKSB7CiAgICAgICAgICAgIHZhbHVlLnNwbGljZShvcHRpb25JbmRleCwgMSk7CiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGVMaW1pdCA8PSAwIHx8IHZhbHVlLmxlbmd0aCA8IHRoaXMubXVsdGlwbGVMaW1pdCkgewogICAgICAgICAgICB2YWx1ZS5wdXNoKG9wdGlvbi52YWx1ZSk7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7CiAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpOwoKICAgICAgICAgIGlmIChvcHRpb24uY3JlYXRlZCkgewogICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7CiAgICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcnlDaGFuZ2UoJycpOwogICAgICAgICAgICB0aGlzLmlucHV0TGVuZ3RoID0gMjA7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSkgdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG9wdGlvbi52YWx1ZSk7CiAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2Uob3B0aW9uLnZhbHVlKTsKICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5pc1NpbGVudEJsdXIgPSBieUNsaWNrOwogICAgICAgIHRoaXMuc2V0U29mdEZvY3VzKCk7CiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkgcmV0dXJuOwogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzMTIuc2Nyb2xsVG9PcHRpb24ob3B0aW9uKTsKICAgICAgICB9KTsKICAgICAgfSwKICAgICAgc2V0U29mdEZvY3VzOiBmdW5jdGlvbiBzZXRTb2Z0Rm9jdXMoKSB7CiAgICAgICAgdGhpcy5zb2Z0Rm9jdXMgPSB0cnVlOwogICAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHJlZnMuaW5wdXQgfHwgdGhpcy4kcmVmcy5yZWZlcmVuY2U7CgogICAgICAgIGlmIChpbnB1dCkgewogICAgICAgICAgaW5wdXQuZm9jdXMoKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGdldFZhbHVlSW5kZXg6IGZ1bmN0aW9uIGdldFZhbHVlSW5kZXgoKSB7CiAgICAgICAgdmFyIGFyciA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogW107CiAgICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzWzFdOwogICAgICAgIHZhciBpc09iamVjdCA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkudG9Mb3dlckNhc2UoKSA9PT0gJ1tvYmplY3Qgb2JqZWN0XSc7CgogICAgICAgIGlmICghaXNPYmplY3QpIHsKICAgICAgICAgIHJldHVybiBhcnIuaW5kZXhPZih2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciB2YWx1ZUtleSA9IHRoaXMudmFsdWVLZXk7CiAgICAgICAgICB2YXIgaW5kZXggPSAtMTsKICAgICAgICAgIGFyci5zb21lKGZ1bmN0aW9uIChpdGVtLCBpKSB7CiAgICAgICAgICAgIGlmIChPYmplY3QodXRpbF9bImdldFZhbHVlQnlQYXRoIl0pKGl0ZW0sIHZhbHVlS2V5KSA9PT0gT2JqZWN0KHV0aWxfWyJnZXRWYWx1ZUJ5UGF0aCJdKSh2YWx1ZSwgdmFsdWVLZXkpKSB7CiAgICAgICAgICAgICAgaW5kZXggPSBpOwogICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHRvZ2dsZU1lbnU6IGZ1bmN0aW9uIHRvZ2dsZU1lbnUoKSB7CiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdERpc2FibGVkKSB7CiAgICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZU9uRm9jdXMpIHsKICAgICAgICAgICAgdGhpcy5tZW51VmlzaWJsZU9uRm9jdXMgPSBmYWxzZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9ICF0aGlzLnZpc2libGU7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkgewogICAgICAgICAgICAodGhpcy4kcmVmcy5pbnB1dCB8fCB0aGlzLiRyZWZzLnJlZmVyZW5jZSkuZm9jdXMoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIHNlbGVjdE9wdGlvbjogZnVuY3Rpb24gc2VsZWN0T3B0aW9uKCkgewogICAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7CiAgICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdKSB7CiAgICAgICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0KHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIGRlbGV0ZVNlbGVjdGVkOiBmdW5jdGlvbiBkZWxldGVTZWxlY3RlZChldmVudCkgewogICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMubXVsdGlwbGUgPyBbXSA6ICcnOwogICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpOwogICAgICAgIHRoaXMuZW1pdENoYW5nZSh2YWx1ZSk7CiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgdGhpcy4kZW1pdCgnY2xlYXInKTsKICAgICAgfSwKICAgICAgZGVsZXRlVGFnOiBmdW5jdGlvbiBkZWxldGVUYWcoZXZlbnQsIHRhZykgewogICAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWQuaW5kZXhPZih0YWcpOwoKICAgICAgICBpZiAoaW5kZXggPiAtMSAmJiAhdGhpcy5zZWxlY3REaXNhYmxlZCkgewogICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZS5zbGljZSgpOwogICAgICAgICAgdmFsdWUuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpOwogICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKHZhbHVlKTsKICAgICAgICAgIHRoaXMuJGVtaXQoJ3JlbW92ZS10YWcnLCB0YWcudmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIH0sCiAgICAgIG9uSW5wdXRDaGFuZ2U6IGZ1bmN0aW9uIG9uSW5wdXRDaGFuZ2UoKSB7CiAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiB0aGlzLnF1ZXJ5ICE9PSB0aGlzLnNlbGVjdGVkTGFiZWwpIHsKICAgICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlbGVjdGVkTGFiZWw7CiAgICAgICAgICB0aGlzLmhhbmRsZVF1ZXJ5Q2hhbmdlKHRoaXMucXVlcnkpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgb25PcHRpb25EZXN0cm95OiBmdW5jdGlvbiBvbk9wdGlvbkRlc3Ryb3koaW5kZXgpIHsKICAgICAgICBpZiAoaW5kZXggPiAtMSkgewogICAgICAgICAgdGhpcy5vcHRpb25zQ291bnQtLTsKICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zQ291bnQtLTsKICAgICAgICAgIHRoaXMub3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgcmVzZXRJbnB1dFdpZHRoOiBmdW5jdGlvbiByZXNldElucHV0V2lkdGgoKSB7CiAgICAgICAgdGhpcy5pbnB1dFdpZHRoID0gdGhpcy4kcmVmcy5yZWZlcmVuY2UuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOwogICAgICB9LAogICAgICBoYW5kbGVSZXNpemU6IGZ1bmN0aW9uIGhhbmRsZVJlc2l6ZSgpIHsKICAgICAgICB0aGlzLnJlc2V0SW5wdXRXaWR0aCgpOwogICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB0aGlzLnJlc2V0SW5wdXRIZWlnaHQoKTsKICAgICAgfSwKICAgICAgY2hlY2tEZWZhdWx0Rmlyc3RPcHRpb246IGZ1bmN0aW9uIGNoZWNrRGVmYXVsdEZpcnN0T3B0aW9uKCkgewogICAgICAgIHRoaXMuaG92ZXJJbmRleCA9IC0xOyAvLyBoaWdobGlnaHQgdGhlIGNyZWF0ZWQgb3B0aW9uCgogICAgICAgIHZhciBoYXNDcmVhdGVkID0gZmFsc2U7CgogICAgICAgIGZvciAodmFyIGkgPSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNbaV0uY3JlYXRlZCkgewogICAgICAgICAgICBoYXNDcmVhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgdGhpcy5ob3ZlckluZGV4ID0gaTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaGFzQ3JlYXRlZCkgcmV0dXJuOwoKICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pICE9PSB0aGlzLm9wdGlvbnMubGVuZ3RoOyArK19pKSB7CiAgICAgICAgICB2YXIgb3B0aW9uID0gdGhpcy5vcHRpb25zW19pXTsKCiAgICAgICAgICBpZiAodGhpcy5xdWVyeSkgewogICAgICAgICAgICAvLyBoaWdobGlnaHQgZmlyc3Qgb3B0aW9ucyB0aGF0IHBhc3NlcyB0aGUgZmlsdGVyCiAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkICYmICFvcHRpb24uZ3JvdXBEaXNhYmxlZCAmJiBvcHRpb24udmlzaWJsZSkgewogICAgICAgICAgICAgIHRoaXMuaG92ZXJJbmRleCA9IF9pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBoaWdobGlnaHQgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbgogICAgICAgICAgICBpZiAob3B0aW9uLml0ZW1TZWxlY3RlZCkgewogICAgICAgICAgICAgIHRoaXMuaG92ZXJJbmRleCA9IF9pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICBnZXRWYWx1ZUtleTogZnVuY3Rpb24gZ2V0VmFsdWVLZXkoaXRlbSkgewogICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlbS52YWx1ZSkudG9Mb3dlckNhc2UoKSAhPT0gJ1tvYmplY3Qgb2JqZWN0XScpIHsKICAgICAgICAgIHJldHVybiBpdGVtLnZhbHVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gT2JqZWN0KHV0aWxfWyJnZXRWYWx1ZUJ5UGF0aCJdKShpdGVtLnZhbHVlLCB0aGlzLnZhbHVlS2V5KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgICB2YXIgX3RoaXMxMyA9IHRoaXM7CgogICAgICB0aGlzLmNhY2hlZFBsYWNlSG9sZGVyID0gdGhpcy5jdXJyZW50UGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyOwoKICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHsKICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIFtdKTsKICAgICAgfQoKICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHsKICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsICcnKTsKICAgICAgfQoKICAgICAgdGhpcy5kZWJvdW5jZWRPbklucHV0Q2hhbmdlID0gZGVib3VuY2VfZGVmYXVsdCgpKHRoaXMuZGVib3VuY2UsIGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczEzLm9uSW5wdXRDaGFuZ2UoKTsKICAgICAgfSk7CiAgICAgIHRoaXMuZGVib3VuY2VkUXVlcnlDaGFuZ2UgPSBkZWJvdW5jZV9kZWZhdWx0KCkodGhpcy5kZWJvdW5jZSwgZnVuY3Rpb24gKGUpIHsKICAgICAgICBfdGhpczEzLmhhbmRsZVF1ZXJ5Q2hhbmdlKGUudGFyZ2V0LnZhbHVlKTsKICAgICAgfSk7CiAgICAgIHRoaXMuJG9uKCdoYW5kbGVPcHRpb25DbGljaycsIHRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0KTsKICAgICAgdGhpcy4kb24oJ3NldFNlbGVjdGVkJywgdGhpcy5zZXRTZWxlY3RlZCk7CiAgICB9LAogICAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgICAgdmFyIF90aGlzMTQgPSB0aGlzOwoKICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHsKICAgICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9ICcnOwogICAgICB9CgogICAgICBPYmplY3QocmVzaXplX2V2ZW50X1siYWRkUmVzaXplTGlzdGVuZXIiXSkodGhpcy4kZWwsIHRoaXMuaGFuZGxlUmVzaXplKTsKICAgICAgdmFyIHJlZmVyZW5jZSA9IHRoaXMuJHJlZnMucmVmZXJlbmNlOwoKICAgICAgaWYgKHJlZmVyZW5jZSAmJiByZWZlcmVuY2UuJGVsKSB7CiAgICAgICAgdmFyIHNpemVNYXAgPSB7CiAgICAgICAgICBtZWRpdW06IDM2LAogICAgICAgICAgc21hbGw6IDMyLAogICAgICAgICAgbWluaTogMjgKICAgICAgICB9OwogICAgICAgIHZhciBpbnB1dCA9IHJlZmVyZW5jZS4kZWwucXVlcnlTZWxlY3RvcignaW5wdXQnKTsKICAgICAgICB0aGlzLmluaXRpYWxJbnB1dEhlaWdodCA9IGlucHV0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCB8fCBzaXplTWFwW3RoaXMuc2VsZWN0U2l6ZV07CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLnJlbW90ZSAmJiB0aGlzLm11bHRpcGxlKSB7CiAgICAgICAgdGhpcy5yZXNldElucHV0SGVpZ2h0KCk7CiAgICAgIH0KCiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAocmVmZXJlbmNlICYmIHJlZmVyZW5jZS4kZWwpIHsKICAgICAgICAgIF90aGlzMTQuaW5wdXRXaWR0aCA9IHJlZmVyZW5jZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgdGhpcy5zZXRTZWxlY3RlZCgpOwogICAgfSwKICAgIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLmhhbmRsZVJlc2l6ZSkgT2JqZWN0KHJlc2l6ZV9ldmVudF9bInJlbW92ZVJlc2l6ZUxpc3RlbmVyIl0pKHRoaXMuJGVsLCB0aGlzLmhhbmRsZVJlc2l6ZSk7CiAgICB9CiAgfTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmCgogIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCiAgdmFyIHNyY19zZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSBzZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc187IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QudnVlCgogIC8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KCiAgdmFyIHNlbGVjdF9jb21wb25lbnQgPSBPYmplY3QoY29tcG9uZW50Tm9ybWFsaXplclsiYSIKICAvKiBkZWZhdWx0ICovCiAgXSkoc3JjX3NlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXywgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIGZhbHNlLCBudWxsLCBudWxsLCBudWxsKTsKICAvKiBob3QgcmVsb2FkICovCgogIGlmIChmYWxzZSkgewogICAgdmFyIHNlbGVjdF9hcGk7CiAgfQoKICBzZWxlY3RfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gInBhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LnZ1ZSI7CiAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKICB2YXIgc3JjX3NlbGVjdCA9IHNlbGVjdF9jb21wb25lbnQuZXhwb3J0czsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3QvaW5kZXguanMKCiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KCiAgc3JjX3NlbGVjdC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkgewogICAgVnVlLmNvbXBvbmVudChzcmNfc2VsZWN0Lm5hbWUsIHNyY19zZWxlY3QpOwogIH07CiAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKCiAgdmFyIHBhY2thZ2VzX3NlbGVjdCA9IF9fd2VicGFja19leHBvcnRzX19bImRlZmF1bHQiXSA9IHNyY19zZWxlY3Q7CiAgLyoqKi8KfQovKioqKioqLwpdKTs="},{"version":3,"sources":["/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/element-ui/lib/select.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","options","_compiled","functional","_scopeId","hook","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","renderWithStyleInjection","h","existing","beforeCreate","concat","require","_vm","_h","$createElement","_c","_self","directives","rawName","visible","expression","staticClass","class","selected","itemSelected","disabled","groupDisabled","limitReached","hover","on","mouseenter","hoverItem","click","$event","stopPropagation","selectOptionClick","_t","_v","_s","currentLabel","_withStripped","emitter_","emitter_default","util_","_typeof","iterator","obj","constructor","optionvue_type_script_lang_js_","mixins","a","componentName","inject","props","required","label","String","Number","created","Boolean","type","default","data","index","hitState","computed","isObject","toString","toLowerCase","currentValue","select","multiple","isEqual","contains","length","multipleLimit","watch","remote","dispatch","val","oldVal","_select","valueKey","methods","b","arr","arguments","undefined","target","indexOf","some","item","handleGroupDisabled","hoverIndex","queryChange","query","RegExp","test","filteredOptionsCount","push","cachedOptions","optionsCount","$on","beforeDestroy","_select2","selectedOptions","selectedIndex","splice","onOptionDestroy","src_optionvue_type_script_lang_js_","componentNormalizer","component","api","__file","src_option","handleClose","selectSize","toggleMenu","ref","style","inputWidth","width","collapseTags","attrs","closable","selectDisabled","size","collapseTagSize","hit","close","deleteTag","_e","resetInputHeight","_l","getValueKey","filterable","inputLength","autocomplete","autoComplete","domProps","focus","handleFocus","blur","softFocus","keyup","managePlaceholder","keydown","resetInputState","_k","keyCode","preventDefault","navigateOptions","selectOption","deletePrevTag","compositionstart","handleComposition","compositionupdate","compositionend","input","composing","debouncedQueryChange","placeholder","currentPlaceholder","id","readonly","tabindex","handleBlur","nativeOn","debouncedOnInputChange","paste","inputHovering","mouseleave","model","selectedLabel","callback","$$v","$slots","prefix","slot","showClose","iconClass","handleClearClick","handleMenuEnter","doDestroy","emptyText","popperAppendToBody","loading","allowCreate","tag","showNewOption","empty","focus_","focus_default","locale_","locale_default","input_","input_default","select_dropdownvue_type_template_id_06828748_render","$parent","popperClass","minWidth","select_dropdownvue_type_template_id_06828748_staticRenderFns","vue_popper_","vue_popper_default","select_dropdownvue_type_script_lang_js_","placement","boundariesPadding","popperOptions","_default","gpuAcceleration","visibleArrow","appendToBody","$parentInputWidth","$el","getBoundingClientRect","mounted","_this","referenceElm","$refs","reference","popperElm","updatePopper","destroyPopper","src_select_dropdownvue_type_script_lang_js_","select_dropdown","tag_","tag_default","scrollbar_","scrollbar_default","debounce_","debounce_default","clickoutside_","clickoutside_default","resize_event_","lib_locale_","scroll_into_view_","scroll_into_view_default","navigation_mixin","hoverOption","optionsAllDisabled","filter","option","every","forEach","direction","_this2","$nextTick","scrollToOption","shared_","selectvue_type_script_lang_js_","elForm","elFormItem","provide","_elFormItemSize","elFormItemSize","hasValue","Array","isArray","criteria","clearable","debounce","loadingText","noMatchText","noDataText","hasExistingOption","$ELEMENT","components","ElInput","ElSelectMenu","ElOption","ElTag","ElScrollbar","Clickoutside","validator","automaticDropdown","remoteMethod","Function","filterMethod","defaultFirstOption","reserveKeyword","createdLabel","createdSelected","initialInputHeight","cachedPlaceHolder","previousQuery","menuVisibleOnFocus","isOnComposition","isSilentBlur","handleQueryChange","setSelected","_this3","broadcast","resetHoverIndex","$emit","_this4","$isServer","inputs","querySelectorAll","document","activeElement","checkDefaultFirstOption","event","_this5","text","_","lastCharacter","_this6","Math","min","popper","menu","querySelector","scrollbar","handleScroll","_this7","emitChange","getOption","isNull","isUndefined","cachedOption","newOption","_this8","result","_this9","setTimeout","deleteSelected","toggleLastOptionHitState","e","slice","pop","_this10","inputChildNodes","childNodes","tagName","tags","sizeInMap","height","max","clientHeight","_this11","apply","map","handleOptionSelect","byClick","_this12","optionIndex","getValueIndex","setSoftFocus","onInputChange","resetInputWidth","handleResize","hasCreated","_i","_this13","_this14","sizeMap","medium","small","mini","src_selectvue_type_script_lang_js_","select_component","select_api","src_select","install","Vue","packages_select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,MAAM,CAACC,OAAP;AACA;AAAU,UAASC,OAAT,EAAkB;AAAE;;AAC9B;AAAU;;AACV;AAAU,MAAIC,gBAAgB,GAAG,EAAvB;AACV;;AACA;AAAU;;AACV;;AAAU,WAASC,mBAAT,CAA6BC,QAA7B,EAAuC;AACjD;;AACA;AAAW;;AACX;AAAW,QAAGF,gBAAgB,CAACE,QAAD,CAAnB,EAA+B;AAC1C;AAAY,aAAOF,gBAAgB,CAACE,QAAD,CAAhB,CAA2BJ,OAAlC;AACZ;AAAY;AACZ;AAAW;;AACX;;;AAAW,QAAID,MAAM,GAAGG,gBAAgB,CAACE,QAAD,CAAhB,GAA6B;AACrD;AAAYC,MAAAA,CAAC,EAAED,QADsC;;AAErD;AAAYE,MAAAA,CAAC,EAAE,KAFsC;;AAGrD;AAAYN,MAAAA,OAAO,EAAE;AACrB;;AAJqD,KAA1C;AAKX;;AACA;AAAW;;AACX;;AAAWC,IAAAA,OAAO,CAACG,QAAD,CAAP,CAAkBG,IAAlB,CAAuBR,MAAM,CAACC,OAA9B,EAAuCD,MAAvC,EAA+CA,MAAM,CAACC,OAAtD,EAA+DG,mBAA/D;AACX;;AACA;AAAW;;AACX;;AAAWJ,IAAAA,MAAM,CAACO,CAAP,GAAW,IAAX;AACX;;AACA;AAAW;;AACX;;AAAW,WAAOP,MAAM,CAACC,OAAd;AACX;AAAW;AACX;;AACA;;AACA;AAAU;;AACV;;;AAAUG,EAAAA,mBAAmB,CAACK,CAApB,GAAwBP,OAAxB;AACV;;AACA;AAAU;;AACV;;AAAUE,EAAAA,mBAAmB,CAACM,CAApB,GAAwBP,gBAAxB;AACV;;AACA;AAAU;;AACV;;AAAUC,EAAAA,mBAAmB,CAACO,CAApB,GAAwB,UAASV,OAAT,EAAkBW,IAAlB,EAAwBC,MAAxB,EAAgC;AAClE;AAAW,QAAG,CAACT,mBAAmB,CAACU,CAApB,CAAsBb,OAAtB,EAA+BW,IAA/B,CAAJ,EAA0C;AACrD;AAAYG,MAAAA,MAAM,CAACC,cAAP,CAAsBf,OAAtB,EAA+BW,IAA/B,EAAqC;AAAEK,QAAAA,UAAU,EAAE,IAAd;AAAoBC,QAAAA,GAAG,EAAEL;AAAzB,OAArC;AACZ;AAAY;AACZ;;AAAW,GAJD;AAKV;;AACA;AAAU;;AACV;;;AAAUT,EAAAA,mBAAmB,CAACe,CAApB,GAAwB,UAASlB,OAAT,EAAkB;AACpD;AAAW,QAAG,OAAOmB,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,WAA3C,EAAwD;AACnE;AAAYN,MAAAA,MAAM,CAACC,cAAP,CAAsBf,OAAtB,EAA+BmB,MAAM,CAACC,WAAtC,EAAmD;AAAEC,QAAAA,KAAK,EAAE;AAAT,OAAnD;AACZ;AAAY;AACZ;;;AAAWP,IAAAA,MAAM,CAACC,cAAP,CAAsBf,OAAtB,EAA+B,YAA/B,EAA6C;AAAEqB,MAAAA,KAAK,EAAE;AAAT,KAA7C;AACX;AAAW,GALD;AAMV;;AACA;AAAU;;AACV;AAAU;;AACV;AAAU;;AACV;AAAU;;AACV;AAAU;;AACV;;;AAAUlB,EAAAA,mBAAmB,CAACmB,CAApB,GAAwB,UAASD,KAAT,EAAgBE,IAAhB,EAAsB;AACxD;AAAW,QAAGA,IAAI,GAAG,CAAV,EAAaF,KAAK,GAAGlB,mBAAmB,CAACkB,KAAD,CAA3B;AACxB;;AAAW,QAAGE,IAAI,GAAG,CAAV,EAAa,OAAOF,KAAP;AACxB;;AAAW,QAAIE,IAAI,GAAG,CAAR,IAAc,SAAOF,KAAP,MAAiB,QAA/B,IAA2CA,KAA3C,IAAoDA,KAAK,CAACG,UAA7D,EAAyE,OAAOH,KAAP;AACpF;;AAAW,QAAII,EAAE,GAAGX,MAAM,CAACY,MAAP,CAAc,IAAd,CAAT;AACX;;AAAWvB,IAAAA,mBAAmB,CAACe,CAApB,CAAsBO,EAAtB;AACX;;;AAAWX,IAAAA,MAAM,CAACC,cAAP,CAAsBU,EAAtB,EAA0B,SAA1B,EAAqC;AAAET,MAAAA,UAAU,EAAE,IAAd;AAAoBK,MAAAA,KAAK,EAAEA;AAA3B,KAArC;AACX;;AAAW,QAAGE,IAAI,GAAG,CAAP,IAAY,OAAOF,KAAP,IAAgB,QAA/B,EAAyC,KAAI,IAAIM,GAAR,IAAeN,KAAf;AAAsBlB,MAAAA,mBAAmB,CAACO,CAApB,CAAsBe,EAAtB,EAA0BE,GAA1B,EAA+B,UAASA,GAAT,EAAc;AAAE,eAAON,KAAK,CAACM,GAAD,CAAZ;AAAoB,OAApC,CAAqCC,IAArC,CAA0C,IAA1C,EAAgDD,GAAhD,CAA/B;AAAtB;AACpD;;AAAW,WAAOF,EAAP;AACX;AAAW,GATD;AAUV;;AACA;AAAU;;AACV;;;AAAUtB,EAAAA,mBAAmB,CAAC0B,CAApB,GAAwB,UAAS9B,MAAT,EAAiB;AACnD;AAAW,QAAIa,MAAM,GAAGb,MAAM,IAAIA,MAAM,CAACyB,UAAjB;AACxB;AAAY,aAASM,UAAT,GAAsB;AAAE,aAAO/B,MAAM,CAAC,SAAD,CAAb;AAA2B,KADvC;AAExB;AAAY,aAASgC,gBAAT,GAA4B;AAAE,aAAOhC,MAAP;AAAgB,KAF/C;AAGX;;AAAWI,IAAAA,mBAAmB,CAACO,CAApB,CAAsBE,MAAtB,EAA8B,GAA9B,EAAmCA,MAAnC;AACX;;;AAAW,WAAOA,MAAP;AACX;AAAW,GAND;AAOV;;AACA;AAAU;;AACV;;;AAAUT,EAAAA,mBAAmB,CAACU,CAApB,GAAwB,UAASmB,MAAT,EAAiBC,QAAjB,EAA2B;AAAE,WAAOnB,MAAM,CAACoB,SAAP,CAAiBC,cAAjB,CAAgC5B,IAAhC,CAAqCyB,MAArC,EAA6CC,QAA7C,CAAP;AAAgE,GAArH;AACV;;AACA;AAAU;;AACV;;;AAAU9B,EAAAA,mBAAmB,CAACiC,CAApB,GAAwB,QAAxB;AACV;;AACA;;AACA;AAAU;;AACV;;AAAU,SAAOjC,mBAAmB,CAACA,mBAAmB,CAACkC,CAApB,GAAwB,EAAzB,CAA1B;AACV;AAAU,CApFD;AAqFT;;AACA;AAAU;AACV;;AACA;AAAO,UAAStC,MAAT,EAAiBuC,mBAAjB,EAAsCnC,mBAAtC,EAA2D;AAElE;AACA;;AAA+BA,EAAAA,mBAAmB,CAACO,CAApB,CAAsB4B,mBAAtB,EAA2C,GAA3C,EAAgD,YAAW;AAAE,WAAOC,kBAAP;AAA4B,GAAzF;AAC/B;AAEA;AACA;AACA;;;AAEA,WAASA,kBAAT,CACEC,aADF,EAEEC,MAFF,EAGEC,eAHF,EAIEC,kBAJF,EAKEC,YALF,EAMEC,OANF,EAOEC,gBAPF;AAOoB;AAClBC,EAAAA;AAAW;AARb,IASE;AACA;AACA,QAAIC,OAAO,GAAG,OAAOR,aAAP,KAAyB,UAAzB,GACVA,aAAa,CAACQ,OADJ,GAEVR,aAFJ,CAFA,CAMA;;AACA,QAAIC,MAAJ,EAAY;AACVO,MAAAA,OAAO,CAACP,MAAR,GAAiBA,MAAjB;AACAO,MAAAA,OAAO,CAACN,eAAR,GAA0BA,eAA1B;AACAM,MAAAA,OAAO,CAACC,SAAR,GAAoB,IAApB;AACD,KAXD,CAaA;;;AACA,QAAIN,kBAAJ,EAAwB;AACtBK,MAAAA,OAAO,CAACE,UAAR,GAAqB,IAArB;AACD,KAhBD,CAkBA;;;AACA,QAAIL,OAAJ,EAAa;AACXG,MAAAA,OAAO,CAACG,QAAR,GAAmB,YAAYN,OAA/B;AACD;;AAED,QAAIO,IAAJ;;AACA,QAAIN,gBAAJ,EAAsB;AAAE;AACtBM,MAAAA,IAAI,GAAG,cAAUC,OAAV,EAAmB;AACxB;AACAA,QAAAA,OAAO,GACLA,OAAO,IAAI;AACV,aAAKC,MAAL,IAAe,KAAKA,MAAL,CAAYC,UAD5B,IAC2C;AAC1C,aAAKC,MAAL,IAAe,KAAKA,MAAL,CAAYF,MAA3B,IAAqC,KAAKE,MAAL,CAAYF,MAAZ,CAAmBC,UAH3D,CAFwB,CAK+C;AACvE;;AACA,YAAI,CAACF,OAAD,IAAY,OAAOI,mBAAP,KAA+B,WAA/C,EAA4D;AAC1DJ,UAAAA,OAAO,GAAGI,mBAAV;AACD,SATuB,CAUxB;;;AACA,YAAIb,YAAJ,EAAkB;AAChBA,UAAAA,YAAY,CAACrC,IAAb,CAAkB,IAAlB,EAAwB8C,OAAxB;AACD,SAbuB,CAcxB;;;AACA,YAAIA,OAAO,IAAIA,OAAO,CAACK,qBAAvB,EAA8C;AAC5CL,UAAAA,OAAO,CAACK,qBAAR,CAA8BC,GAA9B,CAAkCb,gBAAlC;AACD;AACF,OAlBD,CADoB,CAoBpB;AACA;;;AACAE,MAAAA,OAAO,CAACY,YAAR,GAAuBR,IAAvB;AACD,KAvBD,MAuBO,IAAIR,YAAJ,EAAkB;AACvBQ,MAAAA,IAAI,GAAGL,UAAU,GACb,YAAY;AAAEH,QAAAA,YAAY,CAACrC,IAAb,CAAkB,IAAlB,EAAwB,KAAKsD,KAAL,CAAWC,QAAX,CAAoBC,UAA5C;AAAyD,OAD1D,GAEbnB,YAFJ;AAGD;;AAED,QAAIQ,IAAJ,EAAU;AACR,UAAIJ,OAAO,CAACE,UAAZ,EAAwB;AACtB;AACA;AACAF,QAAAA,OAAO,CAACgB,aAAR,GAAwBZ,IAAxB,CAHsB,CAItB;;AACA,YAAIa,cAAc,GAAGjB,OAAO,CAACP,MAA7B;;AACAO,QAAAA,OAAO,CAACP,MAAR,GAAiB,SAASyB,wBAAT,CAAmCC,CAAnC,EAAsCd,OAAtC,EAA+C;AAC9DD,UAAAA,IAAI,CAAC7C,IAAL,CAAU8C,OAAV;AACA,iBAAOY,cAAc,CAACE,CAAD,EAAId,OAAJ,CAArB;AACD,SAHD;AAID,OAVD,MAUO;AACL;AACA,YAAIe,QAAQ,GAAGpB,OAAO,CAACqB,YAAvB;AACArB,QAAAA,OAAO,CAACqB,YAAR,GAAuBD,QAAQ,GAC3B,GAAGE,MAAH,CAAUF,QAAV,EAAoBhB,IAApB,CAD2B,GAE3B,CAACA,IAAD,CAFJ;AAGD;AACF;;AAED,WAAO;AACLpD,MAAAA,OAAO,EAAEwC,aADJ;AAELQ,MAAAA,OAAO,EAAEA;AAFJ,KAAP;AAID;AAGD;;AAAO,CArGG;AAsGV;;AACA;;AACA;;AACA;AAAO,UAASjD,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,2BAAD,CAAxB;AAEA;AAAO,CA7GG;AA8GV;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,+BAAD,CAAxB;AAEA;AAAO,CAnHG;AAoHV;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,iCAAD,CAAxB;AAEA;AAAO,CAzHG;AA0HV;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,8BAAD,CAAxB;AAEA;AAAO,CA/HG;AAgIV;;AACA;;AACA;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,sBAAD,CAAxB;AAEA;AAAO,CAxIG;AAyIV;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,mCAAD,CAAxB;AAEA;AAAO,CA/IG;AAgJV;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,0BAAD,CAAxB;AAEA;AAAO,CAtJG;AAuJV;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,mCAAD,CAAxB;AAEA;AAAO,CA7JG;AA8JV;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,4BAAD,CAAxB;AAEA;AAAO,CAnKG;AAoKV;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,uBAAD,CAAxB;AAEA;AAAO,CA1KG;AA2KV;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,6BAAD,CAAxB;AAEA;AAAO,CAjLG;AAkLV;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,6BAAD,CAAxB;AAEA;AAAO,CAvLG;AAwLV;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,uCAAD,CAAxB;AAEA;AAAO,CArMG;AAsMV;;AACA;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBuC,mBAAjB,EAAsCnC,mBAAtC,EAA2D;AAElE,eAFkE,CAIlE;;AACA,MAAIsC,MAAM,GAAG,SAATA,MAAS,GAAW;AACtB,QAAI+B,GAAG,GAAG,IAAV;;AACA,QAAIC,EAAE,GAAGD,GAAG,CAACE,cAAb;;AACA,QAAIC,EAAE,GAAGH,GAAG,CAACI,KAAJ,CAAUD,EAAV,IAAgBF,EAAzB;;AACA,WAAOE,EAAE,CACP,IADO,EAEP;AACEE,MAAAA,UAAU,EAAE,CACV;AACElE,QAAAA,IAAI,EAAE,MADR;AAEEmE,QAAAA,OAAO,EAAE,QAFX;AAGEzD,QAAAA,KAAK,EAAEmD,GAAG,CAACO,OAHb;AAIEC,QAAAA,UAAU,EAAE;AAJd,OADU,CADd;AASEC,MAAAA,WAAW,EAAE,0BATf;AAUEC,MAAAA,KAAK,EAAE;AACLC,QAAAA,QAAQ,EAAEX,GAAG,CAACY,YADT;AAEL,uBAAeZ,GAAG,CAACa,QAAJ,IAAgBb,GAAG,CAACc,aAApB,IAAqCd,GAAG,CAACe,YAFnD;AAGLC,QAAAA,KAAK,EAAEhB,GAAG,CAACgB;AAHN,OAVT;AAeEC,MAAAA,EAAE,EAAE;AACFC,QAAAA,UAAU,EAAElB,GAAG,CAACmB,SADd;AAEFC,QAAAA,KAAK,EAAE,eAASC,MAAT,EAAiB;AACtBA,UAAAA,MAAM,CAACC,eAAP;AACA,iBAAOtB,GAAG,CAACuB,iBAAJ,CAAsBF,MAAtB,CAAP;AACD;AALC;AAfN,KAFO,EAyBP,CAACrB,GAAG,CAACwB,EAAJ,CAAO,SAAP,EAAkB,CAACrB,EAAE,CAAC,MAAD,EAAS,CAACH,GAAG,CAACyB,EAAJ,CAAOzB,GAAG,CAAC0B,EAAJ,CAAO1B,GAAG,CAAC2B,YAAX,CAAP,CAAD,CAAT,CAAH,CAAlB,CAAD,CAzBO,EA0BP,CA1BO,CAAT;AA4BD,GAhCD;;AAiCA,MAAIzD,eAAe,GAAG,EAAtB;AACAD,EAAAA,MAAM,CAAC2D,aAAP,GAAuB,IAAvB,CAvCkE,CA0ClE;AAEA;;AACA,MAAIC,QAAQ,GAAGlG,mBAAmB,CAAC,CAAD,CAAlC;;AACA,MAAImG,eAAe,GAAG,aAAanG,mBAAmB,CAAC0B,CAApB,CAAsBwE,QAAtB,CAAnC,CA9CkE,CAgDlE;;;AACA,MAAIE,KAAK,GAAGpG,mBAAmB,CAAC,CAAD,CAA/B,CAjDkE,CAmDlE;;;AACA,MAAIqG,OAAO,GAAG,OAAOrF,MAAP,KAAkB,UAAlB,IAAgC,SAAOA,MAAM,CAACsF,QAAd,MAA2B,QAA3D,GAAsE,UAAUC,GAAV,EAAe;AAAE,oBAAcA,GAAd;AAAoB,GAA3G,GAA8G,UAAUA,GAAV,EAAe;AAAE,WAAOA,GAAG,IAAI,OAAOvF,MAAP,KAAkB,UAAzB,IAAuCuF,GAAG,CAACC,WAAJ,KAAoBxF,MAA3D,IAAqEuF,GAAG,KAAKvF,MAAM,CAACe,SAApF,GAAgG,QAAhG,YAAkHwE,GAAlH,CAAP;AAA+H,GAA5Q,CApDkE,CAsDlE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;;;AAA6B,MAAIE,8BAA8B,GAAI;AACjEC,IAAAA,MAAM,EAAE,CAACP,eAAe,CAACQ,CAAjB,CADyD;AAGjEnG,IAAAA,IAAI,EAAE,UAH2D;AAKjEoG,IAAAA,aAAa,EAAE,UALkD;AAOjEC,IAAAA,MAAM,EAAE,CAAC,QAAD,CAPyD;AASjEC,IAAAA,KAAK,EAAE;AACL5F,MAAAA,KAAK,EAAE;AACL6F,QAAAA,QAAQ,EAAE;AADL,OADF;AAILC,MAAAA,KAAK,EAAE,CAACC,MAAD,EAASC,MAAT,CAJF;AAKLC,MAAAA,OAAO,EAAEC,OALJ;AAMLlC,MAAAA,QAAQ,EAAE;AACRmC,QAAAA,IAAI,EAAED,OADE;AAERE,QAAAA,OAAO,EAAE;AAFD;AANL,KAT0D;AAqBjEC,IAAAA,IAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,aAAO;AACLC,QAAAA,KAAK,EAAE,CAAC,CADH;AAELrC,QAAAA,aAAa,EAAE,KAFV;AAGLP,QAAAA,OAAO,EAAE,IAHJ;AAIL6C,QAAAA,QAAQ,EAAE,KAJL;AAKLpC,QAAAA,KAAK,EAAE;AALF,OAAP;AAOD,KA7BgE;AAgCjEqC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;AAC5B,eAAOhH,MAAM,CAACoB,SAAP,CAAiB6F,QAAjB,CAA0BxH,IAA1B,CAA+B,KAAKc,KAApC,EAA2C2G,WAA3C,OAA6D,iBAApE;AACD,OAHO;AAIR7B,MAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;AACpC,eAAO,KAAKgB,KAAL,KAAe,KAAKW,QAAL,GAAgB,EAAhB,GAAqB,KAAKzG,KAAzC,CAAP;AACD,OANO;AAOR4G,MAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;AACpC,eAAO,KAAK5G,KAAL,IAAc,KAAK8F,KAAnB,IAA4B,EAAnC;AACD,OATO;AAUR/B,MAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;AACpC,YAAI,CAAC,KAAK8C,MAAL,CAAYC,QAAjB,EAA2B;AACzB,iBAAO,KAAKC,OAAL,CAAa,KAAK/G,KAAlB,EAAyB,KAAK6G,MAAL,CAAY7G,KAArC,CAAP;AACD,SAFD,MAEO;AACL,iBAAO,KAAKgH,QAAL,CAAc,KAAKH,MAAL,CAAY7G,KAA1B,EAAiC,KAAKA,KAAtC,CAAP;AACD;AACF,OAhBO;AAiBRkE,MAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;AACpC,YAAI,KAAK2C,MAAL,CAAYC,QAAhB,EAA0B;AACxB,iBAAO,CAAC,KAAK/C,YAAN,IAAsB,CAAC,KAAK8C,MAAL,CAAY7G,KAAZ,IAAqB,EAAtB,EAA0BiH,MAA1B,IAAoC,KAAKJ,MAAL,CAAYK,aAAtE,IAAuF,KAAKL,MAAL,CAAYK,aAAZ,GAA4B,CAA1H;AACD,SAFD,MAEO;AACL,iBAAO,KAAP;AACD;AACF;AAvBO,KAhCuD;AA0DjEC,IAAAA,KAAK,EAAE;AACLrC,MAAAA,YAAY,EAAE,SAASA,YAAT,GAAwB;AACpC,YAAI,CAAC,KAAKmB,OAAN,IAAiB,CAAC,KAAKY,MAAL,CAAYO,MAAlC,EAA0C,KAAKC,QAAL,CAAc,UAAd,EAA0B,aAA1B;AAC3C,OAHI;AAILrH,MAAAA,KAAK,EAAE,SAASA,KAAT,CAAesH,GAAf,EAAoBC,MAApB,EAA4B;AACjC,YAAIC,OAAO,GAAG,KAAKX,MAAnB;AAAA,YACIO,MAAM,GAAGI,OAAO,CAACJ,MADrB;AAAA,YAEIK,QAAQ,GAAGD,OAAO,CAACC,QAFvB;;AAIA,YAAI,CAAC,KAAKxB,OAAN,IAAiB,CAACmB,MAAtB,EAA8B;AAC5B,cAAIK,QAAQ,IAAI,CAAC,OAAOH,GAAP,KAAe,WAAf,GAA6B,WAA7B,GAA2CnC,OAAO,CAACmC,GAAD,CAAnD,MAA8D,QAA1E,IAAsF,CAAC,OAAOC,MAAP,KAAkB,WAAlB,GAAgC,WAAhC,GAA8CpC,OAAO,CAACoC,MAAD,CAAtD,MAAoE,QAA1J,IAAsKD,GAAG,CAACG,QAAD,CAAH,KAAkBF,MAAM,CAACE,QAAD,CAAlM,EAA8M;AAC5M;AACD;;AACD,eAAKJ,QAAL,CAAc,UAAd,EAA0B,aAA1B;AACD;AACF;AAfI,KA1D0D;AA4EjEK,IAAAA,OAAO,EAAE;AACPX,MAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBtB,CAAjB,EAAoBkC,CAApB,EAAuB;AAC9B,YAAI,CAAC,KAAKlB,QAAV,EAAoB;AAClB,iBAAOhB,CAAC,KAAKkC,CAAb;AACD,SAFD,MAEO;AACL,cAAIF,QAAQ,GAAG,KAAKZ,MAAL,CAAYY,QAA3B;AACA,iBAAOhI,MAAM,CAACyF,KAAK,CAAC,gBAAD,CAAN,CAAN,CAAgCO,CAAhC,EAAmCgC,QAAnC,MAAiDhI,MAAM,CAACyF,KAAK,CAAC,gBAAD,CAAN,CAAN,CAAgCyC,CAAhC,EAAmCF,QAAnC,CAAxD;AACD;AACF,OARM;AASPT,MAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;AAC5B,YAAIY,GAAG,GAAGC,SAAS,CAACZ,MAAV,GAAmB,CAAnB,IAAwBY,SAAS,CAAC,CAAD,CAAT,KAAiBC,SAAzC,GAAqDD,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;AACA,YAAIE,MAAM,GAAGF,SAAS,CAAC,CAAD,CAAtB;;AAEA,YAAI,CAAC,KAAKpB,QAAV,EAAoB;AAClB,iBAAOmB,GAAG,IAAIA,GAAG,CAACI,OAAJ,CAAYD,MAAZ,IAAsB,CAAC,CAArC;AACD,SAFD,MAEO;AACL,cAAIN,QAAQ,GAAG,KAAKZ,MAAL,CAAYY,QAA3B;AACA,iBAAOG,GAAG,IAAIA,GAAG,CAACK,IAAJ,CAAS,UAAUC,IAAV,EAAgB;AACrC,mBAAOzI,MAAM,CAACyF,KAAK,CAAC,gBAAD,CAAN,CAAN,CAAgCgD,IAAhC,EAAsCT,QAAtC,MAAoDhI,MAAM,CAACyF,KAAK,CAAC,gBAAD,CAAN,CAAN,CAAgC6C,MAAhC,EAAwCN,QAAxC,CAA3D;AACD,WAFa,CAAd;AAGD;AACF,OArBM;AAsBPU,MAAAA,mBAAmB,EAAE,SAASA,mBAAT,CAA6Bb,GAA7B,EAAkC;AACrD,aAAKrD,aAAL,GAAqBqD,GAArB;AACD,OAxBM;AAyBPhD,MAAAA,SAAS,EAAE,SAASA,SAAT,GAAqB;AAC9B,YAAI,CAAC,KAAKN,QAAN,IAAkB,CAAC,KAAKC,aAA5B,EAA2C;AACzC,eAAK4C,MAAL,CAAYuB,UAAZ,GAAyB,KAAKvB,MAAL,CAAYlF,OAAZ,CAAoBqG,OAApB,CAA4B,IAA5B,CAAzB;AACD;AACF,OA7BM;AA8BPtD,MAAAA,iBAAiB,EAAE,SAASA,iBAAT,GAA6B;AAC9C,YAAI,KAAKV,QAAL,KAAkB,IAAlB,IAA0B,KAAKC,aAAL,KAAuB,IAArD,EAA2D;AACzD,eAAKoD,QAAL,CAAc,UAAd,EAA0B,mBAA1B,EAA+C,CAAC,IAAD,EAAO,IAAP,CAA/C;AACD;AACF,OAlCM;AAmCPgB,MAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBC,KAArB,EAA4B;AACvC,aAAK5E,OAAL,GAAe,IAAI6E,MAAJ,CAAW9I,MAAM,CAACyF,KAAK,CAAC,oBAAD,CAAN,CAAN,CAAoCoD,KAApC,CAAX,EAAuD,GAAvD,EAA4DE,IAA5D,CAAiE,KAAK1D,YAAtE,KAAuF,KAAKmB,OAA3G;;AACA,YAAI,CAAC,KAAKvC,OAAV,EAAmB;AACjB,eAAKmD,MAAL,CAAY4B,oBAAZ;AACD;AACF;AAxCM,KA5EwD;AAuHjExC,IAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B,WAAKY,MAAL,CAAYlF,OAAZ,CAAoB+G,IAApB,CAAyB,IAAzB;AACA,WAAK7B,MAAL,CAAY8B,aAAZ,CAA0BD,IAA1B,CAA+B,IAA/B;AACA,WAAK7B,MAAL,CAAY+B,YAAZ;AACA,WAAK/B,MAAL,CAAY4B,oBAAZ;AAEA,WAAKI,GAAL,CAAS,aAAT,EAAwB,KAAKR,WAA7B;AACA,WAAKQ,GAAL,CAAS,qBAAT,EAAgC,KAAKV,mBAArC;AACD,KA/HgE;AAgIjEW,IAAAA,aAAa,EAAE,SAASA,aAAT,GAAyB;AACtC,UAAIC,QAAQ,GAAG,KAAKlC,MAApB;AAAA,UACI/C,QAAQ,GAAGiF,QAAQ,CAACjF,QADxB;AAAA,UAEIgD,QAAQ,GAAGiC,QAAQ,CAACjC,QAFxB;AAIA,UAAIkC,eAAe,GAAGlC,QAAQ,GAAGhD,QAAH,GAAc,CAACA,QAAD,CAA5C;AACA,UAAIwC,KAAK,GAAG,KAAKO,MAAL,CAAY8B,aAAZ,CAA0BX,OAA1B,CAAkC,IAAlC,CAAZ;AACA,UAAIiB,aAAa,GAAGD,eAAe,CAAChB,OAAhB,CAAwB,IAAxB,CAApB,CAPsC,CAStC;;AACA,UAAI1B,KAAK,GAAG,CAAC,CAAT,IAAc2C,aAAa,GAAG,CAAlC,EAAqC;AACnC,aAAKpC,MAAL,CAAY8B,aAAZ,CAA0BO,MAA1B,CAAiC5C,KAAjC,EAAwC,CAAxC;AACD;;AACD,WAAKO,MAAL,CAAYsC,eAAZ,CAA4B,KAAKtC,MAAL,CAAYlF,OAAZ,CAAoBqG,OAApB,CAA4B,IAA5B,CAA5B;AACD;AA9IgE,GAAtC,CA3EqC,CA2NlE;;AACC;;AAA6B,MAAIoB,kCAAkC,GAAI7D,8BAA1C,CA5NoC,CA6NlE;;AACA,MAAI8D,mBAAmB,GAAGvK,mBAAmB,CAAC,CAAD,CAA7C,CA9NkE,CAgOlE;;AAMA;;;AAEA,MAAIwK,SAAS,GAAG7J,MAAM,CAAC4J,mBAAmB,CAAC;AAAI;AAAL,GAApB,CAAN,CACdD,kCADc,EAEdhI,MAFc,EAGdC,eAHc,EAId,KAJc,EAKd,IALc,EAMd,IANc,EAOd,IAPc,CAAhB;AAWA;;AACA,MAAI,KAAJ,EAAW;AAAE,QAAIkI,GAAJ;AAAU;;AACvBD,EAAAA,SAAS,CAAC3H,OAAV,CAAkB6H,MAAlB,GAA2B,gCAA3B;AACA;;AAA6B,MAAIC,UAAU,GAAGxI,mBAAmB,CAAC,GAAD,CAAnB,GAA4BqI,SAAS,CAAC3K,OAAvD;AAE7B;AAAO,CAjcG;AAkcV;;AACA;;AACA;;AACA;;AACA;AAAO,UAASD,MAAT,EAAiBC,OAAjB,EAA0B;AAEjCD,EAAAA,MAAM,CAACC,OAAP,GAAiBuE,OAAO,CAAC,oBAAD,CAAxB;AAEA;AAAO,CA1cG;AA2cV;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;AAAO,UAASxE,MAAT,EAAiBuC,mBAAjB,EAAsCnC,mBAAtC,EAA2D;AAElE;;AACAA,EAAAA,mBAAmB,CAACe,CAApB,CAAsBoB,mBAAtB,EAHkE,CAKlE;;;AACA,MAAIG,MAAM,GAAG,SAATA,MAAS,GAAW;AACtB,QAAI+B,GAAG,GAAG,IAAV;;AACA,QAAIC,EAAE,GAAGD,GAAG,CAACE,cAAb;;AACA,QAAIC,EAAE,GAAGH,GAAG,CAACI,KAAJ,CAAUD,EAAV,IAAgBF,EAAzB;;AACA,WAAOE,EAAE,CACP,KADO,EAEP;AACEE,MAAAA,UAAU,EAAE,CACV;AACElE,QAAAA,IAAI,EAAE,cADR;AAEEmE,QAAAA,OAAO,EAAE,gBAFX;AAGEzD,QAAAA,KAAK,EAAEmD,GAAG,CAACuG,WAHb;AAIE/F,QAAAA,UAAU,EAAE;AAJd,OADU,CADd;AASEC,MAAAA,WAAW,EAAE,WATf;AAUEC,MAAAA,KAAK,EAAE,CAACV,GAAG,CAACwG,UAAJ,GAAiB,gBAAgBxG,GAAG,CAACwG,UAArC,GAAkD,EAAnD,CAVT;AAWEvF,MAAAA,EAAE,EAAE;AACFG,QAAAA,KAAK,EAAE,eAASC,MAAT,EAAiB;AACtBA,UAAAA,MAAM,CAACC,eAAP;AACA,iBAAOtB,GAAG,CAACyG,UAAJ,CAAepF,MAAf,CAAP;AACD;AAJC;AAXN,KAFO,EAoBP,CACErB,GAAG,CAAC2D,QAAJ,GACIxD,EAAE,CACA,KADA,EAEA;AACEuG,MAAAA,GAAG,EAAE,MADP;AAEEjG,MAAAA,WAAW,EAAE,iBAFf;AAGEkG,MAAAA,KAAK,EAAE;AAAE,qBAAa3G,GAAG,CAAC4G,UAAJ,GAAiB,EAAjB,GAAsB,IAArC;AAA2CC,QAAAA,KAAK,EAAE;AAAlD;AAHT,KAFA,EAOA,CACE7G,GAAG,CAAC8G,YAAJ,IAAoB9G,GAAG,CAACW,QAAJ,CAAamD,MAAjC,GACI3D,EAAE,CACA,MADA,EAEA,CACEA,EAAE,CACA,QADA,EAEA;AACE4G,MAAAA,KAAK,EAAE;AACLC,QAAAA,QAAQ,EAAE,CAAChH,GAAG,CAACiH,cADV;AAELC,QAAAA,IAAI,EAAElH,GAAG,CAACmH,eAFL;AAGLC,QAAAA,GAAG,EAAEpH,GAAG,CAACW,QAAJ,CAAa,CAAb,EAAgByC,QAHhB;AAILJ,QAAAA,IAAI,EAAE,MAJD;AAKL,+BAAuB;AALlB,OADT;AAQE/B,MAAAA,EAAE,EAAE;AACFoG,QAAAA,KAAK,EAAE,eAAShG,MAAT,EAAiB;AACtBrB,UAAAA,GAAG,CAACsH,SAAJ,CAAcjG,MAAd,EAAsBrB,GAAG,CAACW,QAAJ,CAAa,CAAb,CAAtB;AACD;AAHC;AARN,KAFA,EAgBA,CACER,EAAE,CAAC,MAAD,EAAS;AAAEM,MAAAA,WAAW,EAAE;AAAf,KAAT,EAAkD,CAClDT,GAAG,CAACyB,EAAJ,CAAOzB,GAAG,CAAC0B,EAAJ,CAAO1B,GAAG,CAACW,QAAJ,CAAa,CAAb,EAAgBgB,YAAvB,CAAP,CADkD,CAAlD,CADJ,CAhBA,CADJ,EAuBE3B,GAAG,CAACW,QAAJ,CAAamD,MAAb,GAAsB,CAAtB,GACI3D,EAAE,CACA,QADA,EAEA;AACE4G,MAAAA,KAAK,EAAE;AACLC,QAAAA,QAAQ,EAAE,KADL;AAELE,QAAAA,IAAI,EAAElH,GAAG,CAACmH,eAFL;AAGLnE,QAAAA,IAAI,EAAE,MAHD;AAIL,+BAAuB;AAJlB;AADT,KAFA,EAUA,CACE7C,EAAE,CACA,MADA,EAEA;AAAEM,MAAAA,WAAW,EAAE;AAAf,KAFA,EAGA,CAACT,GAAG,CAACyB,EAAJ,CAAO,OAAOzB,GAAG,CAAC0B,EAAJ,CAAO1B,GAAG,CAACW,QAAJ,CAAamD,MAAb,GAAsB,CAA7B,CAAd,CAAD,CAHA,CADJ,CAVA,CADN,GAmBI9D,GAAG,CAACuH,EAAJ,EA1CN,CAFA,EA8CA,CA9CA,CADN,GAiDIvH,GAAG,CAACuH,EAAJ,EAlDN,EAmDE,CAACvH,GAAG,CAAC8G,YAAL,GACI3G,EAAE,CACA,kBADA,EAEA;AAAEc,MAAAA,EAAE,EAAE;AAAE,uBAAejB,GAAG,CAACwH;AAArB;AAAN,KAFA,EAGAxH,GAAG,CAACyH,EAAJ,CAAOzH,GAAG,CAACW,QAAX,EAAqB,UAASoE,IAAT,EAAe;AAClC,aAAO5E,EAAE,CACP,QADO,EAEP;AACEhD,QAAAA,GAAG,EAAE6C,GAAG,CAAC0H,WAAJ,CAAgB3C,IAAhB,CADP;AAEEgC,QAAAA,KAAK,EAAE;AACLC,UAAAA,QAAQ,EAAE,CAAChH,GAAG,CAACiH,cADV;AAELC,UAAAA,IAAI,EAAElH,GAAG,CAACmH,eAFL;AAGLC,UAAAA,GAAG,EAAErC,IAAI,CAAC3B,QAHL;AAILJ,UAAAA,IAAI,EAAE,MAJD;AAKL,iCAAuB;AALlB,SAFT;AASE/B,QAAAA,EAAE,EAAE;AACFoG,UAAAA,KAAK,EAAE,eAAShG,MAAT,EAAiB;AACtBrB,YAAAA,GAAG,CAACsH,SAAJ,CAAcjG,MAAd,EAAsB0D,IAAtB;AACD;AAHC;AATN,OAFO,EAiBP,CACE5E,EAAE,CAAC,MAAD,EAAS;AAAEM,QAAAA,WAAW,EAAE;AAAf,OAAT,EAAkD,CAClDT,GAAG,CAACyB,EAAJ,CAAOzB,GAAG,CAAC0B,EAAJ,CAAOqD,IAAI,CAACpD,YAAZ,CAAP,CADkD,CAAlD,CADJ,CAjBO,CAAT;AAuBD,KAxBD,CAHA,EA4BA,CA5BA,CADN,GA+BI3B,GAAG,CAACuH,EAAJ,EAlFN,EAmFEvH,GAAG,CAAC2H,UAAJ,GACIxH,EAAE,CAAC,OAAD,EAAU;AACVE,MAAAA,UAAU,EAAE,CACV;AACElE,QAAAA,IAAI,EAAE,OADR;AAEEmE,QAAAA,OAAO,EAAE,SAFX;AAGEzD,QAAAA,KAAK,EAAEmD,GAAG,CAACmF,KAHb;AAIE3E,QAAAA,UAAU,EAAE;AAJd,OADU,CADF;AASVkG,MAAAA,GAAG,EAAE,OATK;AAUVjG,MAAAA,WAAW,EAAE,kBAVH;AAWVC,MAAAA,KAAK,EAAE,CAACV,GAAG,CAACwG,UAAJ,GAAiB,QAAQxG,GAAG,CAACwG,UAA7B,GAA0C,EAA3C,CAXG;AAYVG,MAAAA,KAAK,EAAE;AACL,qBAAa,GADR;AAELE,QAAAA,KAAK,EAAE7G,GAAG,CAAC4H,WAAJ,IAAmB5H,GAAG,CAAC4G,UAAJ,GAAiB,EAApC,IAA0C,GAF5C;AAGL,qBAAa5G,GAAG,CAAC4G,UAAJ,GAAiB,EAAjB,GAAsB;AAH9B,OAZG;AAiBVG,MAAAA,KAAK,EAAE;AACL/D,QAAAA,IAAI,EAAE,MADD;AAELnC,QAAAA,QAAQ,EAAEb,GAAG,CAACiH,cAFT;AAGLY,QAAAA,YAAY,EAAE7H,GAAG,CAAC8H,YAAJ,IAAoB9H,GAAG,CAAC6H;AAHjC,OAjBG;AAsBVE,MAAAA,QAAQ,EAAE;AAAElL,QAAAA,KAAK,EAAEmD,GAAG,CAACmF;AAAb,OAtBA;AAuBVlE,MAAAA,EAAE,EAAE;AACF+G,QAAAA,KAAK,EAAEhI,GAAG,CAACiI,WADT;AAEFC,QAAAA,IAAI,EAAE,cAAS7G,MAAT,EAAiB;AACrBrB,UAAAA,GAAG,CAACmI,SAAJ,GAAgB,KAAhB;AACD,SAJC;AAKFC,QAAAA,KAAK,EAAEpI,GAAG,CAACqI,iBALT;AAMFC,QAAAA,OAAO,EAAE,CACPtI,GAAG,CAACuI,eADG,EAEP,UAASlH,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,MAAvB,EAA+B,EAA/B,EAAmCpH,MAAM,CAAClE,GAA1C,EAA+C,CAC7C,MAD6C,EAE7C,WAF6C,CAA/C,CAFF,EAME;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACqH,cAAP;;AACA1I,UAAAA,GAAG,CAAC2I,eAAJ,CAAoB,MAApB;AACD,SAdM,EAeP,UAAStH,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,IAAvB,EAA6B,EAA7B,EAAiCpH,MAAM,CAAClE,GAAxC,EAA6C,CAC3C,IAD2C,EAE3C,SAF2C,CAA7C,CAFF,EAME;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACqH,cAAP;;AACA1I,UAAAA,GAAG,CAAC2I,eAAJ,CAAoB,MAApB;AACD,SA3BM,EA4BP,UAAStH,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CACEnH,MAAM,CAACoH,OADT,EAEE,OAFF,EAGE,EAHF,EAIEpH,MAAM,CAAClE,GAJT,EAKE,OALF,CAFF,EASE;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACqH,cAAP;AACA,iBAAO1I,GAAG,CAAC4I,YAAJ,CAAiBvH,MAAjB,CAAP;AACD,SA3CM,EA4CP,UAASA,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,KAAvB,EAA8B,EAA9B,EAAkCpH,MAAM,CAAClE,GAAzC,EAA8C,CAC5C,KAD4C,EAE5C,QAF4C,CAA9C,CAFF,EAME;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACC,eAAP;AACAD,UAAAA,MAAM,CAACqH,cAAP;AACA1I,UAAAA,GAAG,CAACO,OAAJ,GAAc,KAAd;AACD,SAzDM,EA0DP,UAASc,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CACEnH,MAAM,CAACoH,OADT,EAEE,QAFF,EAGE,CAAC,CAAD,EAAI,EAAJ,CAHF,EAIEpH,MAAM,CAAClE,GAJT,EAKE,CAAC,WAAD,EAAc,QAAd,EAAwB,KAAxB,CALF,CAFF,EASE;AACA,mBAAO,IAAP;AACD;;AACD,iBAAO6C,GAAG,CAAC6I,aAAJ,CAAkBxH,MAAlB,CAAP;AACD,SAxEM,EAyEP,UAASA,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,KAAvB,EAA8B,CAA9B,EAAiCpH,MAAM,CAAClE,GAAxC,EAA6C,KAA7C,CAFF,EAGE;AACA,mBAAO,IAAP;AACD;;AACD6C,UAAAA,GAAG,CAACO,OAAJ,GAAc,KAAd;AACD,SAjFM,CANP;AAyFFuI,QAAAA,gBAAgB,EAAE9I,GAAG,CAAC+I,iBAzFpB;AA0FFC,QAAAA,iBAAiB,EAAEhJ,GAAG,CAAC+I,iBA1FrB;AA2FFE,QAAAA,cAAc,EAAEjJ,GAAG,CAAC+I,iBA3FlB;AA4FFG,QAAAA,KAAK,EAAE,CACL,UAAS7H,MAAT,EAAiB;AACf,cAAIA,MAAM,CAACuD,MAAP,CAAcuE,SAAlB,EAA6B;AAC3B;AACD;;AACDnJ,UAAAA,GAAG,CAACmF,KAAJ,GAAY9D,MAAM,CAACuD,MAAP,CAAc/H,KAA1B;AACD,SANI,EAOLmD,GAAG,CAACoJ,oBAPC;AA5FL;AAvBM,KAAV,CADN,GA+HIpJ,GAAG,CAACuH,EAAJ,EAlNN,CAPA,EA2NA,CA3NA,CADN,GA8NIvH,GAAG,CAACuH,EAAJ,EA/NN,EAgOEpH,EAAE,CACA,UADA,EAEA;AACEuG,MAAAA,GAAG,EAAE,WADP;AAEEhG,MAAAA,KAAK,EAAE;AAAE,oBAAYV,GAAG,CAACO;AAAlB,OAFT;AAGEwG,MAAAA,KAAK,EAAE;AACL/D,QAAAA,IAAI,EAAE,MADD;AAELqG,QAAAA,WAAW,EAAErJ,GAAG,CAACsJ,kBAFZ;AAGLnN,QAAAA,IAAI,EAAE6D,GAAG,CAAC7D,IAHL;AAILoN,QAAAA,EAAE,EAAEvJ,GAAG,CAACuJ,EAJH;AAKL1B,QAAAA,YAAY,EAAE7H,GAAG,CAAC8H,YAAJ,IAAoB9H,GAAG,CAAC6H,YALjC;AAMLX,QAAAA,IAAI,EAAElH,GAAG,CAACwG,UANL;AAOL3F,QAAAA,QAAQ,EAAEb,GAAG,CAACiH,cAPT;AAQLuC,QAAAA,QAAQ,EAAExJ,GAAG,CAACwJ,QART;AASL,0BAAkB,KATb;AAULC,QAAAA,QAAQ,EAAEzJ,GAAG,CAAC2D,QAAJ,IAAgB3D,GAAG,CAAC2H,UAApB,GAAiC,IAAjC,GAAwC;AAV7C,OAHT;AAeE1G,MAAAA,EAAE,EAAE;AAAE+G,QAAAA,KAAK,EAAEhI,GAAG,CAACiI,WAAb;AAA0BC,QAAAA,IAAI,EAAElI,GAAG,CAAC0J;AAApC,OAfN;AAgBEC,MAAAA,QAAQ,EAAE;AACRvB,QAAAA,KAAK,EAAE,eAAS/G,MAAT,EAAiB;AACtB,iBAAOrB,GAAG,CAAC4J,sBAAJ,CAA2BvI,MAA3B,CAAP;AACD,SAHO;AAIRiH,QAAAA,OAAO,EAAE,CACP,UAASjH,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,MAAvB,EAA+B,EAA/B,EAAmCpH,MAAM,CAAClE,GAA1C,EAA+C,CAC7C,MAD6C,EAE7C,WAF6C,CAA/C,CAFF,EAME;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACC,eAAP;AACAD,UAAAA,MAAM,CAACqH,cAAP;;AACA1I,UAAAA,GAAG,CAAC2I,eAAJ,CAAoB,MAApB;AACD,SAdM,EAeP,UAAStH,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,IAAvB,EAA6B,EAA7B,EAAiCpH,MAAM,CAAClE,GAAxC,EAA6C,CAC3C,IAD2C,EAE3C,SAF2C,CAA7C,CAFF,EAME;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACC,eAAP;AACAD,UAAAA,MAAM,CAACqH,cAAP;;AACA1I,UAAAA,GAAG,CAAC2I,eAAJ,CAAoB,MAApB;AACD,SA5BM,EA6BP,UAAStH,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,OAAvB,EAAgC,EAAhC,EAAoCpH,MAAM,CAAClE,GAA3C,EAAgD,OAAhD,CAFF,EAGE;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACqH,cAAP;AACA,iBAAO1I,GAAG,CAAC4I,YAAJ,CAAiBvH,MAAjB,CAAP;AACD,SAtCM,EAuCP,UAASA,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,KAAvB,EAA8B,EAA9B,EAAkCpH,MAAM,CAAClE,GAAzC,EAA8C,CAC5C,KAD4C,EAE5C,QAF4C,CAA9C,CAFF,EAME;AACA,mBAAO,IAAP;AACD;;AACDkE,UAAAA,MAAM,CAACC,eAAP;AACAD,UAAAA,MAAM,CAACqH,cAAP;AACA1I,UAAAA,GAAG,CAACO,OAAJ,GAAc,KAAd;AACD,SApDM,EAqDP,UAASc,MAAT,EAAiB;AACf,cACE,EAAE,YAAYA,MAAd,KACArB,GAAG,CAACwI,EAAJ,CAAOnH,MAAM,CAACoH,OAAd,EAAuB,KAAvB,EAA8B,CAA9B,EAAiCpH,MAAM,CAAClE,GAAxC,EAA6C,KAA7C,CAFF,EAGE;AACA,mBAAO,IAAP;AACD;;AACD6C,UAAAA,GAAG,CAACO,OAAJ,GAAc,KAAd;AACD,SA7DM,CAJD;AAmERsJ,QAAAA,KAAK,EAAE,eAASxI,MAAT,EAAiB;AACtB,iBAAOrB,GAAG,CAAC4J,sBAAJ,CAA2BvI,MAA3B,CAAP;AACD,SArEO;AAsERH,QAAAA,UAAU,EAAE,oBAASG,MAAT,EAAiB;AAC3BrB,UAAAA,GAAG,CAAC8J,aAAJ,GAAoB,IAApB;AACD,SAxEO;AAyERC,QAAAA,UAAU,EAAE,oBAAS1I,MAAT,EAAiB;AAC3BrB,UAAAA,GAAG,CAAC8J,aAAJ,GAAoB,KAApB;AACD;AA3EO,OAhBZ;AA6FEE,MAAAA,KAAK,EAAE;AACLnN,QAAAA,KAAK,EAAEmD,GAAG,CAACiK,aADN;AAELC,QAAAA,QAAQ,EAAE,kBAASC,GAAT,EAAc;AACtBnK,UAAAA,GAAG,CAACiK,aAAJ,GAAoBE,GAApB;AACD,SAJI;AAKL3J,QAAAA,UAAU,EAAE;AALP;AA7FT,KAFA,EAuGA,CACER,GAAG,CAACoK,MAAJ,CAAWC,MAAX,GACIlK,EAAE,CAAC,UAAD,EAAa;AAAEmK,MAAAA,IAAI,EAAE;AAAR,KAAb,EAAiC,CAACtK,GAAG,CAACwB,EAAJ,CAAO,QAAP,CAAD,CAAjC,EAAqD,CAArD,CADN,GAEIxB,GAAG,CAACuH,EAAJ,EAHN,EAIEpH,EAAE,CAAC,UAAD,EAAa;AAAEmK,MAAAA,IAAI,EAAE;AAAR,KAAb,EAAiC,CACjCnK,EAAE,CAAC,GAAD,EAAM;AACNE,MAAAA,UAAU,EAAE,CACV;AACElE,QAAAA,IAAI,EAAE,MADR;AAEEmE,QAAAA,OAAO,EAAE,QAFX;AAGEzD,QAAAA,KAAK,EAAE,CAACmD,GAAG,CAACuK,SAHd;AAIE/J,QAAAA,UAAU,EAAE;AAJd,OADU,CADN;AASNE,MAAAA,KAAK,EAAE,CACL,kBADK,EAEL,gBAFK,EAGL,aAAaV,GAAG,CAACwK,SAHZ;AATD,KAAN,CAD+B,EAgBjCxK,GAAG,CAACuK,SAAJ,GACIpK,EAAE,CAAC,GAAD,EAAM;AACNM,MAAAA,WAAW,EACT,sDAFI;AAGNQ,MAAAA,EAAE,EAAE;AAAEG,QAAAA,KAAK,EAAEpB,GAAG,CAACyK;AAAb;AAHE,KAAN,CADN,GAMIzK,GAAG,CAACuH,EAAJ,EAtB6B,CAAjC,CAJJ,CAvGA,EAoIA,CApIA,CAhOJ,EAsWEpH,EAAE,CACA,YADA,EAEA;AACE4G,MAAAA,KAAK,EAAE;AAAE5K,QAAAA,IAAI,EAAE;AAAR,OADT;AAEE8E,MAAAA,EAAE,EAAE;AACF,wBAAgBjB,GAAG,CAAC0K,eADlB;AAEF,uBAAe1K,GAAG,CAAC2K;AAFjB;AAFN,KAFA,EASA,CACExK,EAAE,CACA,gBADA,EAEA;AACEE,MAAAA,UAAU,EAAE,CACV;AACElE,QAAAA,IAAI,EAAE,MADR;AAEEmE,QAAAA,OAAO,EAAE,QAFX;AAGEzD,QAAAA,KAAK,EAAEmD,GAAG,CAACO,OAAJ,IAAeP,GAAG,CAAC4K,SAAJ,KAAkB,KAH1C;AAIEpK,QAAAA,UAAU,EAAE;AAJd,OADU,CADd;AASEkG,MAAAA,GAAG,EAAE,QATP;AAUEK,MAAAA,KAAK,EAAE;AAAE,0BAAkB/G,GAAG,CAAC6K;AAAxB;AAVT,KAFA,EAcA,CACE1K,EAAE,CACA,cADA,EAEA;AACEE,MAAAA,UAAU,EAAE,CACV;AACElE,QAAAA,IAAI,EAAE,MADR;AAEEmE,QAAAA,OAAO,EAAE,QAFX;AAGEzD,QAAAA,KAAK,EAAEmD,GAAG,CAACxB,OAAJ,CAAYsF,MAAZ,GAAqB,CAArB,IAA0B,CAAC9D,GAAG,CAAC8K,OAHxC;AAIEtK,QAAAA,UAAU,EAAE;AAJd,OADU,CADd;AASEkG,MAAAA,GAAG,EAAE,WATP;AAUEhG,MAAAA,KAAK,EAAE;AACL,oBACE,CAACV,GAAG,CAAC+K,WAAL,IACA/K,GAAG,CAACmF,KADJ,IAEAnF,GAAG,CAACsF,oBAAJ,KAA6B;AAJ1B,OAVT;AAgBEyB,MAAAA,KAAK,EAAE;AACLiE,QAAAA,GAAG,EAAE,IADA;AAEL,sBAAc,0BAFT;AAGL,sBAAc;AAHT;AAhBT,KAFA,EAwBA,CACEhL,GAAG,CAACiL,aAAJ,GACI9K,EAAE,CAAC,WAAD,EAAc;AACd4G,MAAAA,KAAK,EAAE;AAAElK,QAAAA,KAAK,EAAEmD,GAAG,CAACmF,KAAb;AAAoBrC,QAAAA,OAAO,EAAE;AAA7B;AADO,KAAd,CADN,GAII9C,GAAG,CAACuH,EAAJ,EALN,EAMEvH,GAAG,CAACwB,EAAJ,CAAO,SAAP,CANF,CAxBA,EAgCA,CAhCA,CADJ,EAmCExB,GAAG,CAAC4K,SAAJ,KACC,CAAC5K,GAAG,CAAC+K,WAAL,IACC/K,GAAG,CAAC8K,OADL,IAEE9K,GAAG,CAAC+K,WAAJ,IAAmB/K,GAAG,CAACxB,OAAJ,CAAYsF,MAAZ,KAAuB,CAH7C,IAII,CACE9D,GAAG,CAACoK,MAAJ,CAAWc,KAAX,GACIlL,GAAG,CAACwB,EAAJ,CAAO,OAAP,CADJ,GAEIrB,EAAE,CAAC,GAAD,EAAM;AAAEM,MAAAA,WAAW,EAAE;AAAf,KAAN,EAAoD,CACpDT,GAAG,CAACyB,EAAJ,CACE,iBACEzB,GAAG,CAAC0B,EAAJ,CAAO1B,GAAG,CAAC4K,SAAX,CADF,GAEE,YAHJ,CADoD,CAApD,CAHR,CAJJ,GAeI5K,GAAG,CAACuH,EAAJ,EAlDN,CAdA,EAkEA,CAlEA,CADJ,CATA,EA+EA,CA/EA,CAtWJ,CApBO,EA4cP,CA5cO,CAAT;AA8cD,GAldD;;AAmdA,MAAIrJ,eAAe,GAAG,EAAtB;AACAD,EAAAA,MAAM,CAAC2D,aAAP,GAAuB,IAAvB,CA1dkE,CA6dlE;AAEA;;AACA,MAAIC,QAAQ,GAAGlG,mBAAmB,CAAC,CAAD,CAAlC;;AACA,MAAImG,eAAe,GAAG,aAAanG,mBAAmB,CAAC0B,CAApB,CAAsBwE,QAAtB,CAAnC,CAjekE,CAmelE;;;AACA,MAAIsJ,MAAM,GAAGxP,mBAAmB,CAAC,EAAD,CAAhC;;AACA,MAAIyP,aAAa,GAAG,aAAazP,mBAAmB,CAAC0B,CAApB,CAAsB8N,MAAtB,CAAjC,CArekE,CAuelE;;;AACA,MAAIE,OAAO,GAAG1P,mBAAmB,CAAC,CAAD,CAAjC;;AACA,MAAI2P,cAAc,GAAG,aAAa3P,mBAAmB,CAAC0B,CAApB,CAAsBgO,OAAtB,CAAlC,CAzekE,CA2elE;;;AACA,MAAIE,MAAM,GAAG5P,mBAAmB,CAAC,EAAD,CAAhC;;AACA,MAAI6P,aAAa,GAAG,aAAa7P,mBAAmB,CAAC0B,CAApB,CAAsBkO,MAAtB,CAAjC,CA7ekE,CA+elE;;;AACA,MAAIE,mDAAmD,GAAG,SAAtDA,mDAAsD,GAAW;AACnE,QAAIzL,GAAG,GAAG,IAAV;;AACA,QAAIC,EAAE,GAAGD,GAAG,CAACE,cAAb;;AACA,QAAIC,EAAE,GAAGH,GAAG,CAACI,KAAJ,CAAUD,EAAV,IAAgBF,EAAzB;;AACA,WAAOE,EAAE,CACP,KADO,EAEP;AACEM,MAAAA,WAAW,EAAE,8BADf;AAEEC,MAAAA,KAAK,EAAE,CAAC;AAAE,uBAAeV,GAAG,CAAC0L,OAAJ,CAAY/H;AAA7B,OAAD,EAA0C3D,GAAG,CAAC2L,WAA9C,CAFT;AAGEhF,MAAAA,KAAK,EAAE;AAAEiF,QAAAA,QAAQ,EAAE5L,GAAG,CAAC4L;AAAhB;AAHT,KAFO,EAOP,CAAC5L,GAAG,CAACwB,EAAJ,CAAO,SAAP,CAAD,CAPO,EAQP,CARO,CAAT;AAUD,GAdD;;AAeA,MAAIqK,4DAA4D,GAAG,EAAnE;AACAJ,EAAAA,mDAAmD,CAAC7J,aAApD,GAAoE,IAApE,CAhgBkE,CAmgBlE;AAEA;;AACA,MAAIkK,WAAW,GAAGnQ,mBAAmB,CAAC,CAAD,CAArC;;AACA,MAAIoQ,kBAAkB,GAAG,aAAapQ,mBAAmB,CAAC0B,CAApB,CAAsByO,WAAtB,CAAtC,CAvgBkE,CAygBlE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;;AAA6B,MAAIE,uCAAuC,GAAI;AAC1E7P,IAAAA,IAAI,EAAE,kBADoE;AAG1EoG,IAAAA,aAAa,EAAE,kBAH2D;AAK1EF,IAAAA,MAAM,EAAE,CAAC0J,kBAAkB,CAACzJ,CAApB,CALkE;AAO1EG,IAAAA,KAAK,EAAE;AACLwJ,MAAAA,SAAS,EAAE;AACThJ,QAAAA,OAAO,EAAE;AADA,OADN;AAKLiJ,MAAAA,iBAAiB,EAAE;AACjBjJ,QAAAA,OAAO,EAAE;AADQ,OALd;AASLkJ,MAAAA,aAAa,EAAE;AACblJ,QAAAA,OAAO,EAAE,SAASmJ,QAAT,GAAoB;AAC3B,iBAAO;AACLC,YAAAA,eAAe,EAAE;AADZ,WAAP;AAGD;AALY,OATV;AAiBLC,MAAAA,YAAY,EAAE;AACZrJ,QAAAA,OAAO,EAAE;AADG,OAjBT;AAqBLsJ,MAAAA,YAAY,EAAE;AACZvJ,QAAAA,IAAI,EAAED,OADM;AAEZE,QAAAA,OAAO,EAAE;AAFG;AArBT,KAPmE;AAkC1EC,IAAAA,IAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,aAAO;AACL0I,QAAAA,QAAQ,EAAE;AADL,OAAP;AAGD,KAtCyE;AAyC1EvI,IAAAA,QAAQ,EAAE;AACRsI,MAAAA,WAAW,EAAE,SAASA,WAAT,GAAuB;AAClC,eAAO,KAAKD,OAAL,CAAaC,WAApB;AACD;AAHO,KAzCgE;AA+C1E3H,IAAAA,KAAK,EAAE;AACL,4BAAsB,SAASwI,iBAAT,GAA6B;AACjD,aAAKZ,QAAL,GAAgB,KAAKF,OAAL,CAAae,GAAb,CAAiBC,qBAAjB,GAAyC7F,KAAzC,GAAiD,IAAjE;AACD;AAHI,KA/CmE;AAqD1E8F,IAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B,UAAIC,KAAK,GAAG,IAAZ;;AAEA,WAAKC,YAAL,GAAoB,KAAKnB,OAAL,CAAaoB,KAAb,CAAmBC,SAAnB,CAA6BN,GAAjD;AACA,WAAKf,OAAL,CAAasB,SAAb,GAAyB,KAAKA,SAAL,GAAiB,KAAKP,GAA/C;AACA,WAAK/G,GAAL,CAAS,cAAT,EAAyB,YAAY;AACnC,YAAIkH,KAAK,CAAClB,OAAN,CAAcnL,OAAlB,EAA2BqM,KAAK,CAACK,YAAN;AAC5B,OAFD;AAGA,WAAKvH,GAAL,CAAS,eAAT,EAA0B,KAAKwH,aAA/B;AACD;AA9DyE,GAA/C,CAthBqC,CAslBlE;;AACC;;AAA6B,MAAIC,2CAA2C,GAAInB,uCAAnD,CAvlBoC,CAwlBlE;;AACA,MAAI9F,mBAAmB,GAAGvK,mBAAmB,CAAC,CAAD,CAA7C,CAzlBkE,CA2lBlE;;AAMA;;;AAEA,MAAIwK,SAAS,GAAG7J,MAAM,CAAC4J,mBAAmB,CAAC;AAAI;AAAL,GAApB,CAAN,CACdiH,2CADc,EAEd1B,mDAFc,EAGdI,4DAHc,EAId,KAJc,EAKd,IALc,EAMd,IANc,EAOd,IAPc,CAAhB;AAWA;;AACA,MAAI,KAAJ,EAAW;AAAE,QAAIzF,GAAJ;AAAU;;AACvBD,EAAAA,SAAS,CAAC3H,OAAV,CAAkB6H,MAAlB,GAA2B,yCAA3B;AACA;;AAA6B,MAAI+G,eAAe,GAAIjH,SAAS,CAAC3K,OAAjC,CAjnBqC,CAknBlE;;AACA,MAAI8K,UAAU,GAAG3K,mBAAmB,CAAC,EAAD,CAApC,CAnnBkE,CAqnBlE;;;AACA,MAAI0R,IAAI,GAAG1R,mBAAmB,CAAC,EAAD,CAA9B;;AACA,MAAI2R,WAAW,GAAG,aAAa3R,mBAAmB,CAAC0B,CAApB,CAAsBgQ,IAAtB,CAA/B,CAvnBkE,CAynBlE;;;AACA,MAAIE,UAAU,GAAG5R,mBAAmB,CAAC,EAAD,CAApC;;AACA,MAAI6R,iBAAiB,GAAG,aAAa7R,mBAAmB,CAAC0B,CAApB,CAAsBkQ,UAAtB,CAArC,CA3nBkE,CA6nBlE;;;AACA,MAAIE,SAAS,GAAG9R,mBAAmB,CAAC,EAAD,CAAnC;;AACA,MAAI+R,gBAAgB,GAAG,aAAa/R,mBAAmB,CAAC0B,CAApB,CAAsBoQ,SAAtB,CAApC,CA/nBkE,CAioBlE;;;AACA,MAAIE,aAAa,GAAGhS,mBAAmB,CAAC,EAAD,CAAvC;;AACA,MAAIiS,oBAAoB,GAAG,aAAajS,mBAAmB,CAAC0B,CAApB,CAAsBsQ,aAAtB,CAAxC,CAnoBkE,CAqoBlE;;;AACA,MAAIE,aAAa,GAAGlS,mBAAmB,CAAC,EAAD,CAAvC,CAtoBkE,CAwoBlE;;;AACA,MAAImS,WAAW,GAAGnS,mBAAmB,CAAC,EAAD,CAArC,CAzoBkE,CA2oBlE;;;AACA,MAAIoS,iBAAiB,GAAGpS,mBAAmB,CAAC,EAAD,CAA3C;;AACA,MAAIqS,wBAAwB,GAAG,aAAarS,mBAAmB,CAAC0B,CAApB,CAAsB0Q,iBAAtB,CAA5C,CA7oBkE,CA+oBlE;;;AACA,MAAIhM,KAAK,GAAGpG,mBAAmB,CAAC,CAAD,CAA/B,CAhpBkE,CAkpBlE;;AACA;;;AAA6B,MAAIsS,gBAAgB,GAAI;AACnD/K,IAAAA,IAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,aAAO;AACLgL,QAAAA,WAAW,EAAE,CAAC;AADT,OAAP;AAGD,KALkD;AAQnD7K,IAAAA,QAAQ,EAAE;AACR8K,MAAAA,kBAAkB,EAAE,SAASA,kBAAT,GAA8B;AAChD,eAAO,KAAK3P,OAAL,CAAa4P,MAAb,CAAoB,UAAUC,MAAV,EAAkB;AAC3C,iBAAOA,MAAM,CAAC9N,OAAd;AACD,SAFM,EAEJ+N,KAFI,CAEE,UAAUD,MAAV,EAAkB;AACzB,iBAAOA,MAAM,CAACxN,QAAd;AACD,SAJM,CAAP;AAKD;AAPO,KARyC;AAkBnDmD,IAAAA,KAAK,EAAE;AACLiB,MAAAA,UAAU,EAAE,SAASA,UAAT,CAAoBd,GAApB,EAAyB;AACnC,YAAIyI,KAAK,GAAG,IAAZ;;AAEA,YAAI,OAAOzI,GAAP,KAAe,QAAf,IAA2BA,GAAG,GAAG,CAAC,CAAtC,EAAyC;AACvC,eAAK+J,WAAL,GAAmB,KAAK1P,OAAL,CAAa2F,GAAb,KAAqB,EAAxC;AACD;;AACD,aAAK3F,OAAL,CAAa+P,OAAb,CAAqB,UAAUF,MAAV,EAAkB;AACrCA,UAAAA,MAAM,CAACrN,KAAP,GAAe4L,KAAK,CAACsB,WAAN,KAAsBG,MAArC;AACD,SAFD;AAGD;AAVI,KAlB4C;AA+BnD9J,IAAAA,OAAO,EAAE;AACPoE,MAAAA,eAAe,EAAE,SAASA,eAAT,CAAyB6F,SAAzB,EAAoC;AACnD,YAAIC,MAAM,GAAG,IAAb;;AAEA,YAAI,CAAC,KAAKlO,OAAV,EAAmB;AACjB,eAAKA,OAAL,GAAe,IAAf;AACA;AACD;;AACD,YAAI,KAAK/B,OAAL,CAAasF,MAAb,KAAwB,CAAxB,IAA6B,KAAKwB,oBAAL,KAA8B,CAA/D,EAAkE;;AAClE,YAAI,CAAC,KAAK6I,kBAAV,EAA8B;AAC5B,cAAIK,SAAS,KAAK,MAAlB,EAA0B;AACxB,iBAAKvJ,UAAL;;AACA,gBAAI,KAAKA,UAAL,KAAoB,KAAKzG,OAAL,CAAasF,MAArC,EAA6C;AAC3C,mBAAKmB,UAAL,GAAkB,CAAlB;AACD;AACF,WALD,MAKO,IAAIuJ,SAAS,KAAK,MAAlB,EAA0B;AAC/B,iBAAKvJ,UAAL;;AACA,gBAAI,KAAKA,UAAL,GAAkB,CAAtB,EAAyB;AACvB,mBAAKA,UAAL,GAAkB,KAAKzG,OAAL,CAAasF,MAAb,GAAsB,CAAxC;AACD;AACF;;AACD,cAAIuK,MAAM,GAAG,KAAK7P,OAAL,CAAa,KAAKyG,UAAlB,CAAb;;AACA,cAAIoJ,MAAM,CAACxN,QAAP,KAAoB,IAApB,IAA4BwN,MAAM,CAACvN,aAAP,KAAyB,IAArD,IAA6D,CAACuN,MAAM,CAAC9N,OAAzE,EAAkF;AAChF,iBAAKoI,eAAL,CAAqB6F,SAArB;AACD;;AACD,eAAKE,SAAL,CAAe,YAAY;AACzB,mBAAOD,MAAM,CAACE,cAAP,CAAsBF,MAAM,CAACP,WAA7B,CAAP;AACD,WAFD;AAGD;AACF;AA7BM;AA/B0C,GAAxB,CAnpBqC,CAktBlE;;AACA,MAAIU,OAAO,GAAGjT,mBAAmB,CAAC,EAAD,CAAjC,CAntBkE,CAqtBlE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA;;;AAA6B,MAAIkT,8BAA8B,GAAI;AACjExM,IAAAA,MAAM,EAAE,CAACP,eAAe,CAACQ,CAAjB,EAAoBgJ,cAAc,CAAChJ,CAAnC,EAAsC8I,aAAa,GAAG,WAAH,CAAnD,EAAoE6C,gBAApE,CADyD;AAGjE9R,IAAAA,IAAI,EAAE,UAH2D;AAKjEoG,IAAAA,aAAa,EAAE,UALkD;AAOjEC,IAAAA,MAAM,EAAE;AACNsM,MAAAA,MAAM,EAAE;AACN7L,QAAAA,OAAO,EAAE;AADH,OADF;AAKN8L,MAAAA,UAAU,EAAE;AACV9L,QAAAA,OAAO,EAAE;AADC;AALN,KAPyD;AAiBjE+L,IAAAA,OAAO,EAAE,SAASA,OAAT,GAA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","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 61);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 1 */,\n/* 2 */,\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/vue-popper\");\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/locale\");\n\n/***/ }),\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input\");\n\n/***/ }),\n/* 11 */,\n/* 12 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/clickoutside\");\n\n/***/ }),\n/* 13 */,\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/scrollbar\");\n\n/***/ }),\n/* 15 */,\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/resize-event\");\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce/debounce\");\n\n/***/ }),\n/* 18 */,\n/* 19 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/locale\");\n\n/***/ }),\n/* 20 */,\n/* 21 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/shared\");\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/focus\");\n\n/***/ }),\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */,\n/* 30 */,\n/* 31 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scroll-into-view\");\n\n/***/ }),\n/* 32 */,\n/* 33 */,\n/* 34 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=7a44c642&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-dropdown__item\",\n class: {\n selected: _vm.itemSelected,\n \"is-disabled\": _vm.disabled || _vm.groupDisabled || _vm.limitReached,\n hover: _vm.hover\n },\n on: {\n mouseenter: _vm.hoverItem,\n click: function($event) {\n $event.stopPropagation()\n return _vm.selectOptionClick($event)\n }\n }\n },\n [_vm._t(\"default\", [_c(\"span\", [_vm._v(_vm._s(_vm.currentLabel))])])],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=7a44c642&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var optionvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOption',\n\n componentName: 'ElOption',\n\n inject: ['select'],\n\n props: {\n value: {\n required: true\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false\n };\n },\n\n\n computed: {\n isObject: function isObject() {\n return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]';\n },\n currentLabel: function currentLabel() {\n return this.label || (this.isObject ? '' : this.value);\n },\n currentValue: function currentValue() {\n return this.value || this.label || '';\n },\n itemSelected: function itemSelected() {\n if (!this.select.multiple) {\n return this.isEqual(this.value, this.select.value);\n } else {\n return this.contains(this.select.value, this.value);\n }\n },\n limitReached: function limitReached() {\n if (this.select.multiple) {\n return !this.itemSelected && (this.select.value || []).length >= this.select.multipleLimit && this.select.multipleLimit > 0;\n } else {\n return false;\n }\n }\n },\n\n watch: {\n currentLabel: function currentLabel() {\n if (!this.created && !this.select.remote) this.dispatch('ElSelect', 'setSelected');\n },\n value: function value(val, oldVal) {\n var _select = this.select,\n remote = _select.remote,\n valueKey = _select.valueKey;\n\n if (!this.created && !remote) {\n if (valueKey && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && (typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) === 'object' && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n this.dispatch('ElSelect', 'setSelected');\n }\n }\n },\n\n methods: {\n isEqual: function isEqual(a, b) {\n if (!this.isObject) {\n return a === b;\n } else {\n var valueKey = this.select.valueKey;\n return Object(util_[\"getValueByPath\"])(a, valueKey) === Object(util_[\"getValueByPath\"])(b, valueKey);\n }\n },\n contains: function contains() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var target = arguments[1];\n\n if (!this.isObject) {\n return arr && arr.indexOf(target) > -1;\n } else {\n var valueKey = this.select.valueKey;\n return arr && arr.some(function (item) {\n return Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(target, valueKey);\n });\n }\n },\n handleGroupDisabled: function handleGroupDisabled(val) {\n this.groupDisabled = val;\n },\n hoverItem: function hoverItem() {\n if (!this.disabled && !this.groupDisabled) {\n this.select.hoverIndex = this.select.options.indexOf(this);\n }\n },\n selectOptionClick: function selectOptionClick() {\n if (this.disabled !== true && this.groupDisabled !== true) {\n this.dispatch('ElSelect', 'handleOptionClick', [this, true]);\n }\n },\n queryChange: function queryChange(query) {\n this.visible = new RegExp(Object(util_[\"escapeRegexpString\"])(query), 'i').test(this.currentLabel) || this.created;\n if (!this.visible) {\n this.select.filteredOptionsCount--;\n }\n }\n },\n\n created: function created() {\n this.select.options.push(this);\n this.select.cachedOptions.push(this);\n this.select.optionsCount++;\n this.select.filteredOptionsCount++;\n\n this.$on('queryChange', this.queryChange);\n this.$on('handleGroupDisabled', this.handleGroupDisabled);\n },\n beforeDestroy: function beforeDestroy() {\n var _select2 = this.select,\n selected = _select2.selected,\n multiple = _select2.multiple;\n\n var selectedOptions = multiple ? selected : [selected];\n var index = this.select.cachedOptions.indexOf(this);\n var selectedIndex = selectedOptions.indexOf(this);\n\n // if option is not selected, remove it from cache\n if (index > -1 && selectedIndex < 0) {\n this.select.cachedOptions.splice(index, 1);\n }\n this.select.onOptionDestroy(this.select.options.indexOf(this));\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_optionvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/option.vue\"\n/* harmony default export */ var src_option = __webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n/* 35 */,\n/* 36 */,\n/* 37 */,\n/* 38 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/tag\");\n\n/***/ }),\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */,\n/* 43 */,\n/* 44 */,\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */,\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */,\n/* 55 */,\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */,\n/* 61 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleClose,\n expression: \"handleClose\"\n }\n ],\n staticClass: \"el-select\",\n class: [_vm.selectSize ? \"el-select--\" + _vm.selectSize : \"\"],\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.toggleMenu($event)\n }\n }\n },\n [\n _vm.multiple\n ? _c(\n \"div\",\n {\n ref: \"tags\",\n staticClass: \"el-select__tags\",\n style: { \"max-width\": _vm.inputWidth - 32 + \"px\", width: \"100%\" }\n },\n [\n _vm.collapseTags && _vm.selected.length\n ? _c(\n \"span\",\n [\n _c(\n \"el-tag\",\n {\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: _vm.selected[0].hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, _vm.selected[0])\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(_vm.selected[0].currentLabel))\n ])\n ]\n ),\n _vm.selected.length > 1\n ? _c(\n \"el-tag\",\n {\n attrs: {\n closable: false,\n size: _vm.collapseTagSize,\n type: \"info\",\n \"disable-transitions\": \"\"\n }\n },\n [\n _c(\n \"span\",\n { staticClass: \"el-select__tags-text\" },\n [_vm._v(\"+ \" + _vm._s(_vm.selected.length - 1))]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n !_vm.collapseTags\n ? _c(\n \"transition-group\",\n { on: { \"after-leave\": _vm.resetInputHeight } },\n _vm._l(_vm.selected, function(item) {\n return _c(\n \"el-tag\",\n {\n key: _vm.getValueKey(item),\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: item.hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, item)\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(item.currentLabel))\n ])\n ]\n )\n }),\n 1\n )\n : _vm._e(),\n _vm.filterable\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.query,\n expression: \"query\"\n }\n ],\n ref: \"input\",\n staticClass: \"el-select__input\",\n class: [_vm.selectSize ? \"is-\" + _vm.selectSize : \"\"],\n style: {\n \"flex-grow\": \"1\",\n width: _vm.inputLength / (_vm.inputWidth - 32) + \"%\",\n \"max-width\": _vm.inputWidth - 42 + \"px\"\n },\n attrs: {\n type: \"text\",\n disabled: _vm.selectDisabled,\n autocomplete: _vm.autoComplete || _vm.autocomplete\n },\n domProps: { value: _vm.query },\n on: {\n focus: _vm.handleFocus,\n blur: function($event) {\n _vm.softFocus = false\n },\n keyup: _vm.managePlaceholder,\n keydown: [\n _vm.resetInputState,\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.navigateOptions(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.navigateOptions(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"delete\",\n [8, 46],\n $event.key,\n [\"Backspace\", \"Delete\", \"Del\"]\n )\n ) {\n return null\n }\n return _vm.deletePrevTag($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n compositionstart: _vm.handleComposition,\n compositionupdate: _vm.handleComposition,\n compositionend: _vm.handleComposition,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.query = $event.target.value\n },\n _vm.debouncedQueryChange\n ]\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-input\",\n {\n ref: \"reference\",\n class: { \"is-focus\": _vm.visible },\n attrs: {\n type: \"text\",\n placeholder: _vm.currentPlaceholder,\n name: _vm.name,\n id: _vm.id,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n size: _vm.selectSize,\n disabled: _vm.selectDisabled,\n readonly: _vm.readonly,\n \"validate-event\": false,\n tabindex: _vm.multiple && _vm.filterable ? \"-1\" : null\n },\n on: { focus: _vm.handleFocus, blur: _vm.handleBlur },\n nativeOn: {\n keyup: function($event) {\n return _vm.debouncedOnInputChange($event)\n },\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.navigateOptions(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.navigateOptions(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n paste: function($event) {\n return _vm.debouncedOnInputChange($event)\n },\n mouseenter: function($event) {\n _vm.inputHovering = true\n },\n mouseleave: function($event) {\n _vm.inputHovering = false\n }\n },\n model: {\n value: _vm.selectedLabel,\n callback: function($$v) {\n _vm.selectedLabel = $$v\n },\n expression: \"selectedLabel\"\n }\n },\n [\n _vm.$slots.prefix\n ? _c(\"template\", { slot: \"prefix\" }, [_vm._t(\"prefix\")], 2)\n : _vm._e(),\n _c(\"template\", { slot: \"suffix\" }, [\n _c(\"i\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.showClose,\n expression: \"!showClose\"\n }\n ],\n class: [\n \"el-select__caret\",\n \"el-input__icon\",\n \"el-icon-\" + _vm.iconClass\n ]\n }),\n _vm.showClose\n ? _c(\"i\", {\n staticClass:\n \"el-select__caret el-input__icon el-icon-circle-close\",\n on: { click: _vm.handleClearClick }\n })\n : _vm._e()\n ])\n ],\n 2\n ),\n _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"before-enter\": _vm.handleMenuEnter,\n \"after-leave\": _vm.doDestroy\n }\n },\n [\n _c(\n \"el-select-menu\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible && _vm.emptyText !== false,\n expression: \"visible && emptyText !== false\"\n }\n ],\n ref: \"popper\",\n attrs: { \"append-to-body\": _vm.popperAppendToBody }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.options.length > 0 && !_vm.loading,\n expression: \"options.length > 0 && !loading\"\n }\n ],\n ref: \"scrollbar\",\n class: {\n \"is-empty\":\n !_vm.allowCreate &&\n _vm.query &&\n _vm.filteredOptionsCount === 0\n },\n attrs: {\n tag: \"ul\",\n \"wrap-class\": \"el-select-dropdown__wrap\",\n \"view-class\": \"el-select-dropdown__list\"\n }\n },\n [\n _vm.showNewOption\n ? _c(\"el-option\", {\n attrs: { value: _vm.query, created: \"\" }\n })\n : _vm._e(),\n _vm._t(\"default\")\n ],\n 2\n ),\n _vm.emptyText &&\n (!_vm.allowCreate ||\n _vm.loading ||\n (_vm.allowCreate && _vm.options.length === 0))\n ? [\n _vm.$slots.empty\n ? _vm._t(\"empty\")\n : _c(\"p\", { staticClass: \"el-select-dropdown__empty\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.emptyText) +\n \"\\n \"\n )\n ])\n ]\n : _vm._e()\n ],\n 2\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __webpack_require__(22);\nvar focus_default = /*#__PURE__*/__webpack_require__.n(focus_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __webpack_require__(6);\nvar locale_default = /*#__PURE__*/__webpack_require__.n(locale_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __webpack_require__(10);\nvar input_default = /*#__PURE__*/__webpack_require__.n(input_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\nvar select_dropdownvue_type_template_id_06828748_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-select-dropdown el-popper\",\n class: [{ \"is-multiple\": _vm.$parent.multiple }, _vm.popperClass],\n style: { minWidth: _vm.minWidth }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar select_dropdownvue_type_template_id_06828748_staticRenderFns = []\nselect_dropdownvue_type_template_id_06828748_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __webpack_require__(5);\nvar vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var select_dropdownvue_type_script_lang_js_ = ({\n name: 'ElSelectDropdown',\n\n componentName: 'ElSelectDropdown',\n\n mixins: [vue_popper_default.a],\n\n props: {\n placement: {\n default: 'bottom-start'\n },\n\n boundariesPadding: {\n default: 0\n },\n\n popperOptions: {\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n },\n\n visibleArrow: {\n default: true\n },\n\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n minWidth: ''\n };\n },\n\n\n computed: {\n popperClass: function popperClass() {\n return this.$parent.popperClass;\n }\n },\n\n watch: {\n '$parent.inputWidth': function $parentInputWidth() {\n this.minWidth = this.$parent.$el.getBoundingClientRect().width + 'px';\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n this.referenceElm = this.$parent.$refs.reference.$el;\n this.$parent.popperElm = this.popperElm = this.$el;\n this.$on('updatePopper', function () {\n if (_this.$parent.visible) _this.updatePopper();\n });\n this.$on('destroyPopper', this.destroyPopper);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_select_dropdownvue_type_script_lang_js_ = (select_dropdownvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_select_dropdownvue_type_script_lang_js_,\n select_dropdownvue_type_template_id_06828748_render,\n select_dropdownvue_type_template_id_06828748_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/select-dropdown.vue\"\n/* harmony default export */ var select_dropdown = (component.exports);\n// EXTERNAL MODULE: ./packages/select/src/option.vue + 4 modules\nvar src_option = __webpack_require__(34);\n\n// EXTERNAL MODULE: external \"element-ui/lib/tag\"\nvar tag_ = __webpack_require__(38);\nvar tag_default = /*#__PURE__*/__webpack_require__.n(tag_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __webpack_require__(14);\nvar scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);\n\n// EXTERNAL MODULE: external \"throttle-debounce/debounce\"\nvar debounce_ = __webpack_require__(17);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/clickoutside\"\nvar clickoutside_ = __webpack_require__(12);\nvar clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/resize-event\"\nvar resize_event_ = __webpack_require__(16);\n\n// EXTERNAL MODULE: external \"element-ui/lib/locale\"\nvar lib_locale_ = __webpack_require__(19);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scroll-into-view\"\nvar scroll_into_view_ = __webpack_require__(31);\nvar scroll_into_view_default = /*#__PURE__*/__webpack_require__.n(scroll_into_view_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./packages/select/src/navigation-mixin.js\n/* harmony default export */ var navigation_mixin = ({\n data: function data() {\n return {\n hoverOption: -1\n };\n },\n\n\n computed: {\n optionsAllDisabled: function optionsAllDisabled() {\n return this.options.filter(function (option) {\n return option.visible;\n }).every(function (option) {\n return option.disabled;\n });\n }\n },\n\n watch: {\n hoverIndex: function hoverIndex(val) {\n var _this = this;\n\n if (typeof val === 'number' && val > -1) {\n this.hoverOption = this.options[val] || {};\n }\n this.options.forEach(function (option) {\n option.hover = _this.hoverOption === option;\n });\n }\n },\n\n methods: {\n navigateOptions: function navigateOptions(direction) {\n var _this2 = this;\n\n if (!this.visible) {\n this.visible = true;\n return;\n }\n if (this.options.length === 0 || this.filteredOptionsCount === 0) return;\n if (!this.optionsAllDisabled) {\n if (direction === 'next') {\n this.hoverIndex++;\n if (this.hoverIndex === this.options.length) {\n this.hoverIndex = 0;\n }\n } else if (direction === 'prev') {\n this.hoverIndex--;\n if (this.hoverIndex < 0) {\n this.hoverIndex = this.options.length - 1;\n }\n }\n var option = this.options[this.hoverIndex];\n if (option.disabled === true || option.groupDisabled === true || !option.visible) {\n this.navigateOptions(direction);\n }\n this.$nextTick(function () {\n return _this2.scrollToOption(_this2.hoverOption);\n });\n }\n }\n }\n});\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var selectvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a, locale_default.a, focus_default()('reference'), navigation_mixin],\n\n name: 'ElSelect',\n\n componentName: 'ElSelect',\n\n inject: {\n elForm: {\n default: ''\n },\n\n elFormItem: {\n default: ''\n }\n },\n\n provide: function provide() {\n return {\n 'select': this\n };\n },\n\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n readonly: function readonly() {\n return !this.filterable || this.multiple || !Object(util_[\"isIE\"])() && !Object(util_[\"isEdge\"])() && !this.visible;\n },\n showClose: function showClose() {\n var hasValue = this.multiple ? Array.isArray(this.value) && this.value.length > 0 : this.value !== undefined && this.value !== null && this.value !== '';\n var criteria = this.clearable && !this.selectDisabled && this.inputHovering && hasValue;\n return criteria;\n },\n iconClass: function iconClass() {\n return this.remote && this.filterable ? '' : this.visible ? 'arrow-up is-reverse' : 'arrow-up';\n },\n debounce: function debounce() {\n return this.remote ? 300 : 0;\n },\n emptyText: function emptyText() {\n if (this.loading) {\n return this.loadingText || this.t('el.select.loading');\n } else {\n if (this.remote && this.query === '' && this.options.length === 0) return false;\n if (this.filterable && this.query && this.options.length > 0 && this.filteredOptionsCount === 0) {\n return this.noMatchText || this.t('el.select.noMatch');\n }\n if (this.options.length === 0) {\n return this.noDataText || this.t('el.select.noData');\n }\n }\n return null;\n },\n showNewOption: function showNewOption() {\n var _this = this;\n\n var hasExistingOption = this.options.filter(function (option) {\n return !option.created;\n }).some(function (option) {\n return option.currentLabel === _this.query;\n });\n return this.filterable && this.allowCreate && this.query !== '' && !hasExistingOption;\n },\n selectSize: function selectSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n selectDisabled: function selectDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n collapseTagSize: function collapseTagSize() {\n return ['small', 'mini'].indexOf(this.selectSize) > -1 ? 'mini' : 'small';\n }\n },\n\n components: {\n ElInput: input_default.a,\n ElSelectMenu: select_dropdown,\n ElOption: src_option[\"a\" /* default */],\n ElTag: tag_default.a,\n ElScrollbar: scrollbar_default.a\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n props: {\n name: String,\n id: String,\n value: {\n required: true\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && false;\n return true;\n }\n },\n automaticDropdown: Boolean,\n size: String,\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n allowCreate: Boolean,\n loading: Boolean,\n popperClass: String,\n remote: Boolean,\n loadingText: String,\n noMatchText: String,\n noDataText: String,\n remoteMethod: Function,\n filterMethod: Function,\n multiple: Boolean,\n multipleLimit: {\n type: Number,\n default: 0\n },\n placeholder: {\n type: String,\n default: function _default() {\n return Object(lib_locale_[\"t\"])('el.select.placeholder');\n }\n },\n defaultFirstOption: Boolean,\n reserveKeyword: Boolean,\n valueKey: {\n type: String,\n default: 'value'\n },\n collapseTags: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n options: [],\n cachedOptions: [],\n createdLabel: null,\n createdSelected: false,\n selected: this.multiple ? [] : {},\n inputLength: 20,\n inputWidth: 0,\n initialInputHeight: 0,\n cachedPlaceHolder: '',\n optionsCount: 0,\n filteredOptionsCount: 0,\n visible: false,\n softFocus: false,\n selectedLabel: '',\n hoverIndex: -1,\n query: '',\n previousQuery: null,\n inputHovering: false,\n currentPlaceholder: '',\n menuVisibleOnFocus: false,\n isOnComposition: false,\n isSilentBlur: false\n };\n },\n\n\n watch: {\n selectDisabled: function selectDisabled() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.resetInputHeight();\n });\n },\n placeholder: function placeholder(val) {\n this.cachedPlaceHolder = this.currentPlaceholder = val;\n },\n value: function value(val, oldVal) {\n if (this.multiple) {\n this.resetInputHeight();\n if (val && val.length > 0 || this.$refs.input && this.query !== '') {\n this.currentPlaceholder = '';\n } else {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n if (this.filterable && !this.reserveKeyword) {\n this.query = '';\n this.handleQueryChange(this.query);\n }\n }\n this.setSelected();\n if (this.filterable && !this.multiple) {\n this.inputLength = 20;\n }\n if (!Object(util_[\"valueEquals\"])(val, oldVal)) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n }\n },\n visible: function visible(val) {\n var _this3 = this;\n\n if (!val) {\n this.broadcast('ElSelectDropdown', 'destroyPopper');\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n this.query = '';\n this.previousQuery = null;\n this.selectedLabel = '';\n this.inputLength = 20;\n this.menuVisibleOnFocus = false;\n this.resetHoverIndex();\n this.$nextTick(function () {\n if (_this3.$refs.input && _this3.$refs.input.value === '' && _this3.selected.length === 0) {\n _this3.currentPlaceholder = _this3.cachedPlaceHolder;\n }\n });\n if (!this.multiple) {\n if (this.selected) {\n if (this.filterable && this.allowCreate && this.createdSelected && this.createdLabel) {\n this.selectedLabel = this.createdLabel;\n } else {\n this.selectedLabel = this.selected.currentLabel;\n }\n if (this.filterable) this.query = this.selectedLabel;\n }\n\n if (this.filterable) {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n }\n } else {\n this.broadcast('ElSelectDropdown', 'updatePopper');\n if (this.filterable) {\n this.query = this.remote ? '' : this.selectedLabel;\n this.handleQueryChange(this.query);\n if (this.multiple) {\n this.$refs.input.focus();\n } else {\n if (!this.remote) {\n this.broadcast('ElOption', 'queryChange', '');\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n\n if (this.selectedLabel) {\n this.currentPlaceholder = this.selectedLabel;\n this.selectedLabel = '';\n }\n }\n }\n }\n this.$emit('visible-change', val);\n },\n options: function options() {\n var _this4 = this;\n\n if (this.$isServer) return;\n this.$nextTick(function () {\n _this4.broadcast('ElSelectDropdown', 'updatePopper');\n });\n if (this.multiple) {\n this.resetInputHeight();\n }\n var inputs = this.$el.querySelectorAll('input');\n if ([].indexOf.call(inputs, document.activeElement) === -1) {\n this.setSelected();\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n }\n },\n\n methods: {\n handleComposition: function handleComposition(event) {\n var _this5 = this;\n\n var text = event.target.value;\n if (event.type === 'compositionend') {\n this.isOnComposition = false;\n this.$nextTick(function (_) {\n return _this5.handleQueryChange(text);\n });\n } else {\n var lastCharacter = text[text.length - 1] || '';\n this.isOnComposition = !Object(shared_[\"isKorean\"])(lastCharacter);\n }\n },\n handleQueryChange: function handleQueryChange(val) {\n var _this6 = this;\n\n if (this.previousQuery === val || this.isOnComposition) return;\n if (this.previousQuery === null && (typeof this.filterMethod === 'function' || typeof this.remoteMethod === 'function')) {\n this.previousQuery = val;\n return;\n }\n this.previousQuery = val;\n this.$nextTick(function () {\n if (_this6.visible) _this6.broadcast('ElSelectDropdown', 'updatePopper');\n });\n this.hoverIndex = -1;\n if (this.multiple && this.filterable) {\n this.$nextTick(function () {\n var length = _this6.$refs.input.value.length * 15 + 20;\n _this6.inputLength = _this6.collapseTags ? Math.min(50, length) : length;\n _this6.managePlaceholder();\n _this6.resetInputHeight();\n });\n }\n if (this.remote && typeof this.remoteMethod === 'function') {\n this.hoverIndex = -1;\n this.remoteMethod(val);\n } else if (typeof this.filterMethod === 'function') {\n this.filterMethod(val);\n this.broadcast('ElOptionGroup', 'queryChange');\n } else {\n this.filteredOptionsCount = this.optionsCount;\n this.broadcast('ElOption', 'queryChange', val);\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n },\n scrollToOption: function scrollToOption(option) {\n var target = Array.isArray(option) && option[0] ? option[0].$el : option.$el;\n if (this.$refs.popper && target) {\n var menu = this.$refs.popper.$el.querySelector('.el-select-dropdown__wrap');\n scroll_into_view_default()(menu, target);\n }\n this.$refs.scrollbar && this.$refs.scrollbar.handleScroll();\n },\n handleMenuEnter: function handleMenuEnter() {\n var _this7 = this;\n\n this.$nextTick(function () {\n return _this7.scrollToOption(_this7.selected);\n });\n },\n emitChange: function emitChange(val) {\n if (!Object(util_[\"valueEquals\"])(this.value, val)) {\n this.$emit('change', val);\n }\n },\n getOption: function getOption(value) {\n var option = void 0;\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n var isNull = Object.prototype.toString.call(value).toLowerCase() === '[object null]';\n var isUndefined = Object.prototype.toString.call(value).toLowerCase() === '[object undefined]';\n\n for (var i = this.cachedOptions.length - 1; i >= 0; i--) {\n var cachedOption = this.cachedOptions[i];\n var isEqual = isObject ? Object(util_[\"getValueByPath\"])(cachedOption.value, this.valueKey) === Object(util_[\"getValueByPath\"])(value, this.valueKey) : cachedOption.value === value;\n if (isEqual) {\n option = cachedOption;\n break;\n }\n }\n if (option) return option;\n var label = !isObject && !isNull && !isUndefined ? value : '';\n var newOption = {\n value: value,\n currentLabel: label\n };\n if (this.multiple) {\n newOption.hitState = false;\n }\n return newOption;\n },\n setSelected: function setSelected() {\n var _this8 = this;\n\n if (!this.multiple) {\n var option = this.getOption(this.value);\n if (option.created) {\n this.createdLabel = option.currentLabel;\n this.createdSelected = true;\n } else {\n this.createdSelected = false;\n }\n this.selectedLabel = option.currentLabel;\n this.selected = option;\n if (this.filterable) this.query = this.selectedLabel;\n return;\n }\n var result = [];\n if (Array.isArray(this.value)) {\n this.value.forEach(function (value) {\n result.push(_this8.getOption(value));\n });\n }\n this.selected = result;\n this.$nextTick(function () {\n _this8.resetInputHeight();\n });\n },\n handleFocus: function handleFocus(event) {\n if (!this.softFocus) {\n if (this.automaticDropdown || this.filterable) {\n this.visible = true;\n if (this.filterable) {\n this.menuVisibleOnFocus = true;\n }\n }\n this.$emit('focus', event);\n } else {\n this.softFocus = false;\n }\n },\n blur: function blur() {\n this.visible = false;\n this.$refs.reference.blur();\n },\n handleBlur: function handleBlur(event) {\n var _this9 = this;\n\n setTimeout(function () {\n if (_this9.isSilentBlur) {\n _this9.isSilentBlur = false;\n } else {\n _this9.$emit('blur', event);\n }\n }, 50);\n this.softFocus = false;\n },\n handleClearClick: function handleClearClick(event) {\n this.deleteSelected(event);\n },\n doDestroy: function doDestroy() {\n this.$refs.popper && this.$refs.popper.doDestroy();\n },\n handleClose: function handleClose() {\n this.visible = false;\n },\n toggleLastOptionHitState: function toggleLastOptionHitState(hit) {\n if (!Array.isArray(this.selected)) return;\n var option = this.selected[this.selected.length - 1];\n if (!option) return;\n\n if (hit === true || hit === false) {\n option.hitState = hit;\n return hit;\n }\n\n option.hitState = !option.hitState;\n return option.hitState;\n },\n deletePrevTag: function deletePrevTag(e) {\n if (e.target.value.length <= 0 && !this.toggleLastOptionHitState()) {\n var value = this.value.slice();\n value.pop();\n this.$emit('input', value);\n this.emitChange(value);\n }\n },\n managePlaceholder: function managePlaceholder() {\n if (this.currentPlaceholder !== '') {\n this.currentPlaceholder = this.$refs.input.value ? '' : this.cachedPlaceHolder;\n }\n },\n resetInputState: function resetInputState(e) {\n if (e.keyCode !== 8) this.toggleLastOptionHitState(false);\n this.inputLength = this.$refs.input.value.length * 15 + 20;\n this.resetInputHeight();\n },\n resetInputHeight: function resetInputHeight() {\n var _this10 = this;\n\n if (this.collapseTags && !this.filterable) return;\n this.$nextTick(function () {\n if (!_this10.$refs.reference) return;\n var inputChildNodes = _this10.$refs.reference.$el.childNodes;\n var input = [].filter.call(inputChildNodes, function (item) {\n return item.tagName === 'INPUT';\n })[0];\n var tags = _this10.$refs.tags;\n var sizeInMap = _this10.initialInputHeight || 40;\n input.style.height = _this10.selected.length === 0 ? sizeInMap + 'px' : Math.max(tags ? tags.clientHeight + (tags.clientHeight > sizeInMap ? 6 : 0) : 0, sizeInMap) + 'px';\n if (_this10.visible && _this10.emptyText !== false) {\n _this10.broadcast('ElSelectDropdown', 'updatePopper');\n }\n });\n },\n resetHoverIndex: function resetHoverIndex() {\n var _this11 = this;\n\n setTimeout(function () {\n if (!_this11.multiple) {\n _this11.hoverIndex = _this11.options.indexOf(_this11.selected);\n } else {\n if (_this11.selected.length > 0) {\n _this11.hoverIndex = Math.min.apply(null, _this11.selected.map(function (item) {\n return _this11.options.indexOf(item);\n }));\n } else {\n _this11.hoverIndex = -1;\n }\n }\n }, 300);\n },\n handleOptionSelect: function handleOptionSelect(option, byClick) {\n var _this12 = this;\n\n if (this.multiple) {\n var value = (this.value || []).slice();\n var optionIndex = this.getValueIndex(value, option.value);\n if (optionIndex > -1) {\n value.splice(optionIndex, 1);\n } else if (this.multipleLimit <= 0 || value.length < this.multipleLimit) {\n value.push(option.value);\n }\n this.$emit('input', value);\n this.emitChange(value);\n if (option.created) {\n this.query = '';\n this.handleQueryChange('');\n this.inputLength = 20;\n }\n if (this.filterable) this.$refs.input.focus();\n } else {\n this.$emit('input', option.value);\n this.emitChange(option.value);\n this.visible = false;\n }\n this.isSilentBlur = byClick;\n this.setSoftFocus();\n if (this.visible) return;\n this.$nextTick(function () {\n _this12.scrollToOption(option);\n });\n },\n setSoftFocus: function setSoftFocus() {\n this.softFocus = true;\n var input = this.$refs.input || this.$refs.reference;\n if (input) {\n input.focus();\n }\n },\n getValueIndex: function getValueIndex() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var value = arguments[1];\n\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n if (!isObject) {\n return arr.indexOf(value);\n } else {\n var valueKey = this.valueKey;\n var index = -1;\n arr.some(function (item, i) {\n if (Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(value, valueKey)) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n }\n },\n toggleMenu: function toggleMenu() {\n if (!this.selectDisabled) {\n if (this.menuVisibleOnFocus) {\n this.menuVisibleOnFocus = false;\n } else {\n this.visible = !this.visible;\n }\n if (this.visible) {\n (this.$refs.input || this.$refs.reference).focus();\n }\n }\n },\n selectOption: function selectOption() {\n if (!this.visible) {\n this.toggleMenu();\n } else {\n if (this.options[this.hoverIndex]) {\n this.handleOptionSelect(this.options[this.hoverIndex]);\n }\n }\n },\n deleteSelected: function deleteSelected(event) {\n event.stopPropagation();\n var value = this.multiple ? [] : '';\n this.$emit('input', value);\n this.emitChange(value);\n this.visible = false;\n this.$emit('clear');\n },\n deleteTag: function deleteTag(event, tag) {\n var index = this.selected.indexOf(tag);\n if (index > -1 && !this.selectDisabled) {\n var value = this.value.slice();\n value.splice(index, 1);\n this.$emit('input', value);\n this.emitChange(value);\n this.$emit('remove-tag', tag.value);\n }\n event.stopPropagation();\n },\n onInputChange: function onInputChange() {\n if (this.filterable && this.query !== this.selectedLabel) {\n this.query = this.selectedLabel;\n this.handleQueryChange(this.query);\n }\n },\n onOptionDestroy: function onOptionDestroy(index) {\n if (index > -1) {\n this.optionsCount--;\n this.filteredOptionsCount--;\n this.options.splice(index, 1);\n }\n },\n resetInputWidth: function resetInputWidth() {\n this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;\n },\n handleResize: function handleResize() {\n this.resetInputWidth();\n if (this.multiple) this.resetInputHeight();\n },\n checkDefaultFirstOption: function checkDefaultFirstOption() {\n this.hoverIndex = -1;\n // highlight the created option\n var hasCreated = false;\n for (var i = this.options.length - 1; i >= 0; i--) {\n if (this.options[i].created) {\n hasCreated = true;\n this.hoverIndex = i;\n break;\n }\n }\n if (hasCreated) return;\n for (var _i = 0; _i !== this.options.length; ++_i) {\n var option = this.options[_i];\n if (this.query) {\n // highlight first options that passes the filter\n if (!option.disabled && !option.groupDisabled && option.visible) {\n this.hoverIndex = _i;\n break;\n }\n } else {\n // highlight currently selected option\n if (option.itemSelected) {\n this.hoverIndex = _i;\n break;\n }\n }\n }\n },\n getValueKey: function getValueKey(item) {\n if (Object.prototype.toString.call(item.value).toLowerCase() !== '[object object]') {\n return item.value;\n } else {\n return Object(util_[\"getValueByPath\"])(item.value, this.valueKey);\n }\n }\n },\n\n created: function created() {\n var _this13 = this;\n\n this.cachedPlaceHolder = this.currentPlaceholder = this.placeholder;\n if (this.multiple && !Array.isArray(this.value)) {\n this.$emit('input', []);\n }\n if (!this.multiple && Array.isArray(this.value)) {\n this.$emit('input', '');\n }\n\n this.debouncedOnInputChange = debounce_default()(this.debounce, function () {\n _this13.onInputChange();\n });\n\n this.debouncedQueryChange = debounce_default()(this.debounce, function (e) {\n _this13.handleQueryChange(e.target.value);\n });\n\n this.$on('handleOptionClick', this.handleOptionSelect);\n this.$on('setSelected', this.setSelected);\n },\n mounted: function mounted() {\n var _this14 = this;\n\n if (this.multiple && Array.isArray(this.value) && this.value.length > 0) {\n this.currentPlaceholder = '';\n }\n Object(resize_event_[\"addResizeListener\"])(this.$el, this.handleResize);\n\n var reference = this.$refs.reference;\n if (reference && reference.$el) {\n var sizeMap = {\n medium: 36,\n small: 32,\n mini: 28\n };\n var input = reference.$el.querySelector('input');\n this.initialInputHeight = input.getBoundingClientRect().height || sizeMap[this.selectSize];\n }\n if (this.remote && this.multiple) {\n this.resetInputHeight();\n }\n this.$nextTick(function () {\n if (reference && reference.$el) {\n _this14.inputWidth = reference.$el.getBoundingClientRect().width;\n }\n });\n this.setSelected();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$el && this.handleResize) Object(resize_event_[\"removeResizeListener\"])(this.$el, this.handleResize);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_selectvue_type_script_lang_js_ = (selectvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/select/src/select.vue\n\n\n\n\n\n/* normalize component */\n\nvar select_component = Object(componentNormalizer[\"a\" /* default */])(\n src_selectvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var select_api; }\nselect_component.options.__file = \"packages/select/src/select.vue\"\n/* harmony default export */ var src_select = (select_component.exports);\n// CONCATENATED MODULE: ./packages/select/index.js\n\n\n/* istanbul ignore next */\nsrc_select.install = function (Vue) {\n Vue.component(src_select.name, src_select);\n};\n\n/* harmony default export */ var packages_select = __webpack_exports__[\"default\"] = (src_select);\n\n/***/ })\n/******/ ]);"]}]}