| 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/cascader-panel.js","dependencies":[{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/element-ui/lib/cascader-panel.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:cmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbCIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbiIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC50by1zdHJpbmctdGFnIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0Iik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZXZlcnkiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mb3ItZWFjaCIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluZGV4LW9mIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbiIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcCIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJlZHVjZSIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc29tZSIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnRvLXN0cmluZy10YWciKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5tYXRoLnRvLXN0cmluZy10YWciKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvciIpOwoKdmFyIF90eXBlb2YgPSByZXF1aXJlKCIvdXNyL2xvY2FsL2RldmVsb3AvcGhwL3d3dy93YWliYW8vcHJvamVjdC9OTjIwMjAwNjA4MDEvYWRkb25zL2FkbWluL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZiIpOwoKbW9kdWxlLmV4cG9ydHMgPQovKioqKioqLwpmdW5jdGlvbiAobW9kdWxlcykgewogIC8vIHdlYnBhY2tCb290c3RyYXAKCiAgLyoqKioqKi8KICAvLyBUaGUgbW9kdWxlIGNhY2hlCgogIC8qKioqKiovCiAgdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCgogIC8qKioqKiovCgogIGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHsKICAgIC8qKioqKiovCgogICAgLyoqKioqKi8KICAgIC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZQoKICAgIC8qKioqKiovCiAgICBpZiAoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHsKICAgICAgLyoqKioqKi8KICAgICAgcmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7CiAgICAgIC8qKioqKiovCiAgICB9CiAgICAvKioqKioqLwogICAgLy8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSkKCiAgICAvKioqKioqLwoKCiAgICB2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7CiAgICAgIC8qKioqKiovCiAgICAgIGk6IG1vZHVsZUlkLAoKICAgICAgLyoqKioqKi8KICAgICAgbDogZmFsc2UsCgogICAgICAvKioqKioqLwogICAgICBleHBvcnRzOiB7fQogICAgICAvKioqKioqLwoKICAgIH07CiAgICAvKioqKioqLwoKICAgIC8qKioqKiovCiAgICAvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KCiAgICAvKioqKioqLwoKICAgIG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pOwogICAgLyoqKioqKi8KCiAgICAvKioqKioqLwogICAgLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAoKICAgIC8qKioqKiovCgogICAgbW9kdWxlLmwgPSB0cnVlOwogICAgLyoqKioqKi8KCiAgICAvKioqKioqLwogICAgLy8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGUKCiAgICAvKioqKioqLwoKICAgIHJldHVybiBtb2R1bGUuZXhwb3J0czsKICAgIC8qKioqKiovCiAgfQogIC8qKioqKiovCgogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKCiAgLyoqKioqKi8KCgogIF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7CiAgLyoqKioqKi8KCiAgLyoqKioqKi8KICAvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQoKICAvKioqKioqLwoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzOwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzCgogIC8qKioqKiovCgogIF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uIChleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHsKICAgIC8qKioqKiovCiAgICBpZiAoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkgewogICAgICAvKioqKioqLwogICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgewogICAgICAgIGVudW1lcmFibGU6IHRydWUsCiAgICAgICAgZ2V0OiBnZXR0ZXIKICAgICAgfSk7CiAgICAgIC8qKioqKiovCiAgICB9CiAgICAvKioqKioqLwoKICB9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0cwoKICAvKioqKioqLwoKCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgIC8qKioqKiovCiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7CiAgICAgIC8qKioqKiovCiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsKICAgICAgICB2YWx1ZTogJ01vZHVsZScKICAgICAgfSk7CiAgICAgIC8qKioqKiovCiAgICB9CiAgICAvKioqKioqLwoKCiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7CiAgICAgIHZhbHVlOiB0cnVlCiAgICB9KTsKICAgIC8qKioqKiovCiAgfTsKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdAoKICAvKioqKioqLwogIC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdAoKICAvKioqKioqLwogIC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBucwoKICAvKioqKioqLwogIC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdAoKICAvKioqKioqLwogIC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmUKCiAgLyoqKioqKi8KCgogIF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uICh2YWx1ZSwgbW9kZSkgewogICAgLyoqKioqKi8KICAgIGlmIChtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTsKICAgIC8qKioqKiovCgogICAgaWYgKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7CiAgICAvKioqKioqLwoKICAgIGlmIChtb2RlICYgNCAmJiBfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlOwogICAgLyoqKioqKi8KCiAgICB2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgLyoqKioqKi8KCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpOwogICAgLyoqKioqKi8KCgogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsKICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKICAgICAgdmFsdWU6IHZhbHVlCiAgICB9KTsKICAgIC8qKioqKiovCgogICAgaWYgKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7CiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgcmV0dXJuIHZhbHVlW2tleV07CiAgICAgIH0uYmluZChudWxsLCBrZXkpKTsKICAgIH0KICAgIC8qKioqKiovCgogICAgcmV0dXJuIG5zOwogICAgLyoqKioqKi8KICB9OwogIC8qKioqKiovCgogIC8qKioqKiovCiAgLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXMKCiAgLyoqKioqKi8KCgogIF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uIChtb2R1bGUpIHsKICAgIC8qKioqKiovCiAgICB2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID8KICAgIC8qKioqKiovCiAgICBmdW5jdGlvbiBnZXREZWZhdWx0KCkgewogICAgICByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107CiAgICB9IDoKICAgIC8qKioqKiovCiAgICBmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgewogICAgICByZXR1cm4gbW9kdWxlOwogICAgfTsKICAgIC8qKioqKiovCgogICAgX193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpOwogICAgLyoqKioqKi8KCgogICAgcmV0dXJuIGdldHRlcjsKICAgIC8qKioqKiovCiAgfTsKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbAoKICAvKioqKioqLwoKCiAgX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24gKG9iamVjdCwgcHJvcGVydHkpIHsKICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7CiAgfTsKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fCgogIC8qKioqKiovCgoKICBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSAiL2Rpc3QvIjsKICAvKioqKioqLwoKICAvKioqKioqLwoKICAvKioqKioqLwogIC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0cwoKICAvKioqKioqLwoKICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA1OSk7CiAgLyoqKioqKi8KfSgKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKiovCnsKICAvKioqLwogIDA6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogICAgInVzZSBzdHJpY3QiOwogICAgLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovCgogICAgX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sICJhIiwgZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gbm9ybWFsaXplQ29tcG9uZW50OwogICAgfSk7CiAgICAvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi8KICAgIC8vIElNUE9SVEFOVDogRG8gTk9UIHVzZSBFUzIwMTUgZmVhdHVyZXMgaW4gdGhpcyBmaWxlIChleGNlcHQgZm9yIG1vZHVsZXMpLgogICAgLy8gVGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGwKICAgIC8vIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCB3ZWJwYWNrIHVzZXIgYnVuZGxlLgoKCiAgICBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQoc2NyaXB0RXhwb3J0cywgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIGZ1bmN0aW9uYWxUZW1wbGF0ZSwgaW5qZWN0U3R5bGVzLCBzY29wZUlkLCBtb2R1bGVJZGVudGlmaWVyLAogICAgLyogc2VydmVyIG9ubHkgKi8KICAgIHNoYWRvd01vZGUKICAgIC8qIHZ1ZS1jbGkgb25seSAqLwogICAgKSB7CiAgICAgIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3AKICAgICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJyA/IHNjcmlwdEV4cG9ydHMub3B0aW9ucyA6IHNjcmlwdEV4cG9ydHM7IC8vIHJlbmRlciBmdW5jdGlvbnMKCiAgICAgIGlmIChyZW5kZXIpIHsKICAgICAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlcjsKICAgICAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuczsKICAgICAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWU7CiAgICAgIH0gLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZQoKCiAgICAgIGlmIChmdW5jdGlvbmFsVGVtcGxhdGUpIHsKICAgICAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlOwogICAgICB9IC8vIHNjb3BlZElkCgoKICAgICAgaWYgKHNjb3BlSWQpIHsKICAgICAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZDsKICAgICAgfQoKICAgICAgdmFyIGhvb2s7CgogICAgICBpZiAobW9kdWxlSWRlbnRpZmllcikgewogICAgICAgIC8vIHNlcnZlciBidWlsZAogICAgICAgIGhvb2sgPSBmdW5jdGlvbiBob29rKGNvbnRleHQpIHsKICAgICAgICAgIC8vIDIuMyBpbmplY3Rpb24KICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsCiAgICAgICAgICB0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0IHx8IC8vIHN0YXRlZnVsCiAgICAgICAgICB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQ7IC8vIGZ1bmN0aW9uYWwKICAgICAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZQoKICAgICAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX187CiAgICAgICAgICB9IC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzCgoKICAgICAgICAgIGlmIChpbmplY3RTdHlsZXMpIHsKICAgICAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dCk7CiAgICAgICAgICB9IC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZQoKCiAgICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykgewogICAgICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcik7CiAgICAgICAgICB9CiAgICAgICAgfTsgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGUKICAgICAgICAvLyBuZXZlciBnZXRzIGNhbGxlZAoKCiAgICAgICAgb3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rOwogICAgICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykgewogICAgICAgIGhvb2sgPSBzaGFkb3dNb2RlID8gZnVuY3Rpb24gKCkgewogICAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KTsKICAgICAgICB9IDogaW5qZWN0U3R5bGVzOwogICAgICB9CgogICAgICBpZiAoaG9vaykgewogICAgICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHsKICAgICAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0CiAgICAgICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyCiAgICAgICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rOyAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUgZmlsZQoKICAgICAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyOwoKICAgICAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uKGgsIGNvbnRleHQpIHsKICAgICAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpOwogICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dCk7CiAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9vawogICAgICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGU7CiAgICAgICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKSA6IFtob29rXTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cywKICAgICAgICBvcHRpb25zOiBvcHRpb25zCiAgICAgIH07CiAgICB9CiAgICAvKioqLwoKICB9LAoKICAvKioqLwogIDE0OgogIC8qKiovCiAgZnVuY3Rpb24gXyhtb2R1bGUsIGV4cG9ydHMpIHsKICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvc2Nyb2xsYmFyIik7CiAgICAvKioqLwogIH0sCgogIC8qKiovCiAgMTg6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgZXhwb3J0cykgewogICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi9jaGVja2JveCIpOwogICAgLyoqKi8KICB9LAoKICAvKioqLwogIDIxOgogIC8qKiovCiAgZnVuY3Rpb24gXyhtb2R1bGUsIGV4cG9ydHMpIHsKICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvdXRpbHMvc2hhcmVkIik7CiAgICAvKioqLwogIH0sCgogIC8qKiovCiAgMjY6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgZXhwb3J0cykgewogICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJiYWJlbC1oZWxwZXItdnVlLWpzeC1tZXJnZS1wcm9wcyIpOwogICAgLyoqKi8KICB9LAoKICAvKioqLwogIDM6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgZXhwb3J0cykgewogICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi91dGlscy91dGlsIik7CiAgICAvKioqLwogIH0sCgogIC8qKiovCiAgMzE6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgZXhwb3J0cykgewogICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi91dGlscy9zY3JvbGwtaW50by12aWV3Iik7CiAgICAvKioqLwogIH0sCgogIC8qKiovCiAgMzI6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgZXhwb3J0cykgewogICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi91dGlscy9hcmlhLXV0aWxzIik7CiAgICAvKioqLwogIH0sCgogIC8qKiovCiAgNTE6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgZXhwb3J0cykgewogICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi9yYWRpbyIpOwogICAgLyoqKi8KICB9LAoKICAvKioqLwogIDU5OgogIC8qKiovCiAgZnVuY3Rpb24gXyhtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLXBhbmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDkzMjM0NiYKCgogICAgdmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzQ5MzIzNDZfcmVuZGVyID0gZnVuY3Rpb24gY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDkzMjM0Nl9yZW5kZXIoKSB7CiAgICAgIHZhciBfdm0gPSB0aGlzOwoKICAgICAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50OwoKICAgICAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oOwoKICAgICAgcmV0dXJuIF9jKCJkaXYiLCB7CiAgICAgICAgY2xhc3M6IFsiZWwtY2FzY2FkZXItcGFuZWwiLCBfdm0uYm9yZGVyICYmICJpcy1ib3JkZXJlZCJdLAogICAgICAgIG9uOiB7CiAgICAgICAgICBrZXlkb3duOiBfdm0uaGFuZGxlS2V5RG93bgogICAgICAgIH0KICAgICAgfSwgX3ZtLl9sKF92bS5tZW51cywgZnVuY3Rpb24gKG1lbnUsIGluZGV4KSB7CiAgICAgICAgcmV0dXJuIF9jKCJjYXNjYWRlci1tZW51IiwgewogICAgICAgICAga2V5OiBpbmRleCwKICAgICAgICAgIHJlZjogIm1lbnUiLAogICAgICAgICAgcmVmSW5Gb3I6IHRydWUsCiAgICAgICAgICBhdHRyczogewogICAgICAgICAgICBpbmRleDogaW5kZXgsCiAgICAgICAgICAgIG5vZGVzOiBtZW51CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0pLCAxKTsKICAgIH07CgogICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IFtdOwogICAgY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDkzMjM0Nl9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWU7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLXBhbmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDkzMjM0NiYKICAgIC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImJhYmVsLWhlbHBlci12dWUtanN4LW1lcmdlLXByb3BzIgoKICAgIHZhciBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTsKCiAgICB2YXIgZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfKTsgLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCAiZWxlbWVudC11aS9saWIvc2Nyb2xsYmFyIgoKCiAgICB2YXIgc2Nyb2xsYmFyXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwoKICAgIHZhciBzY3JvbGxiYXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oc2Nyb2xsYmFyXyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL2NoZWNrYm94IgoKCiAgICB2YXIgY2hlY2tib3hfID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CgogICAgdmFyIGNoZWNrYm94X2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNoZWNrYm94Xyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL3JhZGlvIgoKCiAgICB2YXIgcmFkaW9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7CgogICAgdmFyIHJhZGlvX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHJhZGlvXyk7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwiCgoKICAgIHZhciB1dGlsXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1ub2RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYKCgogICAgdmFyIHN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbihlKSB7CiAgICAgIHJldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgfTsKICAgIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCgogICAgdmFyIGNhc2NhZGVyX25vZGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSB7CiAgICAgIGluamVjdDogWydwYW5lbCddLAogICAgICBjb21wb25lbnRzOiB7CiAgICAgICAgRWxDaGVja2JveDogY2hlY2tib3hfZGVmYXVsdC5hLAogICAgICAgIEVsUmFkaW86IHJhZGlvX2RlZmF1bHQuYQogICAgICB9LAogICAgICBwcm9wczogewogICAgICAgIG5vZGU6IHsKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgfSwKICAgICAgICBub2RlSWQ6IFN0cmluZwogICAgICB9LAogICAgICBjb21wdXRlZDogewogICAgICAgIGNvbmZpZzogZnVuY3Rpb24gY29uZmlnKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWwuY29uZmlnOwogICAgICAgIH0sCiAgICAgICAgaXNMZWFmOiBmdW5jdGlvbiBpc0xlYWYoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmlzTGVhZjsKICAgICAgICB9LAogICAgICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzRGlzYWJsZWQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmlzRGlzYWJsZWQ7CiAgICAgICAgfSwKICAgICAgICBjaGVja2VkVmFsdWU6IGZ1bmN0aW9uIGNoZWNrZWRWYWx1ZSgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsLmNoZWNrZWRWYWx1ZTsKICAgICAgICB9LAogICAgICAgIGlzQ2hlY2tlZDogZnVuY3Rpb24gaXNDaGVja2VkKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5pc1NhbWVOb2RlKHRoaXMuY2hlY2tlZFZhbHVlKTsKICAgICAgICB9LAogICAgICAgIGluQWN0aXZlUGF0aDogZnVuY3Rpb24gaW5BY3RpdmVQYXRoKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNJblBhdGgodGhpcy5wYW5lbC5hY3RpdmVQYXRoKTsKICAgICAgICB9LAogICAgICAgIGluQ2hlY2tlZFBhdGg6IGZ1bmN0aW9uIGluQ2hlY2tlZFBhdGgoKSB7CiAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgICAgIGlmICghdGhpcy5jb25maWcuY2hlY2tTdHJpY3RseSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWwuY2hlY2tlZE5vZGVQYXRocy5zb21lKGZ1bmN0aW9uIChjaGVja2VkUGF0aCkgewogICAgICAgICAgICByZXR1cm4gX3RoaXMuaXNJblBhdGgoY2hlY2tlZFBhdGgpOwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmdldFZhbHVlQnlPcHRpb24oKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIG1ldGhvZHM6IHsKICAgICAgICBoYW5kbGVFeHBhbmQ6IGZ1bmN0aW9uIGhhbmRsZUV4cGFuZCgpIHsKICAgICAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgICAgIHZhciBwYW5lbCA9IHRoaXMucGFuZWwsCiAgICAgICAgICAgICAgbm9kZSA9IHRoaXMubm9kZSwKICAgICAgICAgICAgICBpc0Rpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkLAogICAgICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnOwogICAgICAgICAgdmFyIG11bHRpcGxlID0gY29uZmlnLm11bHRpcGxlLAogICAgICAgICAgICAgIGNoZWNrU3RyaWN0bHkgPSBjb25maWcuY2hlY2tTdHJpY3RseTsKICAgICAgICAgIGlmICghY2hlY2tTdHJpY3RseSAmJiBpc0Rpc2FibGVkIHx8IG5vZGUubG9hZGluZykgcmV0dXJuOwoKICAgICAgICAgIGlmIChjb25maWcubGF6eSAmJiAhbm9kZS5sb2FkZWQpIHsKICAgICAgICAgICAgcGFuZWwubGF6eUxvYWQobm9kZSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIC8vIGRvIG5vdCB1c2UgY2FjaGVkIGxlYWYgdmFsdWUgaGVyZSwgaW52b2tlIHRoaXMuaXNMZWFmIHRvIGdldCBuZXcgdmFsdWUuCiAgICAgICAgICAgICAgdmFyIGlzTGVhZiA9IF90aGlzMi5pc0xlYWY7CiAgICAgICAgICAgICAgaWYgKCFpc0xlYWYpIF90aGlzMi5oYW5kbGVFeHBhbmQoKTsKCiAgICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7CiAgICAgICAgICAgICAgICAvLyBpZiBsZWFmIHN5bmMgY2hlY2tlZCBzdGF0ZSwgZWxzZSBjbGVhciBjaGVja2VkIHN0YXRlCiAgICAgICAgICAgICAgICB2YXIgY2hlY2tlZCA9IGlzTGVhZiA/IG5vZGUuY2hlY2tlZCA6IGZhbHNlOwoKICAgICAgICAgICAgICAgIF90aGlzMi5oYW5kbGVNdWx0aUNoZWNrQ2hhbmdlKGNoZWNrZWQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwYW5lbC5oYW5kbGVFeHBhbmQobm9kZSk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBoYW5kbGVDaGVja0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tDaGFuZ2UoKSB7CiAgICAgICAgICB2YXIgcGFuZWwgPSB0aGlzLnBhbmVsLAogICAgICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZSwKICAgICAgICAgICAgICBub2RlID0gdGhpcy5ub2RlOwogICAgICAgICAgcGFuZWwuaGFuZGxlQ2hlY2tDaGFuZ2UodmFsdWUpOwogICAgICAgICAgcGFuZWwuaGFuZGxlRXhwYW5kKG5vZGUpOwogICAgICAgIH0sCiAgICAgICAgaGFuZGxlTXVsdGlDaGVja0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlTXVsdGlDaGVja0NoYW5nZShjaGVja2VkKSB7CiAgICAgICAgICB0aGlzLm5vZGUuZG9DaGVjayhjaGVja2VkKTsKICAgICAgICAgIHRoaXMucGFuZWwuY2FsY3VsYXRlTXVsdGlDaGVja2VkVmFsdWUoKTsKICAgICAgICB9LAogICAgICAgIGlzSW5QYXRoOiBmdW5jdGlvbiBpc0luUGF0aChwYXRoTm9kZXMpIHsKICAgICAgICAgIHZhciBub2RlID0gdGhpcy5ub2RlOwogICAgICAgICAgdmFyIHNlbGVjdGVkUGF0aE5vZGUgPSBwYXRoTm9kZXNbbm9kZS5sZXZlbCAtIDFdIHx8IHt9OwogICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUGF0aE5vZGUudWlkID09PSBub2RlLnVpZDsKICAgICAgICB9LAogICAgICAgIHJlbmRlclByZWZpeDogZnVuY3Rpb24gcmVuZGVyUHJlZml4KGgpIHsKICAgICAgICAgIHZhciBpc0xlYWYgPSB0aGlzLmlzTGVhZiwKICAgICAgICAgICAgICBpc0NoZWNrZWQgPSB0aGlzLmlzQ2hlY2tlZCwKICAgICAgICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZzsKICAgICAgICAgIHZhciBjaGVja1N0cmljdGx5ID0gY29uZmlnLmNoZWNrU3RyaWN0bHksCiAgICAgICAgICAgICAgbXVsdGlwbGUgPSBjb25maWcubXVsdGlwbGU7CgogICAgICAgICAgaWYgKG11bHRpcGxlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckNoZWNrYm94KGgpOwogICAgICAgICAgfSBlbHNlIGlmIChjaGVja1N0cmljdGx5KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlclJhZGlvKGgpOwogICAgICAgICAgfSBlbHNlIGlmIChpc0xlYWYgJiYgaXNDaGVja2VkKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckNoZWNrSWNvbihoKTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9LAogICAgICAgIHJlbmRlclBvc3RmaXg6IGZ1bmN0aW9uIHJlbmRlclBvc3RmaXgoaCkgewogICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLm5vZGUsCiAgICAgICAgICAgICAgaXNMZWFmID0gdGhpcy5pc0xlYWY7CgogICAgICAgICAgaWYgKG5vZGUubG9hZGluZykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJMb2FkaW5nSWNvbihoKTsKICAgICAgICAgIH0gZWxzZSBpZiAoIWlzTGVhZikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJFeHBhbmRJY29uKGgpOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0sCiAgICAgICAgcmVuZGVyQ2hlY2tib3g6IGZ1bmN0aW9uIHJlbmRlckNoZWNrYm94KGgpIHsKICAgICAgICAgIHZhciBub2RlID0gdGhpcy5ub2RlLAogICAgICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAogICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQ7CiAgICAgICAgICB2YXIgZXZlbnRzID0gewogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgIGNoYW5nZTogdGhpcy5oYW5kbGVNdWx0aUNoZWNrQ2hhbmdlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5hdGl2ZU9uOiB7fQogICAgICAgICAgfTsKCiAgICAgICAgICBpZiAoY29uZmlnLmNoZWNrU3RyaWN0bHkpIHsKICAgICAgICAgICAgLy8gd2hlbiBldmVyeSBub2RlIGlzIHNlbGVjdGFibGUsIGNsaWNrIGV2ZW50IHNob3VsZCBub3QgdHJpZ2dlciBleHBhbmQgZXZlbnQuCiAgICAgICAgICAgIGV2ZW50cy5uYXRpdmVPbi5jbGljayA9IHN0b3BQcm9wYWdhdGlvbjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gaCgnZWwtY2hlY2tib3gnLCBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0KCkoW3sKICAgICAgICAgICAgYXR0cnM6IHsKICAgICAgICAgICAgICB2YWx1ZTogbm9kZS5jaGVja2VkLAogICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU6IG5vZGUuaW5kZXRlcm1pbmF0ZSwKICAgICAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZAogICAgICAgICAgICB9CiAgICAgICAgICB9LCBldmVudHNdKSk7CiAgICAgICAgfSwKICAgICAgICByZW5kZXJSYWRpbzogZnVuY3Rpb24gcmVuZGVyUmFkaW8oaCkgewogICAgICAgICAgdmFyIGNoZWNrZWRWYWx1ZSA9IHRoaXMuY2hlY2tlZFZhbHVlLAogICAgICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZSwKICAgICAgICAgICAgICBpc0Rpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkOyAvLyB0byBrZWVwIHNhbWUgcmVmZXJlbmNlIGlmIHZhbHVlIGNhdXNlIHJhZGlvJ3MgY2hlY2tlZCBzdGF0ZSBpcyBjYWxjdWxhdGVkIGJ5IHJlZmVyZW5jZSBjb21wYXJpc2lvbjsKCiAgICAgICAgICBpZiAoT2JqZWN0KHV0aWxfWyJpc0VxdWFsIl0pKHZhbHVlLCBjaGVja2VkVmFsdWUpKSB7CiAgICAgICAgICAgIHZhbHVlID0gY2hlY2tlZFZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBoKCdlbC1yYWRpbycsIHsKICAgICAgICAgICAgYXR0cnM6IHsKICAgICAgICAgICAgICB2YWx1ZTogY2hlY2tlZFZhbHVlLAogICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZSwKICAgICAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZAogICAgICAgICAgICB9LAogICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICdjaGFuZ2UnOiB0aGlzLmhhbmRsZUNoZWNrQ2hhbmdlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5hdGl2ZU9uOiB7CiAgICAgICAgICAgICAgJ2NsaWNrJzogc3RvcFByb3BhZ2F0aW9uCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIFtoKCdzcGFuJyldKTsKICAgICAgICB9LAogICAgICAgIHJlbmRlckNoZWNrSWNvbjogZnVuY3Rpb24gcmVuZGVyQ2hlY2tJY29uKGgpIHsKICAgICAgICAgIHJldHVybiBoKCdpJywgewogICAgICAgICAgICAnY2xhc3MnOiAnZWwtaWNvbi1jaGVjayBlbC1jYXNjYWRlci1ub2RlX19wcmVmaXgnCiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIHJlbmRlckxvYWRpbmdJY29uOiBmdW5jdGlvbiByZW5kZXJMb2FkaW5nSWNvbihoKSB7CiAgICAgICAgICByZXR1cm4gaCgnaScsIHsKICAgICAgICAgICAgJ2NsYXNzJzogJ2VsLWljb24tbG9hZGluZyBlbC1jYXNjYWRlci1ub2RlX19wb3N0Zml4JwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICByZW5kZXJFeHBhbmRJY29uOiBmdW5jdGlvbiByZW5kZXJFeHBhbmRJY29uKGgpIHsKICAgICAgICAgIHJldHVybiBoKCdpJywgewogICAgICAgICAgICAnY2xhc3MnOiAnZWwtaWNvbi1hcnJvdy1yaWdodCBlbC1jYXNjYWRlci1ub2RlX19wb3N0Zml4JwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICByZW5kZXJDb250ZW50OiBmdW5jdGlvbiByZW5kZXJDb250ZW50KGgpIHsKICAgICAgICAgIHZhciBwYW5lbCA9IHRoaXMucGFuZWwsCiAgICAgICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTsKICAgICAgICAgIHZhciByZW5kZXIgPSBwYW5lbC5yZW5kZXJMYWJlbEZuOwogICAgICAgICAgdmFyIHZub2RlID0gcmVuZGVyID8gcmVuZGVyKHsKICAgICAgICAgICAgbm9kZTogbm9kZSwKICAgICAgICAgICAgZGF0YTogbm9kZS5kYXRhCiAgICAgICAgICB9KSA6IG51bGw7CiAgICAgICAgICByZXR1cm4gaCgnc3BhbicsIHsKICAgICAgICAgICAgJ2NsYXNzJzogJ2VsLWNhc2NhZGVyLW5vZGVfX2xhYmVsJwogICAgICAgICAgfSwgW3Zub2RlIHx8IG5vZGUubGFiZWxdKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHsKICAgICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgICAgdmFyIGluQWN0aXZlUGF0aCA9IHRoaXMuaW5BY3RpdmVQYXRoLAogICAgICAgICAgICBpbkNoZWNrZWRQYXRoID0gdGhpcy5pbkNoZWNrZWRQYXRoLAogICAgICAgICAgICBpc0NoZWNrZWQgPSB0aGlzLmlzQ2hlY2tlZCwKICAgICAgICAgICAgaXNMZWFmID0gdGhpcy5pc0xlYWYsCiAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQsCiAgICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAogICAgICAgICAgICBub2RlSWQgPSB0aGlzLm5vZGVJZDsKICAgICAgICB2YXIgZXhwYW5kVHJpZ2dlciA9IGNvbmZpZy5leHBhbmRUcmlnZ2VyLAogICAgICAgICAgICBjaGVja1N0cmljdGx5ID0gY29uZmlnLmNoZWNrU3RyaWN0bHksCiAgICAgICAgICAgIG11bHRpcGxlID0gY29uZmlnLm11bHRpcGxlOwogICAgICAgIHZhciBkaXNhYmxlZCA9ICFjaGVja1N0cmljdGx5ICYmIGlzRGlzYWJsZWQ7CiAgICAgICAgdmFyIGV2ZW50cyA9IHsKICAgICAgICAgIG9uOiB7fQogICAgICAgIH07CgogICAgICAgIGlmIChleHBhbmRUcmlnZ2VyID09PSAnY2xpY2snKSB7CiAgICAgICAgICBldmVudHMub24uY2xpY2sgPSB0aGlzLmhhbmRsZUV4cGFuZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZXZlbnRzLm9uLm1vdXNlZW50ZXIgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBfdGhpczMuaGFuZGxlRXhwYW5kKCk7CgogICAgICAgICAgICBfdGhpczMuJGVtaXQoJ2V4cGFuZCcsIGUpOwogICAgICAgICAgfTsKCiAgICAgICAgICBldmVudHMub24uZm9jdXMgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBfdGhpczMuaGFuZGxlRXhwYW5kKCk7CgogICAgICAgICAgICBfdGhpczMuJGVtaXQoJ2V4cGFuZCcsIGUpOwogICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmIChpc0xlYWYgJiYgIWlzRGlzYWJsZWQgJiYgIWNoZWNrU3RyaWN0bHkgJiYgIW11bHRpcGxlKSB7CiAgICAgICAgICBldmVudHMub24uY2xpY2sgPSB0aGlzLmhhbmRsZUNoZWNrQ2hhbmdlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGgoJ2xpJywgZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfZGVmYXVsdCgpKFt7CiAgICAgICAgICBhdHRyczogewogICAgICAgICAgICByb2xlOiAnbWVudWl0ZW0nLAogICAgICAgICAgICBpZDogbm9kZUlkLAogICAgICAgICAgICAnYXJpYS1leHBhbmRlZCc6IGluQWN0aXZlUGF0aCwKICAgICAgICAgICAgdGFiaW5kZXg6IGRpc2FibGVkID8gbnVsbCA6IC0xCiAgICAgICAgICB9LAogICAgICAgICAgJ2NsYXNzJzogewogICAgICAgICAgICAnZWwtY2FzY2FkZXItbm9kZSc6IHRydWUsCiAgICAgICAgICAgICdpcy1zZWxlY3RhYmxlJzogY2hlY2tTdHJpY3RseSwKICAgICAgICAgICAgJ2luLWFjdGl2ZS1wYXRoJzogaW5BY3RpdmVQYXRoLAogICAgICAgICAgICAnaW4tY2hlY2tlZC1wYXRoJzogaW5DaGVja2VkUGF0aCwKICAgICAgICAgICAgJ2lzLWFjdGl2ZSc6IGlzQ2hlY2tlZCwKICAgICAgICAgICAgJ2lzLWRpc2FibGVkJzogZGlzYWJsZWQKICAgICAgICAgIH0KICAgICAgICB9LCBldmVudHNdKSwgW3RoaXMucmVuZGVyUHJlZml4KGgpLCB0aGlzLnJlbmRlckNvbnRlbnQoaCksIHRoaXMucmVuZGVyUG9zdGZpeChoKV0pOwogICAgICB9CiAgICB9OyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1ub2RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYKCiAgICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgogICAgdmFyIHNyY19jYXNjYWRlcl9ub2RldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gY2FzY2FkZXJfbm9kZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXzsgLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMKCiAgICB2YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLW5vZGUudnVlCgoKICAgIHZhciBjYXNjYWRlcl9ub2RlX3JlbmRlciwgY2FzY2FkZXJfbm9kZV9zdGF0aWNSZW5kZXJGbnM7CiAgICAvKiBub3JtYWxpemUgY29tcG9uZW50ICovCgogICAgdmFyIGNvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyWyJhIgogICAgLyogZGVmYXVsdCAqLwogICAgXSkoc3JjX2Nhc2NhZGVyX25vZGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sIGNhc2NhZGVyX25vZGVfcmVuZGVyLCBjYXNjYWRlcl9ub2RlX3N0YXRpY1JlbmRlckZucywgZmFsc2UsIG51bGwsIG51bGwsIG51bGwpOwogICAgLyogaG90IHJlbG9hZCAqLwoKICAgIGlmIChmYWxzZSkgewogICAgICB2YXIgYXBpOwogICAgfQoKICAgIGNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9ICJwYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbm9kZS52dWUiOwogICAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKICAgIHZhciBjYXNjYWRlcl9ub2RlID0gY29tcG9uZW50LmV4cG9ydHM7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL21peGlucy9sb2NhbGUiCgogICAgdmFyIGxvY2FsZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwoKICAgIHZhciBsb2NhbGVfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4obG9jYWxlXyk7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1tZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYKCiAgICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgoKICAgIHZhciBjYXNjYWRlcl9tZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gewogICAgICBuYW1lOiAnRWxDYXNjYWRlck1lbnUnLAogICAgICBtaXhpbnM6IFtsb2NhbGVfZGVmYXVsdC5hXSwKICAgICAgaW5qZWN0OiBbJ3BhbmVsJ10sCiAgICAgIGNvbXBvbmVudHM6IHsKICAgICAgICBFbFNjcm9sbGJhcjogc2Nyb2xsYmFyX2RlZmF1bHQuYSwKICAgICAgICBDYXNjYWRlck5vZGU6IGNhc2NhZGVyX25vZGUKICAgICAgfSwKICAgICAgcHJvcHM6IHsKICAgICAgICBub2RlczogewogICAgICAgICAgdHlwZTogQXJyYXksCiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgaW5kZXg6IE51bWJlcgogICAgICB9LAogICAgICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICBhY3RpdmVOb2RlOiBudWxsLAogICAgICAgICAgaG92ZXJUaW1lcjogbnVsbCwKICAgICAgICAgIGlkOiBPYmplY3QodXRpbF9bImdlbmVyYXRlSWQiXSkoKQogICAgICAgIH07CiAgICAgIH0sCiAgICAgIGNvbXB1dGVkOiB7CiAgICAgICAgaXNFbXB0eTogZnVuY3Rpb24gaXNFbXB0eSgpIHsKICAgICAgICAgIHJldHVybiAhdGhpcy5ub2Rlcy5sZW5ndGg7CiAgICAgICAgfSwKICAgICAgICBtZW51SWQ6IGZ1bmN0aW9uIG1lbnVJZCgpIHsKICAgICAgICAgIHJldHVybiAnY2FzY2FkZXItbWVudS0nICsgdGhpcy5pZCArICctJyArIHRoaXMuaW5kZXg7CiAgICAgICAgfQogICAgICB9LAogICAgICBtZXRob2RzOiB7CiAgICAgICAgaGFuZGxlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVFeHBhbmQoZSkgewogICAgICAgICAgdGhpcy5hY3RpdmVOb2RlID0gZS50YXJnZXQ7CiAgICAgICAgfSwKICAgICAgICBoYW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShlKSB7CiAgICAgICAgICB2YXIgYWN0aXZlTm9kZSA9IHRoaXMuYWN0aXZlTm9kZSwKICAgICAgICAgICAgICBob3ZlclRpbWVyID0gdGhpcy5ob3ZlclRpbWVyOwogICAgICAgICAgdmFyIGhvdmVyWm9uZSA9IHRoaXMuJHJlZnMuaG92ZXJab25lOwogICAgICAgICAgaWYgKCFhY3RpdmVOb2RlIHx8ICFob3ZlclpvbmUpIHJldHVybjsKCiAgICAgICAgICBpZiAoYWN0aXZlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHsKICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGhvdmVyVGltZXIpOwoKICAgICAgICAgICAgdmFyIF8kZWwkZ2V0Qm91bmRpbmdDbGllbiA9IHRoaXMuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgbGVmdCA9IF8kZWwkZ2V0Qm91bmRpbmdDbGllbi5sZWZ0OwoKICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGUuY2xpZW50WCAtIGxlZnQ7CiAgICAgICAgICAgIHZhciBfJGVsID0gdGhpcy4kZWwsCiAgICAgICAgICAgICAgICBvZmZzZXRXaWR0aCA9IF8kZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICBvZmZzZXRIZWlnaHQgPSBfJGVsLm9mZnNldEhlaWdodDsKICAgICAgICAgICAgdmFyIHRvcCA9IGFjdGl2ZU5vZGUub2Zmc2V0VG9wOwogICAgICAgICAgICB2YXIgYm90dG9tID0gdG9wICsgYWN0aXZlTm9kZS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgICAgIGhvdmVyWm9uZS5pbm5lckhUTUwgPSAnXG4gICAgICAgICAgPHBhdGggc3R5bGU9InBvaW50ZXItZXZlbnRzOiBhdXRvOyIgZmlsbD0idHJhbnNwYXJlbnQiIGQ9Ik0nICsgc3RhcnRYICsgJyAnICsgdG9wICsgJyBMJyArIG9mZnNldFdpZHRoICsgJyAwIFYnICsgdG9wICsgJyBaIiAvPlxuICAgICAgICAgIDxwYXRoIHN0eWxlPSJwb2ludGVyLWV2ZW50czogYXV0bzsiIGZpbGw9InRyYW5zcGFyZW50IiBkPSJNJyArIHN0YXJ0WCArICcgJyArIGJvdHRvbSArICcgTCcgKyBvZmZzZXRXaWR0aCArICcgJyArIG9mZnNldEhlaWdodCArICcgVicgKyBib3R0b20gKyAnIFoiIC8+XG4gICAgICAgICc7CiAgICAgICAgICB9IGVsc2UgaWYgKCFob3ZlclRpbWVyKSB7CiAgICAgICAgICAgIHRoaXMuaG92ZXJUaW1lciA9IHNldFRpbWVvdXQodGhpcy5jbGVhckhvdmVyWm9uZSwgdGhpcy5wYW5lbC5jb25maWcuaG92ZXJUaHJlc2hvbGQpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY2xlYXJIb3ZlclpvbmU6IGZ1bmN0aW9uIGNsZWFySG92ZXJab25lKCkgewogICAgICAgICAgdmFyIGhvdmVyWm9uZSA9IHRoaXMuJHJlZnMuaG92ZXJab25lOwogICAgICAgICAgaWYgKCFob3ZlclpvbmUpIHJldHVybjsKICAgICAgICAgIGhvdmVyWm9uZS5pbm5lckhUTUwgPSAnJzsKICAgICAgICB9LAogICAgICAgIHJlbmRlckVtcHR5VGV4dDogZnVuY3Rpb24gcmVuZGVyRW1wdHlUZXh0KGgpIHsKICAgICAgICAgIHJldHVybiBoKCdkaXYnLCB7CiAgICAgICAgICAgICdjbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51X19lbXB0eS10ZXh0JwogICAgICAgICAgfSwgW3RoaXMudCgnZWwuY2FzY2FkZXIubm9EYXRhJyldKTsKICAgICAgICB9LAogICAgICAgIHJlbmRlck5vZGVMaXN0OiBmdW5jdGlvbiByZW5kZXJOb2RlTGlzdChoKSB7CiAgICAgICAgICB2YXIgbWVudUlkID0gdGhpcy5tZW51SWQ7CiAgICAgICAgICB2YXIgaXNIb3Zlck1lbnUgPSB0aGlzLnBhbmVsLmlzSG92ZXJNZW51OwogICAgICAgICAgdmFyIGV2ZW50cyA9IHsKICAgICAgICAgICAgb246IHt9CiAgICAgICAgICB9OwoKICAgICAgICAgIGlmIChpc0hvdmVyTWVudSkgewogICAgICAgICAgICBldmVudHMub24uZXhwYW5kID0gdGhpcy5oYW5kbGVFeHBhbmQ7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5ub2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUsIGluZGV4KSB7CiAgICAgICAgICAgIHZhciBoYXNDaGlsZHJlbiA9IG5vZGUuaGFzQ2hpbGRyZW47CiAgICAgICAgICAgIHJldHVybiBoKCdjYXNjYWRlci1ub2RlJywgZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfZGVmYXVsdCgpKFt7CiAgICAgICAgICAgICAga2V5OiBub2RlLnVpZCwKICAgICAgICAgICAgICBhdHRyczogewogICAgICAgICAgICAgICAgbm9kZTogbm9kZSwKICAgICAgICAgICAgICAgICdub2RlLWlkJzogbWVudUlkICsgJy0nICsgaW5kZXgsCiAgICAgICAgICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IGhhc0NoaWxkcmVuLAogICAgICAgICAgICAgICAgJ2FyaWEtb3ducyc6IGhhc0NoaWxkcmVuID8gbWVudUlkIDogbnVsbAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgZXZlbnRzXSkpOwogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KG5vZGVzLCBbaXNIb3Zlck1lbnUgPyBoKCdzdmcnLCB7CiAgICAgICAgICAgIHJlZjogJ2hvdmVyWm9uZScsCiAgICAgICAgICAgICdjbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51X19ob3Zlci16b25lJwogICAgICAgICAgfSkgOiBudWxsXSk7CiAgICAgICAgfQogICAgICB9LAogICAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7CiAgICAgICAgdmFyIGlzRW1wdHkgPSB0aGlzLmlzRW1wdHksCiAgICAgICAgICAgIG1lbnVJZCA9IHRoaXMubWVudUlkOwogICAgICAgIHZhciBldmVudHMgPSB7CiAgICAgICAgICBuYXRpdmVPbjoge30KICAgICAgICB9OyAvLyBvcHRpbWl6ZSBob3ZlciB0byBleHBhbmQgZXhwZXJpZW5jZSAoIzgwMTApCgogICAgICAgIGlmICh0aGlzLnBhbmVsLmlzSG92ZXJNZW51KSB7CiAgICAgICAgICBldmVudHMubmF0aXZlT24ubW91c2Vtb3ZlID0gdGhpcy5oYW5kbGVNb3VzZU1vdmU7IC8vIGV2ZW50cy5uYXRpdmVPbi5tb3VzZWxlYXZlID0gdGhpcy5jbGVhckhvdmVyWm9uZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBoKCdlbC1zY3JvbGxiYXInLCBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0KCkoW3sKICAgICAgICAgIGF0dHJzOiB7CiAgICAgICAgICAgIHRhZzogJ3VsJywKICAgICAgICAgICAgcm9sZTogJ21lbnUnLAogICAgICAgICAgICBpZDogbWVudUlkLAogICAgICAgICAgICAnd3JhcC1jbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51X193cmFwJywKICAgICAgICAgICAgJ3ZpZXctY2xhc3MnOiB7CiAgICAgICAgICAgICAgJ2VsLWNhc2NhZGVyLW1lbnVfX2xpc3QnOiB0cnVlLAogICAgICAgICAgICAgICdpcy1lbXB0eSc6IGlzRW1wdHkKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICdjbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51JwogICAgICAgIH0sIGV2ZW50c10pLCBbaXNFbXB0eSA/IHRoaXMucmVuZGVyRW1wdHlUZXh0KGgpIDogdGhpcy5yZW5kZXJOb2RlTGlzdChoKV0pOwogICAgICB9CiAgICB9OyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1tZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYKCiAgICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgogICAgdmFyIHNyY19jYXNjYWRlcl9tZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gY2FzY2FkZXJfbWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXzsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbWVudS52dWUKCiAgICB2YXIgY2FzY2FkZXJfbWVudV9yZW5kZXIsIGNhc2NhZGVyX21lbnVfc3RhdGljUmVuZGVyRm5zOwogICAgLyogbm9ybWFsaXplIGNvbXBvbmVudCAqLwoKICAgIHZhciBjYXNjYWRlcl9tZW51X2NvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyWyJhIgogICAgLyogZGVmYXVsdCAqLwogICAgXSkoc3JjX2Nhc2NhZGVyX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sIGNhc2NhZGVyX21lbnVfcmVuZGVyLCBjYXNjYWRlcl9tZW51X3N0YXRpY1JlbmRlckZucywgZmFsc2UsIG51bGwsIG51bGwsIG51bGwpOwogICAgLyogaG90IHJlbG9hZCAqLwoKICAgIGlmIChmYWxzZSkgewogICAgICB2YXIgY2FzY2FkZXJfbWVudV9hcGk7CiAgICB9CgogICAgY2FzY2FkZXJfbWVudV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSAicGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLW1lbnUudnVlIjsKICAgIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCiAgICB2YXIgY2FzY2FkZXJfbWVudSA9IGNhc2NhZGVyX21lbnVfY29tcG9uZW50LmV4cG9ydHM7IC8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgImVsZW1lbnQtdWkvbGliL3V0aWxzL3NoYXJlZCIKCiAgICB2YXIgc2hhcmVkXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpOyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9ub2RlLmpzCgoKICAgIHZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07CiAgICAgICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7CiAgICAgICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7CiAgICAgICAgICBpZiAoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsKICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7CiAgICAgICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsKICAgICAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsKICAgICAgICByZXR1cm4gQ29uc3RydWN0b3I7CiAgICAgIH07CiAgICB9KCk7CgogICAgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgewogICAgICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgewogICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOwogICAgICB9CiAgICB9CgogICAgdmFyIHVpZCA9IDA7CgogICAgdmFyIG5vZGVfTm9kZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gTm9kZShkYXRhLCBjb25maWcsIHBhcmVudE5vZGUpIHsKICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZSk7CgogICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7CiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnROb2RlIHx8IG51bGw7CiAgICAgICAgdGhpcy5sZXZlbCA9ICF0aGlzLnBhcmVudCA/IDEgOiB0aGlzLnBhcmVudC5sZXZlbCArIDE7CiAgICAgICAgdGhpcy51aWQgPSB1aWQrKzsKICAgICAgICB0aGlzLmluaXRTdGF0ZSgpOwogICAgICAgIHRoaXMuaW5pdENoaWxkcmVuKCk7CiAgICAgIH0KCiAgICAgIE5vZGUucHJvdG90eXBlLmluaXRTdGF0ZSA9IGZ1bmN0aW9uIGluaXRTdGF0ZSgpIHsKICAgICAgICB2YXIgX2NvbmZpZyA9IHRoaXMuY29uZmlnLAogICAgICAgICAgICB2YWx1ZUtleSA9IF9jb25maWcudmFsdWUsCiAgICAgICAgICAgIGxhYmVsS2V5ID0gX2NvbmZpZy5sYWJlbDsKICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5kYXRhW3ZhbHVlS2V5XTsKICAgICAgICB0aGlzLmxhYmVsID0gdGhpcy5kYXRhW2xhYmVsS2V5XTsKICAgICAgICB0aGlzLnBhdGhOb2RlcyA9IHRoaXMuY2FsY3VsYXRlUGF0aE5vZGVzKCk7CiAgICAgICAgdGhpcy5wYXRoID0gdGhpcy5wYXRoTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLnBhdGhMYWJlbHMgPSB0aGlzLnBhdGhOb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgIHJldHVybiBub2RlLmxhYmVsOwogICAgICAgIH0pOyAvLyBsYXp5IGxvYWQKCiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5sb2FkZWQgPSBmYWxzZTsKICAgICAgfTsKCiAgICAgIE5vZGUucHJvdG90eXBlLmluaXRDaGlsZHJlbiA9IGZ1bmN0aW9uIGluaXRDaGlsZHJlbigpIHsKICAgICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jb25maWc7CiAgICAgICAgdmFyIGNoaWxkcmVuS2V5ID0gY29uZmlnLmNoaWxkcmVuOwogICAgICAgIHZhciBjaGlsZHJlbkRhdGEgPSB0aGlzLmRhdGFbY2hpbGRyZW5LZXldOwogICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuRGF0YSk7CiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IChjaGlsZHJlbkRhdGEgfHwgW10pLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiBuZXcgTm9kZShjaGlsZCwgY29uZmlnLCBfdGhpcyk7CiAgICAgICAgfSk7CiAgICAgIH07CgogICAgICBOb2RlLnByb3RvdHlwZS5jYWxjdWxhdGVQYXRoTm9kZXMgPSBmdW5jdGlvbiBjYWxjdWxhdGVQYXRoTm9kZXMoKSB7CiAgICAgICAgdmFyIG5vZGVzID0gW3RoaXNdOwogICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudDsKCiAgICAgICAgd2hpbGUgKHBhcmVudCkgewogICAgICAgICAgbm9kZXMudW5zaGlmdChwYXJlbnQpOwogICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBub2RlczsKICAgICAgfTsKCiAgICAgIE5vZGUucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiBnZXRQYXRoKCkgewogICAgICAgIHJldHVybiB0aGlzLnBhdGg7CiAgICAgIH07CgogICAgICBOb2RlLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uIGdldFZhbHVlKCkgewogICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwogICAgICB9OwoKICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0VmFsdWVCeU9wdGlvbiA9IGZ1bmN0aW9uIGdldFZhbHVlQnlPcHRpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmVtaXRQYXRoID8gdGhpcy5nZXRQYXRoKCkgOiB0aGlzLmdldFZhbHVlKCk7CiAgICAgIH07CgogICAgICBOb2RlLnByb3RvdHlwZS5nZXRUZXh0ID0gZnVuY3Rpb24gZ2V0VGV4dChhbGxMZXZlbHMsIHNlcGFyYXRvcikgewogICAgICAgIHJldHVybiBhbGxMZXZlbHMgPyB0aGlzLnBhdGhMYWJlbHMuam9pbihzZXBhcmF0b3IpIDogdGhpcy5sYWJlbDsKICAgICAgfTsKCiAgICAgIE5vZGUucHJvdG90eXBlLmlzU2FtZU5vZGUgPSBmdW5jdGlvbiBpc1NhbWVOb2RlKGNoZWNrZWRWYWx1ZSkgewogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVCeU9wdGlvbigpOwogICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KGNoZWNrZWRWYWx1ZSkgPyBjaGVja2VkVmFsdWUuc29tZShmdW5jdGlvbiAodmFsKSB7CiAgICAgICAgICByZXR1cm4gT2JqZWN0KHV0aWxfWyJpc0VxdWFsIl0pKHZhbCwgdmFsdWUpOwogICAgICAgIH0pIDogT2JqZWN0KHV0aWxfWyJpc0VxdWFsIl0pKGNoZWNrZWRWYWx1ZSwgdmFsdWUpOwogICAgICB9OwoKICAgICAgTm9kZS5wcm90b3R5cGUuYnJvYWRjYXN0ID0gZnVuY3Rpb24gYnJvYWRjYXN0KGV2ZW50KSB7CiAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CiAgICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKICAgICAgICB9CgogICAgICAgIHZhciBoYW5kbGVyTmFtZSA9ICdvblBhcmVudCcgKyBPYmplY3QodXRpbF9bImNhcGl0YWxpemUiXSkoZXZlbnQpOwogICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIGlmIChjaGlsZCkgewogICAgICAgICAgICAvLyBib3R0b20gdXAKICAgICAgICAgICAgY2hpbGQuYnJvYWRjYXN0LmFwcGx5KGNoaWxkLCBbZXZlbnRdLmNvbmNhdChhcmdzKSk7CiAgICAgICAgICAgIGNoaWxkW2hhbmRsZXJOYW1lXSAmJiBjaGlsZFtoYW5kbGVyTmFtZV0uYXBwbHkoY2hpbGQsIGFyZ3MpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9OwoKICAgICAgTm9kZS5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQoZXZlbnQpIHsKICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnQ7CiAgICAgICAgdmFyIGhhbmRsZXJOYW1lID0gJ29uQ2hpbGQnICsgT2JqZWN0KHV0aWxfWyJjYXBpdGFsaXplIl0pKGV2ZW50KTsKCiAgICAgICAgaWYgKHBhcmVudCkgewogICAgICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykgewogICAgICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdOwogICAgICAgICAgfQoKICAgICAgICAgIHBhcmVudFtoYW5kbGVyTmFtZV0gJiYgcGFyZW50W2hhbmRsZXJOYW1lXS5hcHBseShwYXJlbnQsIGFyZ3MpOwogICAgICAgICAgcGFyZW50LmVtaXQuYXBwbHkocGFyZW50LCBbZXZlbnRdLmNvbmNhdChhcmdzKSk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgTm9kZS5wcm90b3R5cGUub25QYXJlbnRDaGVjayA9IGZ1bmN0aW9uIG9uUGFyZW50Q2hlY2soY2hlY2tlZCkgewogICAgICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7CiAgICAgICAgICB0aGlzLnNldENoZWNrU3RhdGUoY2hlY2tlZCk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgTm9kZS5wcm90b3R5cGUub25DaGlsZENoZWNrID0gZnVuY3Rpb24gb25DaGlsZENoZWNrKCkgewogICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47CiAgICAgICAgdmFyIHZhbGlkQ2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4gIWNoaWxkLmlzRGlzYWJsZWQ7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGNoZWNrZWQgPSB2YWxpZENoaWxkcmVuLmxlbmd0aCA/IHZhbGlkQ2hpbGRyZW4uZXZlcnkoZnVuY3Rpb24gKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4gY2hpbGQuY2hlY2tlZDsKICAgICAgICB9KSA6IGZhbHNlOwogICAgICAgIHRoaXMuc2V0Q2hlY2tTdGF0ZShjaGVja2VkKTsKICAgICAgfTsKCiAgICAgIE5vZGUucHJvdG90eXBlLnNldENoZWNrU3RhdGUgPSBmdW5jdGlvbiBzZXRDaGVja1N0YXRlKGNoZWNrZWQpIHsKICAgICAgICB2YXIgdG90YWxOdW0gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsKICAgICAgICB2YXIgY2hlY2tlZE51bSA9IHRoaXMuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uIChjLCBwKSB7CiAgICAgICAgICB2YXIgbnVtID0gcC5jaGVja2VkID8gMSA6IHAuaW5kZXRlcm1pbmF0ZSA/IDAuNSA6IDA7CiAgICAgICAgICByZXR1cm4gYyArIG51bTsKICAgICAgICB9LCAwKTsKICAgICAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkOwogICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGNoZWNrZWROdW0gIT09IHRvdGFsTnVtICYmIGNoZWNrZWROdW0gPiAwOwogICAgICB9OwoKICAgICAgTm9kZS5wcm90b3R5cGUuc3luY0NoZWNrU3RhdGUgPSBmdW5jdGlvbiBzeW5jQ2hlY2tTdGF0ZShjaGVja2VkVmFsdWUpIHsKICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmdldFZhbHVlQnlPcHRpb24oKTsKICAgICAgICB2YXIgY2hlY2tlZCA9IHRoaXMuaXNTYW1lTm9kZShjaGVja2VkVmFsdWUsIHZhbHVlKTsKICAgICAgICB0aGlzLmRvQ2hlY2soY2hlY2tlZCk7CiAgICAgIH07CgogICAgICBOb2RlLnByb3RvdHlwZS5kb0NoZWNrID0gZnVuY3Rpb24gZG9DaGVjayhjaGVja2VkKSB7CiAgICAgICAgaWYgKHRoaXMuY2hlY2tlZCAhPT0gY2hlY2tlZCkgewogICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNoZWNrU3RyaWN0bHkpIHsKICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIGJvdHRvbSB1cCB0byB1bmlmeSB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGluZGV0ZXJtaW5hdGUgc3RhdGUKICAgICAgICAgICAgdGhpcy5icm9hZGNhc3QoJ2NoZWNrJywgY2hlY2tlZCk7CiAgICAgICAgICAgIHRoaXMuc2V0Q2hlY2tTdGF0ZShjaGVja2VkKTsKICAgICAgICAgICAgdGhpcy5lbWl0KCdjaGVjaycpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfTsKCiAgICAgIF9jcmVhdGVDbGFzcyhOb2RlLCBbewogICAgICAgIGtleTogJ2lzRGlzYWJsZWQnLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEsCiAgICAgICAgICAgICAgcGFyZW50ID0gdGhpcy5wYXJlbnQsCiAgICAgICAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWc7CiAgICAgICAgICB2YXIgZGlzYWJsZWRLZXkgPSBjb25maWcuZGlzYWJsZWQ7CiAgICAgICAgICB2YXIgY2hlY2tTdHJpY3RseSA9IGNvbmZpZy5jaGVja1N0cmljdGx5OwogICAgICAgICAgcmV0dXJuIGRhdGFbZGlzYWJsZWRLZXldIHx8ICFjaGVja1N0cmljdGx5ICYmIHBhcmVudCAmJiBwYXJlbnQuaXNEaXNhYmxlZDsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBrZXk6ICdpc0xlYWYnLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEsCiAgICAgICAgICAgICAgbG9hZGVkID0gdGhpcy5sb2FkZWQsCiAgICAgICAgICAgICAgaGFzQ2hpbGRyZW4gPSB0aGlzLmhhc0NoaWxkcmVuLAogICAgICAgICAgICAgIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjsKICAgICAgICAgIHZhciBfY29uZmlnMiA9IHRoaXMuY29uZmlnLAogICAgICAgICAgICAgIGxhenkgPSBfY29uZmlnMi5sYXp5LAogICAgICAgICAgICAgIGxlYWZLZXkgPSBfY29uZmlnMi5sZWFmOwoKICAgICAgICAgIGlmIChsYXp5KSB7CiAgICAgICAgICAgIHZhciBpc0xlYWYgPSBPYmplY3Qoc2hhcmVkX1siaXNEZWYiXSkoZGF0YVtsZWFmS2V5XSkgPyBkYXRhW2xlYWZLZXldIDogbG9hZGVkID8gIWNoaWxkcmVuLmxlbmd0aCA6IGZhbHNlOwogICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gIWlzTGVhZjsKICAgICAgICAgICAgcmV0dXJuIGlzTGVhZjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gIWhhc0NoaWxkcmVuOwogICAgICAgIH0KICAgICAgfV0pOwoKICAgICAgcmV0dXJuIE5vZGU7CiAgICB9KCk7CiAgICAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovCgoKICAgIHZhciBzcmNfbm9kZSA9IG5vZGVfTm9kZTsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvc3RvcmUuanMKCiAgICBmdW5jdGlvbiBzdG9yZV9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsKICAgICAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsKICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsKICAgICAgfQogICAgfQoKICAgIHZhciBmbGF0Tm9kZXMgPSBmdW5jdGlvbiBmbGF0Tm9kZXMoZGF0YSwgbGVhZk9ubHkpIHsKICAgICAgcmV0dXJuIGRhdGEucmVkdWNlKGZ1bmN0aW9uIChyZXMsIG5vZGUpIHsKICAgICAgICBpZiAobm9kZS5pc0xlYWYpIHsKICAgICAgICAgIHJlcy5wdXNoKG5vZGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAhbGVhZk9ubHkgJiYgcmVzLnB1c2gobm9kZSk7CiAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGZsYXROb2Rlcyhub2RlLmNoaWxkcmVuLCBsZWFmT25seSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlczsKICAgICAgfSwgW10pOwogICAgfTsKCiAgICB2YXIgc3RvcmVfU3RvcmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIFN0b3JlKGRhdGEsIGNvbmZpZykgewogICAgICAgIHN0b3JlX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0b3JlKTsKICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZzsKICAgICAgICB0aGlzLmluaXROb2RlcyhkYXRhKTsKICAgICAgfQoKICAgICAgU3RvcmUucHJvdG90eXBlLmluaXROb2RlcyA9IGZ1bmN0aW9uIGluaXROb2RlcyhkYXRhKSB7CiAgICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgICAgZGF0YSA9IE9iamVjdCh1dGlsX1siY29lcmNlVHJ1dGh5VmFsdWVUb0FycmF5Il0pKGRhdGEpOwogICAgICAgIHRoaXMubm9kZXMgPSBkYXRhLm1hcChmdW5jdGlvbiAobm9kZURhdGEpIHsKICAgICAgICAgIHJldHVybiBuZXcgc3JjX25vZGUobm9kZURhdGEsIF90aGlzLmNvbmZpZyk7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5mbGF0dGVkTm9kZXMgPSB0aGlzLmdldEZsYXR0ZWROb2RlcyhmYWxzZSwgZmFsc2UpOwogICAgICAgIHRoaXMubGVhZk5vZGVzID0gdGhpcy5nZXRGbGF0dGVkTm9kZXModHJ1ZSwgZmFsc2UpOwogICAgICB9OwoKICAgICAgU3RvcmUucHJvdG90eXBlLmFwcGVuZE5vZGUgPSBmdW5jdGlvbiBhcHBlbmROb2RlKG5vZGVEYXRhLCBwYXJlbnROb2RlKSB7CiAgICAgICAgdmFyIG5vZGUgPSBuZXcgc3JjX25vZGUobm9kZURhdGEsIHRoaXMuY29uZmlnLCBwYXJlbnROb2RlKTsKICAgICAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnROb2RlID8gcGFyZW50Tm9kZS5jaGlsZHJlbiA6IHRoaXMubm9kZXM7CiAgICAgICAgY2hpbGRyZW4ucHVzaChub2RlKTsKICAgICAgfTsKCiAgICAgIFN0b3JlLnByb3RvdHlwZS5hcHBlbmROb2RlcyA9IGZ1bmN0aW9uIGFwcGVuZE5vZGVzKG5vZGVEYXRhTGlzdCwgcGFyZW50Tm9kZSkgewogICAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgICBub2RlRGF0YUxpc3QgPSBPYmplY3QodXRpbF9bImNvZXJjZVRydXRoeVZhbHVlVG9BcnJheSJdKShub2RlRGF0YUxpc3QpOwogICAgICAgIG5vZGVEYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRGF0YSkgewogICAgICAgICAgcmV0dXJuIF90aGlzMi5hcHBlbmROb2RlKG5vZGVEYXRhLCBwYXJlbnROb2RlKTsKICAgICAgICB9KTsKICAgICAgfTsKCiAgICAgIFN0b3JlLnByb3RvdHlwZS5nZXROb2RlcyA9IGZ1bmN0aW9uIGdldE5vZGVzKCkgewogICAgICAgIHJldHVybiB0aGlzLm5vZGVzOwogICAgICB9OwoKICAgICAgU3RvcmUucHJvdG90eXBlLmdldEZsYXR0ZWROb2RlcyA9IGZ1bmN0aW9uIGdldEZsYXR0ZWROb2RlcyhsZWFmT25seSkgewogICAgICAgIHZhciBjYWNoZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7CiAgICAgICAgdmFyIGNhY2hlZE5vZGVzID0gbGVhZk9ubHkgPyB0aGlzLmxlYWZOb2RlcyA6IHRoaXMuZmxhdHRlZE5vZGVzOwogICAgICAgIHJldHVybiBjYWNoZWQgPyBjYWNoZWROb2RlcyA6IGZsYXROb2Rlcyh0aGlzLm5vZGVzLCBsZWFmT25seSk7CiAgICAgIH07CgogICAgICBTdG9yZS5wcm90b3R5cGUuZ2V0Tm9kZUJ5VmFsdWUgPSBmdW5jdGlvbiBnZXROb2RlQnlWYWx1ZSh2YWx1ZSkgewogICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5nZXRGbGF0dGVkTm9kZXMoZmFsc2UsICF0aGlzLmNvbmZpZy5sYXp5KS5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1sidmFsdWVFcXVhbHMiXSkobm9kZS5wYXRoLCB2YWx1ZSkgfHwgbm9kZS52YWx1ZSA9PT0gdmFsdWU7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiBub2RlcyAmJiBub2Rlcy5sZW5ndGggPyBub2Rlc1swXSA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfTsKCiAgICAgIHJldHVybiBTdG9yZTsKICAgIH0oKTsKICAgIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCgogICAgdmFyIHNyY19zdG9yZSA9IHN0b3JlX1N0b3JlOyAvLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsICJlbGVtZW50LXVpL2xpYi91dGlscy9tZXJnZSIKCiAgICB2YXIgbWVyZ2VfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKCiAgICB2YXIgbWVyZ2VfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4obWVyZ2VfKTsgLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCAiZWxlbWVudC11aS9saWIvdXRpbHMvYXJpYS11dGlscyIKCgogICAgdmFyIGFyaWFfdXRpbHNfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7CgogICAgdmFyIGFyaWFfdXRpbHNfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oYXJpYV91dGlsc18pOyAvLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsICJlbGVtZW50LXVpL2xpYi91dGlscy9zY3JvbGwtaW50by12aWV3IgoKCiAgICB2YXIgc2Nyb2xsX2ludG9fdmlld18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTsKCiAgICB2YXIgc2Nyb2xsX2ludG9fdmlld19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihzY3JvbGxfaW50b192aWV3Xyk7IC8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmCgoKICAgIHZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgewogICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CgogICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsKICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7CiAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gdGFyZ2V0OwogICAgfTsgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KICAgIC8vCiAgICAvLwogICAgLy8KCgogICAgdmFyIEtleUNvZGUgPSBhcmlhX3V0aWxzX2RlZmF1bHQuYS5rZXlzOwogICAgdmFyIERlZmF1bHRQcm9wcyA9IHsKICAgICAgZXhwYW5kVHJpZ2dlcjogJ2NsaWNrJywKICAgICAgLy8gb3IgaG92ZXIKICAgICAgbXVsdGlwbGU6IGZhbHNlLAogICAgICBjaGVja1N0cmljdGx5OiBmYWxzZSwKICAgICAgLy8gd2hldGhlciBhbGwgbm9kZXMgY2FuIGJlIHNlbGVjdGVkCiAgICAgIGVtaXRQYXRoOiB0cnVlLAogICAgICAvLyB3ZXRoZXIgdG8gZW1pdCBhbiBhcnJheSBvZiBhbGwgbGV2ZWxzIHZhbHVlIGluIHdoaWNoIG5vZGUgaXMgbG9jYXRlZAogICAgICBsYXp5OiBmYWxzZSwKICAgICAgbGF6eUxvYWQ6IHV0aWxfWyJub29wIl0sCiAgICAgIHZhbHVlOiAndmFsdWUnLAogICAgICBsYWJlbDogJ2xhYmVsJywKICAgICAgY2hpbGRyZW46ICdjaGlsZHJlbicsCiAgICAgIGxlYWY6ICdsZWFmJywKICAgICAgZGlzYWJsZWQ6ICdkaXNhYmxlZCcsCiAgICAgIGhvdmVyVGhyZXNob2xkOiA1MDAKICAgIH07CgogICAgdmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfaXNMZWFmID0gZnVuY3Rpb24gaXNMZWFmKGVsKSB7CiAgICAgIHJldHVybiAhZWwuZ2V0QXR0cmlidXRlKCdhcmlhLW93bnMnKTsKICAgIH07CgogICAgdmFyIGdldFNpYmxpbmcgPSBmdW5jdGlvbiBnZXRTaWJsaW5nKGVsLCBkaXN0YW5jZSkgewogICAgICB2YXIgcGFyZW50Tm9kZSA9IGVsLnBhcmVudE5vZGU7CgogICAgICBpZiAocGFyZW50Tm9kZSkgewogICAgICAgIHZhciBzaWJsaW5ncyA9IHBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgnLmVsLWNhc2NhZGVyLW5vZGVbdGFiaW5kZXg9Ii0xIl0nKTsKICAgICAgICB2YXIgaW5kZXggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHNpYmxpbmdzLCBlbCk7CiAgICAgICAgcmV0dXJuIHNpYmxpbmdzW2luZGV4ICsgZGlzdGFuY2VdIHx8IG51bGw7CiAgICAgIH0KCiAgICAgIHJldHVybiBudWxsOwogICAgfTsKCiAgICB2YXIgZ2V0TWVudUluZGV4ID0gZnVuY3Rpb24gZ2V0TWVudUluZGV4KGVsLCBkaXN0YW5jZSkgewogICAgICBpZiAoIWVsKSByZXR1cm47CiAgICAgIHZhciBwaWVjZXMgPSBlbC5pZC5zcGxpdCgnLScpOwogICAgICByZXR1cm4gTnVtYmVyKHBpZWNlc1twaWVjZXMubGVuZ3RoIC0gMl0pOwogICAgfTsKCiAgICB2YXIgZm9jdXNOb2RlID0gZnVuY3Rpb24gZm9jdXNOb2RlKGVsKSB7CiAgICAgIGlmICghZWwpIHJldHVybjsKICAgICAgZWwuZm9jdXMoKTsKICAgICAgIWNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfaXNMZWFmKGVsKSAmJiBlbC5jbGljaygpOwogICAgfTsKCiAgICB2YXIgY2hlY2tOb2RlID0gZnVuY3Rpb24gY2hlY2tOb2RlKGVsKSB7CiAgICAgIGlmICghZWwpIHJldHVybjsKICAgICAgdmFyIGlucHV0ID0gZWwucXVlcnlTZWxlY3RvcignaW5wdXQnKTsKCiAgICAgIGlmIChpbnB1dCkgewogICAgICAgIGlucHV0LmNsaWNrKCk7CiAgICAgIH0gZWxzZSBpZiAoY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19pc0xlYWYoZWwpKSB7CiAgICAgICAgZWwuY2xpY2soKTsKICAgICAgfQogICAgfTsKICAgIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCgogICAgdmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gewogICAgICBuYW1lOiAnRWxDYXNjYWRlclBhbmVsJywKICAgICAgY29tcG9uZW50czogewogICAgICAgIENhc2NhZGVyTWVudTogY2FzY2FkZXJfbWVudQogICAgICB9LAogICAgICBwcm9wczogewogICAgICAgIHZhbHVlOiB7fSwKICAgICAgICBvcHRpb25zOiBBcnJheSwKICAgICAgICBwcm9wczogT2JqZWN0LAogICAgICAgIGJvcmRlcjogewogICAgICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgICB9LAogICAgICAgIHJlbmRlckxhYmVsOiBGdW5jdGlvbgogICAgICB9LAogICAgICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICBwYW5lbDogdGhpcwogICAgICAgIH07CiAgICAgIH0sCiAgICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGNoZWNrZWRWYWx1ZTogbnVsbCwKICAgICAgICAgIGNoZWNrZWROb2RlUGF0aHM6IFtdLAogICAgICAgICAgc3RvcmU6IFtdLAogICAgICAgICAgbWVudXM6IFtdLAogICAgICAgICAgYWN0aXZlUGF0aDogW10sCiAgICAgICAgICBsb2FkQ291bnQ6IDAKICAgICAgICB9OwogICAgICB9LAogICAgICBjb21wdXRlZDogewogICAgICAgIGNvbmZpZzogZnVuY3Rpb24gY29uZmlnKCkgewogICAgICAgICAgcmV0dXJuIG1lcmdlX2RlZmF1bHQoKShfZXh0ZW5kcyh7fSwgRGVmYXVsdFByb3BzKSwgdGhpcy5wcm9wcyB8fCB7fSk7CiAgICAgICAgfSwKICAgICAgICBtdWx0aXBsZTogZnVuY3Rpb24gbXVsdGlwbGUoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubXVsdGlwbGU7CiAgICAgICAgfSwKICAgICAgICBjaGVja1N0cmljdGx5OiBmdW5jdGlvbiBjaGVja1N0cmljdGx5KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmNoZWNrU3RyaWN0bHk7CiAgICAgICAgfSwKICAgICAgICBsZWFmT25seTogZnVuY3Rpb24gbGVhZk9ubHkoKSB7CiAgICAgICAgICByZXR1cm4gIXRoaXMuY2hlY2tTdHJpY3RseTsKICAgICAgICB9LAogICAgICAgIGlzSG92ZXJNZW51OiBmdW5jdGlvbiBpc0hvdmVyTWVudSgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5leHBhbmRUcmlnZ2VyID09PSAnaG92ZXInOwogICAgICAgIH0sCiAgICAgICAgcmVuZGVyTGFiZWxGbjogZnVuY3Rpb24gcmVuZGVyTGFiZWxGbigpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckxhYmVsIHx8IHRoaXMuJHNjb3BlZFNsb3RzLmRlZmF1bHQ7CiAgICAgICAgfQogICAgICB9LAogICAgICB3YXRjaDogewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoKSB7CiAgICAgICAgICAgIHRoaXMuaW5pdFN0b3JlKCk7CiAgICAgICAgICB9LAogICAgICAgICAgaW1tZWRpYXRlOiB0cnVlLAogICAgICAgICAgZGVlcDogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKCkgewogICAgICAgICAgdGhpcy5zeW5jQ2hlY2tlZFZhbHVlKCk7CiAgICAgICAgICB0aGlzLmNoZWNrU3RyaWN0bHkgJiYgdGhpcy5jYWxjdWxhdGVDaGVja2VkTm9kZVBhdGhzKCk7CiAgICAgICAgfSwKICAgICAgICBjaGVja2VkVmFsdWU6IGZ1bmN0aW9uIGNoZWNrZWRWYWx1ZSh2YWwpIHsKICAgICAgICAgIGlmICghT2JqZWN0KHV0aWxfWyJpc0VxdWFsIl0pKHZhbCwgdGhpcy52YWx1ZSkpIHsKICAgICAgICAgICAgdGhpcy5jaGVja1N0cmljdGx5ICYmIHRoaXMuY2FsY3VsYXRlQ2hlY2tlZE5vZGVQYXRocygpOwogICAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbCk7CiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHZhbCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgICAgIGlmICghT2JqZWN0KHV0aWxfWyJpc0VtcHR5Il0pKHRoaXMudmFsdWUpKSB7CiAgICAgICAgICB0aGlzLnN5bmNDaGVja2VkVmFsdWUoKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIG1ldGhvZHM6IHsKICAgICAgICBpbml0U3RvcmU6IGZ1bmN0aW9uIGluaXRTdG9yZSgpIHsKICAgICAgICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZywKICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOwoKICAgICAgICAgIGlmIChjb25maWcubGF6eSAmJiBPYmplY3QodXRpbF9bImlzRW1wdHkiXSkob3B0aW9ucykpIHsKICAgICAgICAgICAgdGhpcy5sYXp5TG9hZCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5zdG9yZSA9IG5ldyBzcmNfc3RvcmUob3B0aW9ucywgY29uZmlnKTsKICAgICAgICAgICAgdGhpcy5tZW51cyA9IFt0aGlzLnN0b3JlLmdldE5vZGVzKCldOwogICAgICAgICAgICB0aGlzLnN5bmNNZW51U3RhdGUoKTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHN5bmNDaGVja2VkVmFsdWU6IGZ1bmN0aW9uIHN5bmNDaGVja2VkVmFsdWUoKSB7CiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLAogICAgICAgICAgICAgIGNoZWNrZWRWYWx1ZSA9IHRoaXMuY2hlY2tlZFZhbHVlOwoKICAgICAgICAgIGlmICghT2JqZWN0KHV0aWxfWyJpc0VxdWFsIl0pKHZhbHVlLCBjaGVja2VkVmFsdWUpKSB7CiAgICAgICAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gdmFsdWU7CiAgICAgICAgICAgIHRoaXMuc3luY01lbnVTdGF0ZSgpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc3luY01lbnVTdGF0ZTogZnVuY3Rpb24gc3luY01lbnVTdGF0ZSgpIHsKICAgICAgICAgIHZhciBtdWx0aXBsZSA9IHRoaXMubXVsdGlwbGUsCiAgICAgICAgICAgICAgY2hlY2tTdHJpY3RseSA9IHRoaXMuY2hlY2tTdHJpY3RseTsKICAgICAgICAgIHRoaXMuc3luY0FjdGl2ZVBhdGgoKTsKICAgICAgICAgIG11bHRpcGxlICYmIHRoaXMuc3luY011bHRpQ2hlY2tTdGF0ZSgpOwogICAgICAgICAgY2hlY2tTdHJpY3RseSAmJiB0aGlzLmNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHMoKTsKICAgICAgICAgIHRoaXMuJG5leHRUaWNrKHRoaXMuc2Nyb2xsSW50b1ZpZXcpOwogICAgICAgIH0sCiAgICAgICAgc3luY011bHRpQ2hlY2tTdGF0ZTogZnVuY3Rpb24gc3luY011bHRpQ2hlY2tTdGF0ZSgpIHsKICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5nZXRGbGF0dGVkTm9kZXModGhpcy5sZWFmT25seSk7CiAgICAgICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgIG5vZGUuc3luY0NoZWNrU3RhdGUoX3RoaXMuY2hlY2tlZFZhbHVlKTsKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgc3luY0FjdGl2ZVBhdGg6IGZ1bmN0aW9uIHN5bmNBY3RpdmVQYXRoKCkgewogICAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICAgICAgdmFyIHN0b3JlID0gdGhpcy5zdG9yZSwKICAgICAgICAgICAgICBtdWx0aXBsZSA9IHRoaXMubXVsdGlwbGUsCiAgICAgICAgICAgICAgYWN0aXZlUGF0aCA9IHRoaXMuYWN0aXZlUGF0aCwKICAgICAgICAgICAgICBjaGVja2VkVmFsdWUgPSB0aGlzLmNoZWNrZWRWYWx1ZTsKCiAgICAgICAgICBpZiAoIU9iamVjdCh1dGlsX1siaXNFbXB0eSJdKShhY3RpdmVQYXRoKSkgewogICAgICAgICAgICB2YXIgbm9kZXMgPSBhY3RpdmVQYXRoLm1hcChmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczIuZ2V0Tm9kZUJ5VmFsdWUobm9kZS5nZXRWYWx1ZSgpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRoaXMuZXhwYW5kTm9kZXMobm9kZXMpOwogICAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0KHV0aWxfWyJpc0VtcHR5Il0pKGNoZWNrZWRWYWx1ZSkpIHsKICAgICAgICAgICAgdmFyIHZhbHVlID0gbXVsdGlwbGUgPyBjaGVja2VkVmFsdWVbMF0gOiBjaGVja2VkVmFsdWU7CiAgICAgICAgICAgIHZhciBjaGVja2VkTm9kZSA9IHRoaXMuZ2V0Tm9kZUJ5VmFsdWUodmFsdWUpIHx8IHt9OwoKICAgICAgICAgICAgdmFyIF9ub2RlcyA9IChjaGVja2VkTm9kZS5wYXRoTm9kZXMgfHwgW10pLnNsaWNlKDAsIC0xKTsKCiAgICAgICAgICAgIHRoaXMuZXhwYW5kTm9kZXMoX25vZGVzKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuYWN0aXZlUGF0aCA9IFtdOwogICAgICAgICAgICB0aGlzLm1lbnVzID0gW3N0b3JlLmdldE5vZGVzKCldOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXhwYW5kTm9kZXM6IGZ1bmN0aW9uIGV4cGFuZE5vZGVzKG5vZGVzKSB7CiAgICAgICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgIHJldHVybiBfdGhpczMuaGFuZGxlRXhwYW5kKG5vZGUsIHRydWUKICAgICAgICAgICAgLyogc2lsZW50ICovCiAgICAgICAgICAgICk7CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHM6IGZ1bmN0aW9uIGNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHMoKSB7CiAgICAgICAgICB2YXIgX3RoaXM0ID0gdGhpczsKCiAgICAgICAgICB2YXIgY2hlY2tlZFZhbHVlID0gdGhpcy5jaGVja2VkVmFsdWUsCiAgICAgICAgICAgICAgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlOwogICAgICAgICAgdmFyIGNoZWNrZWRWYWx1ZXMgPSBtdWx0aXBsZSA/IE9iamVjdCh1dGlsX1siY29lcmNlVHJ1dGh5VmFsdWVUb0FycmF5Il0pKGNoZWNrZWRWYWx1ZSkgOiBbY2hlY2tlZFZhbHVlXTsKICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVQYXRocyA9IGNoZWNrZWRWYWx1ZXMubWFwKGZ1bmN0aW9uICh2KSB7CiAgICAgICAgICAgIHZhciBjaGVja2VkTm9kZSA9IF90aGlzNC5nZXROb2RlQnlWYWx1ZSh2KTsKCiAgICAgICAgICAgIHJldHVybiBjaGVja2VkTm9kZSA/IGNoZWNrZWROb2RlLnBhdGhOb2RlcyA6IFtdOwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBoYW5kbGVLZXlEb3duOiBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGUpIHsKICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCwKICAgICAgICAgICAgICBrZXlDb2RlID0gZS5rZXlDb2RlOwoKICAgICAgICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICAgICBjYXNlIEtleUNvZGUudXA6CiAgICAgICAgICAgICAgdmFyIHByZXYgPSBnZXRTaWJsaW5nKHRhcmdldCwgLTEpOwogICAgICAgICAgICAgIGZvY3VzTm9kZShwcmV2KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5kb3duOgogICAgICAgICAgICAgIHZhciBuZXh0ID0gZ2V0U2libGluZyh0YXJnZXQsIDEpOwogICAgICAgICAgICAgIGZvY3VzTm9kZShuZXh0KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5sZWZ0OgogICAgICAgICAgICAgIHZhciBwcmVNZW51ID0gdGhpcy4kcmVmcy5tZW51W2dldE1lbnVJbmRleCh0YXJnZXQpIC0gMV07CgogICAgICAgICAgICAgIGlmIChwcmVNZW51KSB7CiAgICAgICAgICAgICAgICB2YXIgZXhwYW5kZWROb2RlID0gcHJlTWVudS4kZWwucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW5vZGVbYXJpYS1leHBhbmRlZD0idHJ1ZSJdJyk7CiAgICAgICAgICAgICAgICBmb2N1c05vZGUoZXhwYW5kZWROb2RlKTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBLZXlDb2RlLnJpZ2h0OgogICAgICAgICAgICAgIHZhciBuZXh0TWVudSA9IHRoaXMuJHJlZnMubWVudVtnZXRNZW51SW5kZXgodGFyZ2V0KSArIDFdOwoKICAgICAgICAgICAgICBpZiAobmV4dE1lbnUpIHsKICAgICAgICAgICAgICAgIHZhciBmaXJzdE5vZGUgPSBuZXh0TWVudS4kZWwucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW5vZGVbdGFiaW5kZXg9Ii0xIl0nKTsKICAgICAgICAgICAgICAgIGZvY3VzTm9kZShmaXJzdE5vZGUpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIEtleUNvZGUuZW50ZXI6CiAgICAgICAgICAgICAgY2hlY2tOb2RlKHRhcmdldCk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIEtleUNvZGUuZXNjOgogICAgICAgICAgICBjYXNlIEtleUNvZGUudGFiOgogICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlJyk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhhbmRsZUV4cGFuZDogZnVuY3Rpb24gaGFuZGxlRXhwYW5kKG5vZGUsIHNpbGVudCkgewogICAgICAgICAgdmFyIGFjdGl2ZVBhdGggPSB0aGlzLmFjdGl2ZVBhdGg7CiAgICAgICAgICB2YXIgbGV2ZWwgPSBub2RlLmxldmVsOwogICAgICAgICAgdmFyIHBhdGggPSBhY3RpdmVQYXRoLnNsaWNlKDAsIGxldmVsIC0gMSk7CiAgICAgICAgICB2YXIgbWVudXMgPSB0aGlzLm1lbnVzLnNsaWNlKDAsIGxldmVsKTsKCiAgICAgICAgICBpZiAoIW5vZGUuaXNMZWFmKSB7CiAgICAgICAgICAgIHBhdGgucHVzaChub2RlKTsKICAgICAgICAgICAgbWVudXMucHVzaChub2RlLmNoaWxkcmVuKTsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLmFjdGl2ZVBhdGggPSBwYXRoOwogICAgICAgICAgdGhpcy5tZW51cyA9IG1lbnVzOwoKICAgICAgICAgIGlmICghc2lsZW50KSB7CiAgICAgICAgICAgIHZhciBwYXRoVmFsdWVzID0gcGF0aC5tYXAoZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgICByZXR1cm4gbm9kZS5nZXRWYWx1ZSgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIGFjdGl2ZVBhdGhWYWx1ZXMgPSBhY3RpdmVQYXRoLm1hcChmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgICAgIHJldHVybiBub2RlLmdldFZhbHVlKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKCFPYmplY3QodXRpbF9bInZhbHVlRXF1YWxzIl0pKHBhdGhWYWx1ZXMsIGFjdGl2ZVBhdGhWYWx1ZXMpKSB7CiAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnYWN0aXZlLWl0ZW0tY2hhbmdlJywgcGF0aFZhbHVlcyk7IC8vIERlcHJlY2F0ZWQKCiAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZXhwYW5kLWNoYW5nZScsIHBhdGhWYWx1ZXMpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBoYW5kbGVDaGVja0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tDaGFuZ2UodmFsdWUpIHsKICAgICAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gdmFsdWU7CiAgICAgICAgfSwKICAgICAgICBsYXp5TG9hZDogZnVuY3Rpb24gbGF6eUxvYWQobm9kZSwgb25GdWxsZmlsZWQpIHsKICAgICAgICAgIHZhciBfdGhpczUgPSB0aGlzOwoKICAgICAgICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZzsKCiAgICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgbm9kZSA9IG5vZGUgfHwgewogICAgICAgICAgICAgIHJvb3Q6IHRydWUsCiAgICAgICAgICAgICAgbGV2ZWw6IDAKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5zdG9yZSA9IG5ldyBzcmNfc3RvcmUoW10sIGNvbmZpZyk7CiAgICAgICAgICAgIHRoaXMubWVudXMgPSBbdGhpcy5zdG9yZS5nZXROb2RlcygpXTsKICAgICAgICAgIH0KCiAgICAgICAgICBub2RlLmxvYWRpbmcgPSB0cnVlOwoKICAgICAgICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZShkYXRhTGlzdCkgewogICAgICAgICAgICB2YXIgcGFyZW50ID0gbm9kZS5yb290ID8gbnVsbCA6IG5vZGU7CiAgICAgICAgICAgIGRhdGFMaXN0ICYmIGRhdGFMaXN0Lmxlbmd0aCAmJiBfdGhpczUuc3RvcmUuYXBwZW5kTm9kZXMoZGF0YUxpc3QsIHBhcmVudCk7CiAgICAgICAgICAgIG5vZGUubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBub2RlLmxvYWRlZCA9IHRydWU7IC8vIGRpc3Bvc2UgZGVmYXVsdCB2YWx1ZSBvbiBsYXp5IGxvYWQgbW9kZQoKICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX3RoaXM1LmNoZWNrZWRWYWx1ZSkpIHsKICAgICAgICAgICAgICB2YXIgbm9kZVZhbHVlID0gX3RoaXM1LmNoZWNrZWRWYWx1ZVtfdGhpczUubG9hZENvdW50KytdOwogICAgICAgICAgICAgIHZhciB2YWx1ZUtleSA9IF90aGlzNS5jb25maWcudmFsdWU7CiAgICAgICAgICAgICAgdmFyIGxlYWZLZXkgPSBfdGhpczUuY29uZmlnLmxlYWY7CgogICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFMaXN0KSAmJiBkYXRhTGlzdC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW3ZhbHVlS2V5XSA9PT0gbm9kZVZhbHVlOwogICAgICAgICAgICAgIH0pLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHZhciBjaGVja2VkTm9kZSA9IF90aGlzNS5zdG9yZS5nZXROb2RlQnlWYWx1ZShub2RlVmFsdWUpOwoKICAgICAgICAgICAgICAgIGlmICghY2hlY2tlZE5vZGUuZGF0YVtsZWFmS2V5XSkgewogICAgICAgICAgICAgICAgICBfdGhpczUubGF6eUxvYWQoY2hlY2tlZE5vZGUsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczUuaGFuZGxlRXhwYW5kKGNoZWNrZWROb2RlKTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKF90aGlzNS5sb2FkQ291bnQgPT09IF90aGlzNS5jaGVja2VkVmFsdWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNS4kcGFyZW50LmNvbXB1dGVQcmVzZW50VGV4dCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgb25GdWxsZmlsZWQgJiYgb25GdWxsZmlsZWQoZGF0YUxpc3QpOwogICAgICAgICAgfTsKCiAgICAgICAgICBjb25maWcubGF6eUxvYWQobm9kZSwgcmVzb2x2ZSk7CiAgICAgICAgfSwKCiAgICAgICAgLyoqCiAgICAgICAgICogcHVibGljIG1ldGhvZHMKICAgICAgICAqLwogICAgICAgIGNhbGN1bGF0ZU11bHRpQ2hlY2tlZFZhbHVlOiBmdW5jdGlvbiBjYWxjdWxhdGVNdWx0aUNoZWNrZWRWYWx1ZSgpIHsKICAgICAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gdGhpcy5nZXRDaGVja2VkTm9kZXModGhpcy5sZWFmT25seSkubWFwKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgIHJldHVybiBub2RlLmdldFZhbHVlQnlPcHRpb24oKTsKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgc2Nyb2xsSW50b1ZpZXc6IGZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KCkgewogICAgICAgICAgaWYgKHRoaXMuJGlzU2VydmVyKSByZXR1cm47CiAgICAgICAgICB2YXIgbWVudXMgPSB0aGlzLiRyZWZzLm1lbnUgfHwgW107CiAgICAgICAgICBtZW51cy5mb3JFYWNoKGZ1bmN0aW9uIChtZW51KSB7CiAgICAgICAgICAgIHZhciBtZW51RWxlbWVudCA9IG1lbnUuJGVsOwoKICAgICAgICAgICAgaWYgKG1lbnVFbGVtZW50KSB7CiAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IG1lbnVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lbC1zY3JvbGxiYXJfX3dyYXAnKTsKICAgICAgICAgICAgICB2YXIgYWN0aXZlTm9kZSA9IG1lbnVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lbC1jYXNjYWRlci1ub2RlLmlzLWFjdGl2ZScpIHx8IG1lbnVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lbC1jYXNjYWRlci1ub2RlLmluLWFjdGl2ZS1wYXRoJyk7CiAgICAgICAgICAgICAgc2Nyb2xsX2ludG9fdmlld19kZWZhdWx0KCkoY29udGFpbmVyLCBhY3RpdmVOb2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBnZXROb2RlQnlWYWx1ZTogZnVuY3Rpb24gZ2V0Tm9kZUJ5VmFsdWUodmFsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXROb2RlQnlWYWx1ZSh2YWwpOwogICAgICAgIH0sCiAgICAgICAgZ2V0RmxhdHRlZE5vZGVzOiBmdW5jdGlvbiBnZXRGbGF0dGVkTm9kZXMobGVhZk9ubHkpIHsKICAgICAgICAgIHZhciBjYWNoZWQgPSAhdGhpcy5jb25maWcubGF6eTsKICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmdldEZsYXR0ZWROb2RlcyhsZWFmT25seSwgY2FjaGVkKTsKICAgICAgICB9LAogICAgICAgIGdldENoZWNrZWROb2RlczogZnVuY3Rpb24gZ2V0Q2hlY2tlZE5vZGVzKGxlYWZPbmx5KSB7CiAgICAgICAgICB2YXIgY2hlY2tlZFZhbHVlID0gdGhpcy5jaGVja2VkVmFsdWUsCiAgICAgICAgICAgICAgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlOwoKICAgICAgICAgIGlmIChtdWx0aXBsZSkgewogICAgICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLmdldEZsYXR0ZWROb2RlcyhsZWFmT25seSk7CiAgICAgICAgICAgIHJldHVybiBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgICByZXR1cm4gbm9kZS5jaGVja2VkOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QodXRpbF9bImlzRW1wdHkiXSkoY2hlY2tlZFZhbHVlKSA/IFtdIDogW3RoaXMuZ2V0Tm9kZUJ5VmFsdWUoY2hlY2tlZFZhbHVlKV07CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBjbGVhckNoZWNrZWROb2RlczogZnVuY3Rpb24gY2xlYXJDaGVja2VkTm9kZXMoKSB7CiAgICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jb25maWcsCiAgICAgICAgICAgICAgbGVhZk9ubHkgPSB0aGlzLmxlYWZPbmx5OwogICAgICAgICAgdmFyIG11bHRpcGxlID0gY29uZmlnLm11bHRpcGxlLAogICAgICAgICAgICAgIGVtaXRQYXRoID0gY29uZmlnLmVtaXRQYXRoOwoKICAgICAgICAgIGlmIChtdWx0aXBsZSkgewogICAgICAgICAgICB0aGlzLmdldENoZWNrZWROb2RlcyhsZWFmT25seSkuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgICAgcmV0dXJuICFub2RlLmlzRGlzYWJsZWQ7CiAgICAgICAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgICByZXR1cm4gbm9kZS5kb0NoZWNrKGZhbHNlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTXVsdGlDaGVja2VkVmFsdWUoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gZW1pdFBhdGggPyBbXSA6IG51bGw7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9OyAvLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmCgogICAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKICAgIHZhciBzcmNfY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXzsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlCgogICAgLyogbm9ybWFsaXplIGNvbXBvbmVudCAqLwoKICAgIHZhciBjYXNjYWRlcl9wYW5lbF9jb21wb25lbnQgPSBPYmplY3QoY29tcG9uZW50Tm9ybWFsaXplclsiYSIKICAgIC8qIGRlZmF1bHQgKi8KICAgIF0pKHNyY19jYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXywgY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDkzMjM0Nl9yZW5kZXIsIHN0YXRpY1JlbmRlckZucywgZmFsc2UsIG51bGwsIG51bGwsIG51bGwpOwogICAgLyogaG90IHJlbG9hZCAqLwoKICAgIGlmIChmYWxzZSkgewogICAgICB2YXIgY2FzY2FkZXJfcGFuZWxfYXBpOwogICAgfQoKICAgIGNhc2NhZGVyX3BhbmVsX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9ICJwYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlIjsKICAgIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8KCiAgICB2YXIgY2FzY2FkZXJfcGFuZWwgPSBjYXNjYWRlcl9wYW5lbF9jb21wb25lbnQuZXhwb3J0czsgLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9pbmRleC5qcwoKICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCgogICAgY2FzY2FkZXJfcGFuZWwuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHsKICAgICAgVnVlLmNvbXBvbmVudChjYXNjYWRlcl9wYW5lbC5uYW1lLCBjYXNjYWRlcl9wYW5lbCk7CiAgICB9OwogICAgLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLwoKCiAgICB2YXIgcGFja2FnZXNfY2FzY2FkZXJfcGFuZWwgPSBfX3dlYnBhY2tfZXhwb3J0c19fWyJkZWZhdWx0Il0gPSBjYXNjYWRlcl9wYW5lbDsKICAgIC8qKiovCiAgfSwKCiAgLyoqKi8KICA2OgogIC8qKiovCiAgZnVuY3Rpb24gXyhtb2R1bGUsIGV4cG9ydHMpIHsKICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgiZWxlbWVudC11aS9saWIvbWl4aW5zL2xvY2FsZSIpOwogICAgLyoqKi8KICB9LAoKICAvKioqLwogIDk6CiAgLyoqKi8KICBmdW5jdGlvbiBfKG1vZHVsZSwgZXhwb3J0cykgewogICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCJlbGVtZW50LXVpL2xpYi91dGlscy9tZXJnZSIpOwogICAgLyoqKi8KICB9CiAgLyoqKioqKi8KCn0pOw=="},{"version":3,"sources":["/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/element-ui/lib/cascader-panel.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","cascader_panelvue_type_template_id_34932346_render","_vm","_h","$createElement","_c","_self","class","border","on","keydown","handleKeyDown","_l","menus","menu","index","ref","refInFor","attrs","nodes","_withStripped","external_babel_helper_vue_jsx_merge_props_","external_babel_helper_vue_jsx_merge_props_default","scrollbar_","scrollbar_default","checkbox_","checkbox_default","radio_","radio_default","util_","stopPropagation","e","cascader_nodevue_type_script_lang_js_","inject","components","ElCheckbox","a","ElRadio","props","node","required","nodeId","String","computed","config","panel","isLeaf","isDisabled","checkedValue","isChecked","isSameNode","inActivePath","isInPath","activePath","inCheckedPath","_this","checkStrictly","checkedNodePaths","some","checkedPath","getValueByOption","methods","handleExpand","_this2","multiple","loading","lazy","loaded","lazyLoad","checked","handleMultiCheckChange","handleCheckChange","doCheck","calculateMultiCheckedValue","pathNodes","selectedPathNode","level","uid","renderPrefix","renderCheckbox","renderRadio","renderCheckIcon","renderPostfix","renderLoadingIcon","renderExpandIcon","events","change","nativeOn","click","indeterminate","disabled","label","renderContent","renderLabelFn","vnode","data","_this3","expandTrigger","mouseenter","$emit","focus","role","id","tabindex","src_cascader_nodevue_type_script_lang_js_","componentNormalizer","cascader_node_render","cascader_node_staticRenderFns","component","api","__file","cascader_node","locale_","locale_default","cascader_menuvue_type_script_lang_js_","mixins","ElScrollbar","CascaderNode","type","Array","Number","activeNode","hoverTimer","isEmpty","length","menuId","target","handleMouseMove","hoverZone","$refs","contains","clearTimeout","_$el$getBoundingClien","$el","getBoundingClientRect","left","startX","clientX","_$el","offsetWidth","offsetHeight","top","offsetTop","bottom","innerHTML","setTimeout","clearHoverZone","hoverThreshold","renderEmptyText","renderNodeList","isHoverMenu","expand","map","hasChildren","mousemove","tag","src_cascader_menuvue_type_script_lang_js_","cascader_menu_render","cascader_menu_staticRenderFns","cascader_menu_component","cascader_menu_api","cascader_menu","shared_","_createClass","defineProperties","descriptor","configurable","writable","Constructor","protoProps","staticProps","_classCallCheck","instance","TypeError","node_Node","Node","parentNode","initState","initChildren","_config","valueKey","labelKey","calculatePathNodes","path","pathLabels","childrenKey","children","childrenData","isArray","child","unshift","getPath","getValue","emitPath","getText","allLevels","separator","join","val","broadcast","event","_len","arguments","args","_key","handlerName","forEach","apply","emit","_len2","_key2","onParentCheck","setCheckState","onChildCheck","validChildren","filter","every","totalNum","checkedNum","reduce","num","syncCheckState","disabledKey","_config2","leafKey","leaf","src_node","store_classCallCheck","flatNodes","leafOnly","res","push","store_Store","Store","initNodes","nodeData","flattedNodes","getFlattedNodes","leafNodes","appendNode","appendNodes","nodeDataList","getNodes","cached","undefined","cachedNodes","getNodeByValue","src_store","merge_","merge_default","aria_utils_","aria_utils_default","scroll_into_view_","scroll_into_view_default","_extends","assign","source","KeyCode","keys","DefaultProps","cascader_panelvue_type_script_lang_js_isLeaf","el","getAttribute","getSibling","distance","siblings","querySelectorAll","indexOf","getMenuIndex","pieces","split","focusNode","checkNode","input","querySelector","cascader_panelvue_type_script_lang_js_","CascaderMenu","Boolean","default","renderLabel","Function","provide","store","loadCount","$scopedSlots","watch","handler","initStore","immediate","deep","syncCheckedValue","calculateCheckedNodePaths","mounted","syncMenuState","syncActivePath","syncMultiCheckState","$nextTick","scrollIntoView","expandNodes","checkedNode","_nodes","slice","_this4","checkedValues","v","keyCode","up","prev","down","next","preMenu","expandedNode","right","nextMenu","firstNode","enter","esc","tab","silent","pathValues","activePathValues","onFullfiled","_this5","root","resolve","dataList","nodeValue","item","$parent","computePresentText","getCheckedNodes","$isServer","menuElement","container","clearCheckedNodes","src_cascader_panelvue_type_script_lang_js_","cascader_panel_component","cascader_panel_api","cascader_panel","install","Vue","packages_cascader_panel"],"mappings":"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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 = 59);\n/******/ })\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\n/***/ 14:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/scrollbar\");\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/checkbox\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/shared\");\n\n/***/ }),\n\n/***/ 26:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"babel-helper-vue-jsx-merge-props\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scroll-into-view\");\n\n/***/ }),\n\n/***/ 32:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/aria-utils\");\n\n/***/ }),\n\n/***/ 51:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/radio\");\n\n/***/ }),\n\n/***/ 59:\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/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\nvar cascader_panelvue_type_template_id_34932346_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 class: [\"el-cascader-panel\", _vm.border && \"is-bordered\"],\n on: { keydown: _vm.handleKeyDown }\n },\n _vm._l(_vm.menus, function(menu, index) {\n return _c(\"cascader-menu\", {\n key: index,\n ref: \"menu\",\n refInFor: true,\n attrs: { index: index, nodes: menu }\n })\n }),\n 1\n )\n}\nvar staticRenderFns = []\ncascader_panelvue_type_template_id_34932346_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\n\n// EXTERNAL MODULE: external \"babel-helper-vue-jsx-merge-props\"\nvar external_babel_helper_vue_jsx_merge_props_ = __webpack_require__(26);\nvar external_babel_helper_vue_jsx_merge_props_default = /*#__PURE__*/__webpack_require__.n(external_babel_helper_vue_jsx_merge_props_);\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 \"element-ui/lib/checkbox\"\nvar checkbox_ = __webpack_require__(18);\nvar checkbox_default = /*#__PURE__*/__webpack_require__.n(checkbox_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/radio\"\nvar radio_ = __webpack_require__(51);\nvar radio_default = /*#__PURE__*/__webpack_require__.n(radio_);\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/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nvar stopPropagation = function stopPropagation(e) {\n return e.stopPropagation();\n};\n\n/* harmony default export */ var cascader_nodevue_type_script_lang_js_ = ({\n inject: ['panel'],\n\n components: {\n ElCheckbox: checkbox_default.a,\n ElRadio: radio_default.a\n },\n\n props: {\n node: {\n required: true\n },\n nodeId: String\n },\n\n computed: {\n config: function config() {\n return this.panel.config;\n },\n isLeaf: function isLeaf() {\n return this.node.isLeaf;\n },\n isDisabled: function isDisabled() {\n return this.node.isDisabled;\n },\n checkedValue: function checkedValue() {\n return this.panel.checkedValue;\n },\n isChecked: function isChecked() {\n return this.node.isSameNode(this.checkedValue);\n },\n inActivePath: function inActivePath() {\n return this.isInPath(this.panel.activePath);\n },\n inCheckedPath: function inCheckedPath() {\n var _this = this;\n\n if (!this.config.checkStrictly) return false;\n\n return this.panel.checkedNodePaths.some(function (checkedPath) {\n return _this.isInPath(checkedPath);\n });\n },\n value: function value() {\n return this.node.getValueByOption();\n }\n },\n\n methods: {\n handleExpand: function handleExpand() {\n var _this2 = this;\n\n var panel = this.panel,\n node = this.node,\n isDisabled = this.isDisabled,\n config = this.config;\n var multiple = config.multiple,\n checkStrictly = config.checkStrictly;\n\n\n if (!checkStrictly && isDisabled || node.loading) return;\n\n if (config.lazy && !node.loaded) {\n panel.lazyLoad(node, function () {\n // do not use cached leaf value here, invoke this.isLeaf to get new value.\n var isLeaf = _this2.isLeaf;\n\n\n if (!isLeaf) _this2.handleExpand();\n if (multiple) {\n // if leaf sync checked state, else clear checked state\n var checked = isLeaf ? node.checked : false;\n _this2.handleMultiCheckChange(checked);\n }\n });\n } else {\n panel.handleExpand(node);\n }\n },\n handleCheckChange: function handleCheckChange() {\n var panel = this.panel,\n value = this.value,\n node = this.node;\n\n panel.handleCheckChange(value);\n panel.handleExpand(node);\n },\n handleMultiCheckChange: function handleMultiCheckChange(checked) {\n this.node.doCheck(checked);\n this.panel.calculateMultiCheckedValue();\n },\n isInPath: function isInPath(pathNodes) {\n var node = this.node;\n\n var selectedPathNode = pathNodes[node.level - 1] || {};\n return selectedPathNode.uid === node.uid;\n },\n renderPrefix: function renderPrefix(h) {\n var isLeaf = this.isLeaf,\n isChecked = this.isChecked,\n config = this.config;\n var checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n\n if (multiple) {\n return this.renderCheckbox(h);\n } else if (checkStrictly) {\n return this.renderRadio(h);\n } else if (isLeaf && isChecked) {\n return this.renderCheckIcon(h);\n }\n\n return null;\n },\n renderPostfix: function renderPostfix(h) {\n var node = this.node,\n isLeaf = this.isLeaf;\n\n\n if (node.loading) {\n return this.renderLoadingIcon(h);\n } else if (!isLeaf) {\n return this.renderExpandIcon(h);\n }\n\n return null;\n },\n renderCheckbox: function renderCheckbox(h) {\n var node = this.node,\n config = this.config,\n isDisabled = this.isDisabled;\n\n var events = {\n on: { change: this.handleMultiCheckChange },\n nativeOn: {}\n };\n\n if (config.checkStrictly) {\n // when every node is selectable, click event should not trigger expand event.\n events.nativeOn.click = stopPropagation;\n }\n\n return h('el-checkbox', external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n value: node.checked,\n indeterminate: node.indeterminate,\n disabled: isDisabled\n }\n }, events]));\n },\n renderRadio: function renderRadio(h) {\n var checkedValue = this.checkedValue,\n value = this.value,\n isDisabled = this.isDisabled;\n\n // to keep same reference if value cause radio's checked state is calculated by reference comparision;\n\n if (Object(util_[\"isEqual\"])(value, checkedValue)) {\n value = checkedValue;\n }\n\n return h(\n 'el-radio',\n {\n attrs: {\n value: checkedValue,\n label: value,\n disabled: isDisabled\n },\n on: {\n 'change': this.handleCheckChange\n },\n nativeOn: {\n 'click': stopPropagation\n }\n },\n [h('span')]\n );\n },\n renderCheckIcon: function renderCheckIcon(h) {\n return h('i', { 'class': 'el-icon-check el-cascader-node__prefix' });\n },\n renderLoadingIcon: function renderLoadingIcon(h) {\n return h('i', { 'class': 'el-icon-loading el-cascader-node__postfix' });\n },\n renderExpandIcon: function renderExpandIcon(h) {\n return h('i', { 'class': 'el-icon-arrow-right el-cascader-node__postfix' });\n },\n renderContent: function renderContent(h) {\n var panel = this.panel,\n node = this.node;\n\n var render = panel.renderLabelFn;\n var vnode = render ? render({ node: node, data: node.data }) : null;\n\n return h(\n 'span',\n { 'class': 'el-cascader-node__label' },\n [vnode || node.label]\n );\n }\n },\n\n render: function render(h) {\n var _this3 = this;\n\n var inActivePath = this.inActivePath,\n inCheckedPath = this.inCheckedPath,\n isChecked = this.isChecked,\n isLeaf = this.isLeaf,\n isDisabled = this.isDisabled,\n config = this.config,\n nodeId = this.nodeId;\n var expandTrigger = config.expandTrigger,\n checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n var disabled = !checkStrictly && isDisabled;\n var events = { on: {} };\n\n if (expandTrigger === 'click') {\n events.on.click = this.handleExpand;\n } else {\n events.on.mouseenter = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n events.on.focus = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n }\n if (isLeaf && !isDisabled && !checkStrictly && !multiple) {\n events.on.click = this.handleCheckChange;\n }\n\n return h(\n 'li',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n role: 'menuitem',\n id: nodeId,\n 'aria-expanded': inActivePath,\n tabindex: disabled ? null : -1\n },\n 'class': {\n 'el-cascader-node': true,\n 'is-selectable': checkStrictly,\n 'in-active-path': inActivePath,\n 'in-checked-path': inCheckedPath,\n 'is-active': isChecked,\n 'is-disabled': disabled\n }\n }, events]),\n [this.renderPrefix(h), this.renderContent(h), this.renderPostfix(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_nodevue_type_script_lang_js_ = (cascader_nodevue_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/cascader-panel/src/cascader-node.vue\nvar cascader_node_render, cascader_node_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_nodevue_type_script_lang_js_,\n cascader_node_render,\n cascader_node_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/cascader-panel/src/cascader-node.vue\"\n/* harmony default export */ var cascader_node = (component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __webpack_require__(6);\nvar locale_default = /*#__PURE__*/__webpack_require__.n(locale_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n/* harmony default export */ var cascader_menuvue_type_script_lang_js_ = ({\n name: 'ElCascaderMenu',\n\n mixins: [locale_default.a],\n\n inject: ['panel'],\n\n components: {\n ElScrollbar: scrollbar_default.a,\n CascaderNode: cascader_node\n },\n\n props: {\n nodes: {\n type: Array,\n required: true\n },\n index: Number\n },\n\n data: function data() {\n return {\n activeNode: null,\n hoverTimer: null,\n id: Object(util_[\"generateId\"])()\n };\n },\n\n\n computed: {\n isEmpty: function isEmpty() {\n return !this.nodes.length;\n },\n menuId: function menuId() {\n return 'cascader-menu-' + this.id + '-' + this.index;\n }\n },\n\n methods: {\n handleExpand: function handleExpand(e) {\n this.activeNode = e.target;\n },\n handleMouseMove: function handleMouseMove(e) {\n var activeNode = this.activeNode,\n hoverTimer = this.hoverTimer;\n var hoverZone = this.$refs.hoverZone;\n\n\n if (!activeNode || !hoverZone) return;\n\n if (activeNode.contains(e.target)) {\n clearTimeout(hoverTimer);\n\n var _$el$getBoundingClien = this.$el.getBoundingClientRect(),\n left = _$el$getBoundingClien.left;\n\n var startX = e.clientX - left;\n var _$el = this.$el,\n offsetWidth = _$el.offsetWidth,\n offsetHeight = _$el.offsetHeight;\n\n var top = activeNode.offsetTop;\n var bottom = top + activeNode.offsetHeight;\n\n hoverZone.innerHTML = '\\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M' + startX + ' ' + top + ' L' + offsetWidth + ' 0 V' + top + ' Z\" />\\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M' + startX + ' ' + bottom + ' L' + offsetWidth + ' ' + offsetHeight + ' V' + bottom + ' Z\" />\\n ';\n } else if (!hoverTimer) {\n this.hoverTimer = setTimeout(this.clearHoverZone, this.panel.config.hoverThreshold);\n }\n },\n clearHoverZone: function clearHoverZone() {\n var hoverZone = this.$refs.hoverZone;\n\n if (!hoverZone) return;\n hoverZone.innerHTML = '';\n },\n renderEmptyText: function renderEmptyText(h) {\n return h(\n 'div',\n { 'class': 'el-cascader-menu__empty-text' },\n [this.t('el.cascader.noData')]\n );\n },\n renderNodeList: function renderNodeList(h) {\n var menuId = this.menuId;\n var isHoverMenu = this.panel.isHoverMenu;\n\n var events = { on: {} };\n\n if (isHoverMenu) {\n events.on.expand = this.handleExpand;\n }\n\n var nodes = this.nodes.map(function (node, index) {\n var hasChildren = node.hasChildren;\n\n return h('cascader-node', external_babel_helper_vue_jsx_merge_props_default()([{\n key: node.uid,\n attrs: { node: node,\n 'node-id': menuId + '-' + index,\n 'aria-haspopup': hasChildren,\n 'aria-owns': hasChildren ? menuId : null\n }\n }, events]));\n });\n\n return [].concat(nodes, [isHoverMenu ? h('svg', { ref: 'hoverZone', 'class': 'el-cascader-menu__hover-zone' }) : null]);\n }\n },\n\n render: function render(h) {\n var isEmpty = this.isEmpty,\n menuId = this.menuId;\n\n var events = { nativeOn: {} };\n\n // optimize hover to expand experience (#8010)\n if (this.panel.isHoverMenu) {\n events.nativeOn.mousemove = this.handleMouseMove;\n // events.nativeOn.mouseleave = this.clearHoverZone;\n }\n\n return h(\n 'el-scrollbar',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n tag: 'ul',\n role: 'menu',\n id: menuId,\n\n 'wrap-class': 'el-cascader-menu__wrap',\n 'view-class': {\n 'el-cascader-menu__list': true,\n 'is-empty': isEmpty\n }\n },\n 'class': 'el-cascader-menu' }, events]),\n [isEmpty ? this.renderEmptyText(h) : this.renderNodeList(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_menuvue_type_script_lang_js_ = (cascader_menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue\nvar cascader_menu_render, cascader_menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar cascader_menu_component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_menuvue_type_script_lang_js_,\n cascader_menu_render,\n cascader_menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_menu_api; }\ncascader_menu_component.options.__file = \"packages/cascader-panel/src/cascader-menu.vue\"\n/* harmony default export */ var cascader_menu = (cascader_menu_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/node.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar uid = 0;\n\nvar node_Node = function () {\n function Node(data, config, parentNode) {\n _classCallCheck(this, Node);\n\n this.data = data;\n this.config = config;\n this.parent = parentNode || null;\n this.level = !this.parent ? 1 : this.parent.level + 1;\n this.uid = uid++;\n\n this.initState();\n this.initChildren();\n }\n\n Node.prototype.initState = function initState() {\n var _config = this.config,\n valueKey = _config.value,\n labelKey = _config.label;\n\n\n this.value = this.data[valueKey];\n this.label = this.data[labelKey];\n this.pathNodes = this.calculatePathNodes();\n this.path = this.pathNodes.map(function (node) {\n return node.value;\n });\n this.pathLabels = this.pathNodes.map(function (node) {\n return node.label;\n });\n\n // lazy load\n this.loading = false;\n this.loaded = false;\n };\n\n Node.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var config = this.config;\n\n var childrenKey = config.children;\n var childrenData = this.data[childrenKey];\n this.hasChildren = Array.isArray(childrenData);\n this.children = (childrenData || []).map(function (child) {\n return new Node(child, config, _this);\n });\n };\n\n Node.prototype.calculatePathNodes = function calculatePathNodes() {\n var nodes = [this];\n var parent = this.parent;\n\n while (parent) {\n nodes.unshift(parent);\n parent = parent.parent;\n }\n\n return nodes;\n };\n\n Node.prototype.getPath = function getPath() {\n return this.path;\n };\n\n Node.prototype.getValue = function getValue() {\n return this.value;\n };\n\n Node.prototype.getValueByOption = function getValueByOption() {\n return this.config.emitPath ? this.getPath() : this.getValue();\n };\n\n Node.prototype.getText = function getText(allLevels, separator) {\n return allLevels ? this.pathLabels.join(separator) : this.label;\n };\n\n Node.prototype.isSameNode = function isSameNode(checkedValue) {\n var value = this.getValueByOption();\n return this.config.multiple && Array.isArray(checkedValue) ? checkedValue.some(function (val) {\n return Object(util_[\"isEqual\"])(val, value);\n }) : Object(util_[\"isEqual\"])(checkedValue, value);\n };\n\n Node.prototype.broadcast = function broadcast(event) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var handlerName = 'onParent' + Object(util_[\"capitalize\"])(event);\n\n this.children.forEach(function (child) {\n if (child) {\n // bottom up\n child.broadcast.apply(child, [event].concat(args));\n child[handlerName] && child[handlerName].apply(child, args);\n }\n });\n };\n\n Node.prototype.emit = function emit(event) {\n var parent = this.parent;\n\n var handlerName = 'onChild' + Object(util_[\"capitalize\"])(event);\n if (parent) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n parent[handlerName] && parent[handlerName].apply(parent, args);\n parent.emit.apply(parent, [event].concat(args));\n }\n };\n\n Node.prototype.onParentCheck = function onParentCheck(checked) {\n if (!this.isDisabled) {\n this.setCheckState(checked);\n }\n };\n\n Node.prototype.onChildCheck = function onChildCheck() {\n var children = this.children;\n\n var validChildren = children.filter(function (child) {\n return !child.isDisabled;\n });\n var checked = validChildren.length ? validChildren.every(function (child) {\n return child.checked;\n }) : false;\n\n this.setCheckState(checked);\n };\n\n Node.prototype.setCheckState = function setCheckState(checked) {\n var totalNum = this.children.length;\n var checkedNum = this.children.reduce(function (c, p) {\n var num = p.checked ? 1 : p.indeterminate ? 0.5 : 0;\n return c + num;\n }, 0);\n\n this.checked = checked;\n this.indeterminate = checkedNum !== totalNum && checkedNum > 0;\n };\n\n Node.prototype.syncCheckState = function syncCheckState(checkedValue) {\n var value = this.getValueByOption();\n var checked = this.isSameNode(checkedValue, value);\n\n this.doCheck(checked);\n };\n\n Node.prototype.doCheck = function doCheck(checked) {\n if (this.checked !== checked) {\n if (this.config.checkStrictly) {\n this.checked = checked;\n } else {\n // bottom up to unify the calculation of the indeterminate state\n this.broadcast('check', checked);\n this.setCheckState(checked);\n this.emit('check');\n }\n }\n };\n\n _createClass(Node, [{\n key: 'isDisabled',\n get: function get() {\n var data = this.data,\n parent = this.parent,\n config = this.config;\n\n var disabledKey = config.disabled;\n var checkStrictly = config.checkStrictly;\n\n return data[disabledKey] || !checkStrictly && parent && parent.isDisabled;\n }\n }, {\n key: 'isLeaf',\n get: function get() {\n var data = this.data,\n loaded = this.loaded,\n hasChildren = this.hasChildren,\n children = this.children;\n var _config2 = this.config,\n lazy = _config2.lazy,\n leafKey = _config2.leaf;\n\n if (lazy) {\n var isLeaf = Object(shared_[\"isDef\"])(data[leafKey]) ? data[leafKey] : loaded ? !children.length : false;\n this.hasChildren = !isLeaf;\n return isLeaf;\n }\n return !hasChildren;\n }\n }]);\n\n return Node;\n}();\n\n/* harmony default export */ var src_node = (node_Node);\n// CONCATENATED MODULE: ./packages/cascader-panel/src/store.js\nfunction store_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar flatNodes = function flatNodes(data, leafOnly) {\n return data.reduce(function (res, node) {\n if (node.isLeaf) {\n res.push(node);\n } else {\n !leafOnly && res.push(node);\n res = res.concat(flatNodes(node.children, leafOnly));\n }\n return res;\n }, []);\n};\n\nvar store_Store = function () {\n function Store(data, config) {\n store_classCallCheck(this, Store);\n\n this.config = config;\n this.initNodes(data);\n }\n\n Store.prototype.initNodes = function initNodes(data) {\n var _this = this;\n\n data = Object(util_[\"coerceTruthyValueToArray\"])(data);\n this.nodes = data.map(function (nodeData) {\n return new src_node(nodeData, _this.config);\n });\n this.flattedNodes = this.getFlattedNodes(false, false);\n this.leafNodes = this.getFlattedNodes(true, false);\n };\n\n Store.prototype.appendNode = function appendNode(nodeData, parentNode) {\n var node = new src_node(nodeData, this.config, parentNode);\n var children = parentNode ? parentNode.children : this.nodes;\n\n children.push(node);\n };\n\n Store.prototype.appendNodes = function appendNodes(nodeDataList, parentNode) {\n var _this2 = this;\n\n nodeDataList = Object(util_[\"coerceTruthyValueToArray\"])(nodeDataList);\n nodeDataList.forEach(function (nodeData) {\n return _this2.appendNode(nodeData, parentNode);\n });\n };\n\n Store.prototype.getNodes = function getNodes() {\n return this.nodes;\n };\n\n Store.prototype.getFlattedNodes = function getFlattedNodes(leafOnly) {\n var cached = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var cachedNodes = leafOnly ? this.leafNodes : this.flattedNodes;\n return cached ? cachedNodes : flatNodes(this.nodes, leafOnly);\n };\n\n Store.prototype.getNodeByValue = function getNodeByValue(value) {\n if (value) {\n var nodes = this.getFlattedNodes(false, !this.config.lazy).filter(function (node) {\n return Object(util_[\"valueEquals\"])(node.path, value) || node.value === value;\n });\n return nodes && nodes.length ? nodes[0] : null;\n }\n return null;\n };\n\n return Store;\n}();\n\n/* harmony default export */ var src_store = (store_Store);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __webpack_require__(9);\nvar merge_default = /*#__PURE__*/__webpack_require__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/aria-utils\"\nvar aria_utils_ = __webpack_require__(32);\nvar aria_utils_default = /*#__PURE__*/__webpack_require__.n(aria_utils_);\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// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\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\nvar KeyCode = aria_utils_default.a.keys;\n\nvar DefaultProps = {\n expandTrigger: 'click', // or hover\n multiple: false,\n checkStrictly: false, // whether all nodes can be selected\n emitPath: true, // wether to emit an array of all levels value in which node is located\n lazy: false,\n lazyLoad: util_[\"noop\"],\n value: 'value',\n label: 'label',\n children: 'children',\n leaf: 'leaf',\n disabled: 'disabled',\n hoverThreshold: 500\n};\n\nvar cascader_panelvue_type_script_lang_js_isLeaf = function isLeaf(el) {\n return !el.getAttribute('aria-owns');\n};\n\nvar getSibling = function getSibling(el, distance) {\n var parentNode = el.parentNode;\n\n if (parentNode) {\n var siblings = parentNode.querySelectorAll('.el-cascader-node[tabindex=\"-1\"]');\n var index = Array.prototype.indexOf.call(siblings, el);\n return siblings[index + distance] || null;\n }\n return null;\n};\n\nvar getMenuIndex = function getMenuIndex(el, distance) {\n if (!el) return;\n var pieces = el.id.split('-');\n return Number(pieces[pieces.length - 2]);\n};\n\nvar focusNode = function focusNode(el) {\n if (!el) return;\n el.focus();\n !cascader_panelvue_type_script_lang_js_isLeaf(el) && el.click();\n};\n\nvar checkNode = function checkNode(el) {\n if (!el) return;\n\n var input = el.querySelector('input');\n if (input) {\n input.click();\n } else if (cascader_panelvue_type_script_lang_js_isLeaf(el)) {\n el.click();\n }\n};\n\n/* harmony default export */ var cascader_panelvue_type_script_lang_js_ = ({\n name: 'ElCascaderPanel',\n\n components: {\n CascaderMenu: cascader_menu\n },\n\n props: {\n value: {},\n options: Array,\n props: Object,\n border: {\n type: Boolean,\n default: true\n },\n renderLabel: Function\n },\n\n provide: function provide() {\n return {\n panel: this\n };\n },\n data: function data() {\n return {\n checkedValue: null,\n checkedNodePaths: [],\n store: [],\n menus: [],\n activePath: [],\n loadCount: 0\n };\n },\n\n\n computed: {\n config: function config() {\n return merge_default()(_extends({}, DefaultProps), this.props || {});\n },\n multiple: function multiple() {\n return this.config.multiple;\n },\n checkStrictly: function checkStrictly() {\n return this.config.checkStrictly;\n },\n leafOnly: function leafOnly() {\n return !this.checkStrictly;\n },\n isHoverMenu: function isHoverMenu() {\n return this.config.expandTrigger === 'hover';\n },\n renderLabelFn: function renderLabelFn() {\n return this.renderLabel || this.$scopedSlots.default;\n }\n },\n\n watch: {\n options: {\n handler: function handler() {\n this.initStore();\n },\n immediate: true,\n deep: true\n },\n value: function value() {\n this.syncCheckedValue();\n this.checkStrictly && this.calculateCheckedNodePaths();\n },\n checkedValue: function checkedValue(val) {\n if (!Object(util_[\"isEqual\"])(val, this.value)) {\n this.checkStrictly && this.calculateCheckedNodePaths();\n this.$emit('input', val);\n this.$emit('change', val);\n }\n }\n },\n\n mounted: function mounted() {\n if (!Object(util_[\"isEmpty\"])(this.value)) {\n this.syncCheckedValue();\n }\n },\n\n\n methods: {\n initStore: function initStore() {\n var config = this.config,\n options = this.options;\n\n if (config.lazy && Object(util_[\"isEmpty\"])(options)) {\n this.lazyLoad();\n } else {\n this.store = new src_store(options, config);\n this.menus = [this.store.getNodes()];\n this.syncMenuState();\n }\n },\n syncCheckedValue: function syncCheckedValue() {\n var value = this.value,\n checkedValue = this.checkedValue;\n\n if (!Object(util_[\"isEqual\"])(value, checkedValue)) {\n this.checkedValue = value;\n this.syncMenuState();\n }\n },\n syncMenuState: function syncMenuState() {\n var multiple = this.multiple,\n checkStrictly = this.checkStrictly;\n\n this.syncActivePath();\n multiple && this.syncMultiCheckState();\n checkStrictly && this.calculateCheckedNodePaths();\n this.$nextTick(this.scrollIntoView);\n },\n syncMultiCheckState: function syncMultiCheckState() {\n var _this = this;\n\n var nodes = this.getFlattedNodes(this.leafOnly);\n\n nodes.forEach(function (node) {\n node.syncCheckState(_this.checkedValue);\n });\n },\n syncActivePath: function syncActivePath() {\n var _this2 = this;\n\n var store = this.store,\n multiple = this.multiple,\n activePath = this.activePath,\n checkedValue = this.checkedValue;\n\n\n if (!Object(util_[\"isEmpty\"])(activePath)) {\n var nodes = activePath.map(function (node) {\n return _this2.getNodeByValue(node.getValue());\n });\n this.expandNodes(nodes);\n } else if (!Object(util_[\"isEmpty\"])(checkedValue)) {\n var value = multiple ? checkedValue[0] : checkedValue;\n var checkedNode = this.getNodeByValue(value) || {};\n var _nodes = (checkedNode.pathNodes || []).slice(0, -1);\n this.expandNodes(_nodes);\n } else {\n this.activePath = [];\n this.menus = [store.getNodes()];\n }\n },\n expandNodes: function expandNodes(nodes) {\n var _this3 = this;\n\n nodes.forEach(function (node) {\n return _this3.handleExpand(node, true /* silent */);\n });\n },\n calculateCheckedNodePaths: function calculateCheckedNodePaths() {\n var _this4 = this;\n\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n var checkedValues = multiple ? Object(util_[\"coerceTruthyValueToArray\"])(checkedValue) : [checkedValue];\n this.checkedNodePaths = checkedValues.map(function (v) {\n var checkedNode = _this4.getNodeByValue(v);\n return checkedNode ? checkedNode.pathNodes : [];\n });\n },\n handleKeyDown: function handleKeyDown(e) {\n var target = e.target,\n keyCode = e.keyCode;\n\n\n switch (keyCode) {\n case KeyCode.up:\n var prev = getSibling(target, -1);\n focusNode(prev);\n break;\n case KeyCode.down:\n var next = getSibling(target, 1);\n focusNode(next);\n break;\n case KeyCode.left:\n var preMenu = this.$refs.menu[getMenuIndex(target) - 1];\n if (preMenu) {\n var expandedNode = preMenu.$el.querySelector('.el-cascader-node[aria-expanded=\"true\"]');\n focusNode(expandedNode);\n }\n break;\n case KeyCode.right:\n var nextMenu = this.$refs.menu[getMenuIndex(target) + 1];\n if (nextMenu) {\n var firstNode = nextMenu.$el.querySelector('.el-cascader-node[tabindex=\"-1\"]');\n focusNode(firstNode);\n }\n break;\n case KeyCode.enter:\n checkNode(target);\n break;\n case KeyCode.esc:\n case KeyCode.tab:\n this.$emit('close');\n break;\n default:\n return;\n }\n },\n handleExpand: function handleExpand(node, silent) {\n var activePath = this.activePath;\n var level = node.level;\n\n var path = activePath.slice(0, level - 1);\n var menus = this.menus.slice(0, level);\n\n if (!node.isLeaf) {\n path.push(node);\n menus.push(node.children);\n }\n\n this.activePath = path;\n this.menus = menus;\n\n if (!silent) {\n var pathValues = path.map(function (node) {\n return node.getValue();\n });\n var activePathValues = activePath.map(function (node) {\n return node.getValue();\n });\n if (!Object(util_[\"valueEquals\"])(pathValues, activePathValues)) {\n this.$emit('active-item-change', pathValues); // Deprecated\n this.$emit('expand-change', pathValues);\n }\n }\n },\n handleCheckChange: function handleCheckChange(value) {\n this.checkedValue = value;\n },\n lazyLoad: function lazyLoad(node, onFullfiled) {\n var _this5 = this;\n\n var config = this.config;\n\n if (!node) {\n node = node || { root: true, level: 0 };\n this.store = new src_store([], config);\n this.menus = [this.store.getNodes()];\n }\n node.loading = true;\n var resolve = function resolve(dataList) {\n var parent = node.root ? null : node;\n dataList && dataList.length && _this5.store.appendNodes(dataList, parent);\n node.loading = false;\n node.loaded = true;\n\n // dispose default value on lazy load mode\n if (Array.isArray(_this5.checkedValue)) {\n var nodeValue = _this5.checkedValue[_this5.loadCount++];\n var valueKey = _this5.config.value;\n var leafKey = _this5.config.leaf;\n\n if (Array.isArray(dataList) && dataList.filter(function (item) {\n return item[valueKey] === nodeValue;\n }).length > 0) {\n var checkedNode = _this5.store.getNodeByValue(nodeValue);\n\n if (!checkedNode.data[leafKey]) {\n _this5.lazyLoad(checkedNode, function () {\n _this5.handleExpand(checkedNode);\n });\n }\n\n if (_this5.loadCount === _this5.checkedValue.length) {\n _this5.$parent.computePresentText();\n }\n }\n }\n\n onFullfiled && onFullfiled(dataList);\n };\n config.lazyLoad(node, resolve);\n },\n\n\n /**\n * public methods\n */\n calculateMultiCheckedValue: function calculateMultiCheckedValue() {\n this.checkedValue = this.getCheckedNodes(this.leafOnly).map(function (node) {\n return node.getValueByOption();\n });\n },\n scrollIntoView: function scrollIntoView() {\n if (this.$isServer) return;\n\n var menus = this.$refs.menu || [];\n menus.forEach(function (menu) {\n var menuElement = menu.$el;\n if (menuElement) {\n var container = menuElement.querySelector('.el-scrollbar__wrap');\n var activeNode = menuElement.querySelector('.el-cascader-node.is-active') || menuElement.querySelector('.el-cascader-node.in-active-path');\n scroll_into_view_default()(container, activeNode);\n }\n });\n },\n getNodeByValue: function getNodeByValue(val) {\n return this.store.getNodeByValue(val);\n },\n getFlattedNodes: function getFlattedNodes(leafOnly) {\n var cached = !this.config.lazy;\n return this.store.getFlattedNodes(leafOnly, cached);\n },\n getCheckedNodes: function getCheckedNodes(leafOnly) {\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n if (multiple) {\n var nodes = this.getFlattedNodes(leafOnly);\n return nodes.filter(function (node) {\n return node.checked;\n });\n } else {\n return Object(util_[\"isEmpty\"])(checkedValue) ? [] : [this.getNodeByValue(checkedValue)];\n }\n },\n clearCheckedNodes: function clearCheckedNodes() {\n var config = this.config,\n leafOnly = this.leafOnly;\n var multiple = config.multiple,\n emitPath = config.emitPath;\n\n if (multiple) {\n this.getCheckedNodes(leafOnly).filter(function (node) {\n return !node.isDisabled;\n }).forEach(function (node) {\n return node.doCheck(false);\n });\n this.calculateMultiCheckedValue();\n } else {\n this.checkedValue = emitPath ? [] : null;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_panelvue_type_script_lang_js_ = (cascader_panelvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue\n\n\n\n\n\n/* normalize component */\n\nvar cascader_panel_component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_panelvue_type_script_lang_js_,\n cascader_panelvue_type_template_id_34932346_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_panel_api; }\ncascader_panel_component.options.__file = \"packages/cascader-panel/src/cascader-panel.vue\"\n/* harmony default export */ var cascader_panel = (cascader_panel_component.exports);\n// CONCATENATED MODULE: ./packages/cascader-panel/index.js\n\n\n/* istanbul ignore next */\ncascader_panel.install = function (Vue) {\n Vue.component(cascader_panel.name, cascader_panel);\n};\n\n/* harmony default export */ var packages_cascader_panel = __webpack_exports__[\"default\"] = (cascader_panel);\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/locale\");\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/merge\");\n\n/***/ })\n\n/******/ });"]}]}
|