{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQovKiBlc2xpbnQtZGlzYWJsZSBuby1hbGVydCwgbm8tY29uc29sZSAqLw0KaW1wb3J0IFZ1ZSBmcm9tICJ2dWUiOw0KaW1wb3J0IFRvb2x0aXAgZnJvbSAiLi9Ub29sdGlwIjsNCmltcG9ydCBTZWxlY3Rpb25zR3JvdXAgZnJvbSAiLi9TZWxlY3Rpb25zR3JvdXAiOw0KaW1wb3J0IFRyZWVDb250cm9scyBmcm9tICIuL1RyZWVDb250cm9scyI7DQppbXBvcnQgeyBNYXBTdmdJY29uLCBNYXBTdmdTcHJpdGVDb2xvciB9IGZyb20gIkBhYmktc29mdHdhcmUvc3ZnLXNwcml0ZSI7DQppbXBvcnQgU3ZnTGVnZW5kcyBmcm9tICIuL2xlZ2VuZHMvU3ZnTGVnZW5kcyI7DQppbXBvcnQgew0KICBCdXR0b24sDQogIENvbCwNCiAgTG9hZGluZywNCiAgUmFkaW8sDQogIFJhZGlvR3JvdXAsDQogIFJvdywNCiAgU2VsZWN0LA0KfSBmcm9tICJlbGVtZW50LXVpIjsNCmltcG9ydCBsYW5nIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL2VuIjsNCmltcG9ydCBsb2NhbGUgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlIjsNCmltcG9ydCBmbGF0bWFwTWFya2VyIGZyb20gIi4uL2ljb25zL2ZsYXRtYXAtbWFya2VyIjsNCmltcG9ydCB7RmxhdG1hcFF1ZXJpZXMsIGZpbmRUYXhvbm9teUxhYmVsfSBmcm9tICIuLi9zZXJ2aWNlcy9mbGF0bWFwUXVlcmllcy5qcyI7DQppbXBvcnQgeWVsbG93c3RhciBmcm9tICIuLi9pY29ucy95ZWxsb3dzdGFyIjsNCg0KbG9jYWxlLnVzZShsYW5nKTsNClZ1ZS51c2UoQnV0dG9uKTsNClZ1ZS51c2UoQ29sKTsNClZ1ZS51c2UoTG9hZGluZy5kaXJlY3RpdmUpOw0KVnVlLnVzZShSYWRpbyk7DQpWdWUudXNlKFJhZGlvR3JvdXApOw0KVnVlLnVzZShSb3cpOw0KVnVlLnVzZShTZWxlY3QpOw0KY29uc3QgUmVzaXplU2Vuc29yID0gcmVxdWlyZSgiY3NzLWVsZW1lbnQtcXVlcmllcy9zcmMvUmVzaXplU2Vuc29yIik7DQoNCmNvbnN0IHByb2Nlc3NUYXhvbiA9IChmbGF0bWFwQVBJLCB0YXhvbklkZW50aWZpZXJzKSA9PiB7DQogIGxldCBwcm9jZXNzZWQgPSBbXTsNCiAgdGF4b25JZGVudGlmaWVycy5mb3JFYWNoKCh0YXhvbikgPT4gew0KICAgIGZpbmRUYXhvbm9teUxhYmVsKGZsYXRtYXBBUEksIHRheG9uKS50aGVuKCh2YWx1ZSkgPT4gew0KICAgICAgY29uc3QgaXRlbSA9IHsgdGF4b24sIGxhYmVsOiB2YWx1ZSB9Ow0KICAgICAgcHJvY2Vzc2VkLnB1c2goaXRlbSk7DQogICAgfSk7DQogIH0pOw0KDQogIHJldHVybiBwcm9jZXNzZWQ7DQp9Ow0KDQpjb25zdCBwcm9jZXNzRlRVcyA9IChwYXJlbnQsIGtleSkgPT4gew0KICBjb25zdCBmdHVzID0gW107DQogIGxldCBpdGVtcyA9IHBhcmVudC5vcmdhbnMgPyBwYXJlbnQub3JnYW5zIDogcGFyZW50LmZ0dXM7DQogIGNvbnN0IGNoaWxkcmVuID0gaXRlbXMNCiAgICA/IGl0ZW1zLmZpbHRlcigNCiAgICAgICAgKG9iaiwgaW5kZXgpID0+DQogICAgICAgICAgaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSBvYmoubGFiZWwpID09PSBpbmRleA0KICAgICAgKQ0KICAgIDogdW5kZWZpbmVkOw0KICBpZiAoY2hpbGRyZW4pIHsNCiAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gew0KICAgICAgY29uc3QgZGF0YSA9IHsNCiAgICAgICAgbGFiZWw6IGNoaWxkLmxhYmVsLA0KICAgICAgICBtb2RlbHM6IGNoaWxkLm1vZGVscywNCiAgICAgICAga2V5OiBgJHtrZXl9LiR7Y2hpbGQubGFiZWx9YCwNCiAgICAgIH07DQogICAgICBjb25zdCBncmFuZENoaWxkcmVuID0gcHJvY2Vzc0ZUVXMoY2hpbGQsIGRhdGEua2V5KTsNCiAgICAgIGlmIChncmFuZENoaWxkcmVuLmxlbmd0aCA+IDApIHsNCiAgICAgICAgZGF0YS5jaGlsZHJlbiA9IGdyYW5kQ2hpbGRyZW47DQogICAgICB9DQogICAgICBmdHVzLnB1c2goZGF0YSk7DQogICAgfSk7DQogIH0NCiAgcmV0dXJuIGZ0dXM7DQp9Ow0KDQpjb25zdCBwcm9jZXNzU3lzdGVtcyA9IChzeXN0ZW1zKSA9PiB7DQogIGNvbnN0IGFsbFN5c3RlbXMgPSBbXTsNCiAgaWYgKHN5c3RlbXMgJiYgc3lzdGVtcy5sZW5ndGggPiAwKSB7DQogICAgY29uc3QgZGF0YSA9IHsgbGFiZWw6ICJBbGwiLCBrZXk6ICJBbGwiLCBjaGlsZHJlbjogW10gfTsNCiAgICBzeXN0ZW1zLmZvckVhY2goKHN5c3RlbSkgPT4gew0KICAgICAgY29uc3QgY2hpbGQgPSB7DQogICAgICAgIGNvbG91cjogc3lzdGVtLmNvbG91ciwNCiAgICAgICAgZW5hYmxlZDogc3lzdGVtLmVuYWJsZWQsDQogICAgICAgIGxhYmVsOiBzeXN0ZW0uaWQsDQogICAgICAgIGtleTogc3lzdGVtLmlkLA0KICAgICAgfTsNCiAgICAgIGNvbnN0IGNoaWxkcmVuID0gcHJvY2Vzc0ZUVXMoc3lzdGVtLCBjaGlsZC5rZXkpOw0KICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIGNoaWxkLmNoaWxkcmVuID0gY2hpbGRyZW47DQogICAgICBkYXRhLmNoaWxkcmVuLnB1c2goY2hpbGQpOw0KICAgIH0pOw0KDQogICAgYWxsU3lzdGVtcy5wdXNoKGRhdGEpOw0KICB9DQoNCiAgcmV0dXJuIGFsbFN5c3RlbXM7DQp9Ow0KDQpjb25zdCBjcmVhdGVVbmZpbGxlZFRvb2x0aXBEYXRhID0gZnVuY3Rpb24gKCkgew0KICByZXR1cm4gew0KICAgIGRlc3RpbmF0aW9uczogW10sDQogICAgb3JpZ2luczogW10sDQogICAgY29tcG9uZW50czogW10sDQogICAgZGVzdGluYXRpb25zV2l0aERhdGFzZXRzOiBbXSwNCiAgICBvcmlnaW5zV2l0aERhdGFzZXRzOiBbXSwNCiAgICBjb21wb25lbnRzV2l0aERhdGFzZXRzOiBbXSwNCiAgICByZXNvdXJjZTogdW5kZWZpbmVkLA0KICB9Ow0KfTsNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAiRmxhdG1hcFZ1ZXIiLA0KICBjb21wb25lbnRzOiB7DQogICAgTWFwU3ZnSWNvbiwNCiAgICBNYXBTdmdTcHJpdGVDb2xvciwNCiAgICBUb29sdGlwLA0KICAgIFRyZWVDb250cm9scywNCiAgICBTZWxlY3Rpb25zR3JvdXAsDQogICAgU3ZnTGVnZW5kcywNCiAgfSwNCiAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiAoKSB7DQogICAgdGhpcy5tYXBNYW5hZ2VyID0gdW5kZWZpbmVkOw0KICAgIHRoaXMubWFwSW1wID0gdW5kZWZpbmVkOw0KICAgIC8vVGhlIHN0YXRlIHdhdGNoZXIgbWF5IHRyaWdnZXJlZCBiZWZvcmUNCiAgICAvL2NyZWF0ZWQgY2F1c2luZyBpc3N1ZSwgVGhpcyBmbGFnIHdpbGwNCiAgICAvL3Jlc29sdmUgdGhpcyBpc3N1ZS4NCiAgICB0aGlzLnNldFN0YXRlUmVxdWlyZWQgPSBmYWxzZTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIHZpZXdMYXRlc3RNYXA6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGxldCBiaW9sb2dpY2FsU2V4ID0gdGhpcy5iaW9sb2dpY2FsU2V4ID8gdGhpcy5iaW9sb2dpY2FsU2V4IDogdW5kZWZpbmVkOw0KICAgICAgLy9IdW1hbiByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nDQogICAgICBpZiAodGhpcy5lbnRyeSA9PT0gIk5DQklUYXhvbjo5NjA2Iikgew0KICAgICAgICBiaW9sb2dpY2FsU2V4ID0gIlBBVE86MDAwMDM4NCI7DQogICAgICB9DQogICAgICBjb25zdCBzdGF0ZSA9IHsNCiAgICAgICAgZW50cnk6IHRoaXMuZW50cnksDQogICAgICAgIGJpb2xvZ2ljYWxTZXgsDQogICAgICAgIHZpZXdwb3J0OiB0aGlzLm1hcEltcC5nZXRTdGF0ZSgpLA0KICAgICAgfTsNCiAgICAgIHRoaXMuJGVtaXQoInZpZXctbGF0ZXN0LW1hcCIsIHN0YXRlKTsNCiAgICB9LA0KICAgIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjazogZnVuY3Rpb24gKGNvbG91cikgew0KICAgICAgdGhpcy5jdXJyZW50QmFja2dyb3VuZCA9IGNvbG91cjsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICB0aGlzLm1hcEltcC5zZXRCYWNrZ3JvdW5kQ29sb3VyKHRoaXMuY3VycmVudEJhY2tncm91bmQsIDEpOw0KICAgICAgfQ0KICAgIH0sDQogICAgdG9nZ2xlRHJhd2VyOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLmRyYXdlck9wZW4gPSAhdGhpcy5kcmF3ZXJPcGVuOw0KICAgIH0sDQogICAgLyoqDQogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIGNvbG91ci9ncmV5c2NhbGUgb2Ygb3JnYW5zLg0KICAgICAqLw0KICAgIHNldENvbG91cjogZnVuY3Rpb24gKGZsYWcpIHsNCiAgICAgIHRoaXMuY29sb3VyUmFkaW8gPSBmbGFnOw0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIHRoaXMubWFwSW1wLnNldENvbG91cih7IGNvbG91cjogZmxhZywgb3V0bGluZTogdGhpcy5vdXRsaW5lc1JhZGlvIH0pOw0KICAgICAgfQ0KICAgIH0sDQogICAgLyoqDQogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIG91dGxpbmVzIGYgb3JnYW5zLg0KICAgICAqLw0KICAgIHNldE91dGxpbmVzOiBmdW5jdGlvbiAoZmxhZykgew0KICAgICAgdGhpcy5vdXRsaW5lUmFkaW8gPSBmbGFnOw0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIHRoaXMubWFwSW1wLnNldENvbG91cih7IGNvbG91cjogdGhpcy5jb2xvdXJSYWRpbywgb3V0bGluZTogZmxhZyB9KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBwYXRocyB0byBkZWZhdWx0Lg0KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuDQogICAgICovDQogICAgcmVzZXRWaWV3OiBmdW5jdGlvbiAoKSB7DQogICAgICBpZiAodGhpcy5tYXBJbXApIHsNCiAgICAgICAgdGhpcy5tYXBJbXAucmVzZXRNYXAoKTsNCiAgICAgICAgaWYgKHRoaXMuJHJlZnMuY2VudHJlbGluZXNTZWxlY3Rpb24pIHsNCiAgICAgICAgICB0aGlzLiRyZWZzLmNlbnRyZWxpbmVzU2VsZWN0aW9uLnJlc2V0KCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHRoaXMuJHJlZnMuc2tjYW5TZWxlY3Rpb24pIHsNCiAgICAgICAgICB0aGlzLiRyZWZzLnNrY2FuU2VsZWN0aW9uLnJlc2V0KCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHRoaXMuJHJlZnMubGF5ZXJzU2VsZWN0aW9uKSB7DQogICAgICAgICAgdGhpcy4kcmVmcy5sYXllcnNTZWxlY3Rpb24ucmVzZXQoKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGhpcy4kcmVmcy5zeXN0ZW1zU2VsZWN0aW9uKSB7DQogICAgICAgICAgdGhpcy4kcmVmcy5wYXRod2F5c1NlbGVjdGlvbi5yZXNldCgpOw0KICAgICAgICB9DQogICAgICAgIGlmICh0aGlzLiRyZWZzLnBhdGh3YXlzU2VsZWN0aW9uKSB7DQogICAgICAgICAgdGhpcy4kcmVmcy5wYXRod2F5c1NlbGVjdGlvbi5yZXNldCgpOw0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIGluLg0KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuDQogICAgICovDQogICAgem9vbUluOiBmdW5jdGlvbiAoKSB7DQogICAgICBpZiAodGhpcy5tYXBJbXApIHsNCiAgICAgICAgdGhpcy5tYXBJbXAuem9vbUluKCk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4NCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLg0KICAgICAqLw0KICAgIHpvb21PdXQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICB0aGlzLm1hcEltcC56b29tT3V0KCk7DQogICAgICB9DQogICAgfSwNCiAgICBjZW50cmVMaW5lc1NlbGVjdGVkOiBmdW5jdGlvbiAocGF5bG9hZCkgew0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZUNlbnRyZWxpbmVzKHBheWxvYWQudmFsdWUpOw0KICAgICAgfQ0KICAgIH0sDQogICAgc2NrYW5TZWxlY3RlZDogZnVuY3Rpb24gKHBheWxvYWQpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVTY2thblBhdGgocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOw0KICAgICAgfQ0KICAgIH0sDQogICAgY2hlY2tBbGxTQ0tBTjogZnVuY3Rpb24gKHBheWxvYWQpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICBwYXlsb2FkLmtleXMuZm9yRWFjaCgoa2V5KSA9Pg0KICAgICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZVNja2FuUGF0aChrZXksIHBheWxvYWQudmFsdWUpKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGhpZ2hsaWdodENvbm5lY3RlZFBhdGhzOiBmdW5jdGlvbiAocGF5bG9hZCkgew0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIGxldCBwYXRocyA9IFsuLi50aGlzLm1hcEltcC5wYXRoTW9kZWxOb2RlcyhwYXlsb2FkKV07DQogICAgICAgIC8vIFRoZSBsaW5lIGJlbG93IG1hdGNoZXMgdGhlIHBhdGhzIHRvIHRoZSBhbm5JZFRvRmVhdHVyZUlkIG1hcCB0byBnZXQgdGhlIGZlYXR1cmUgaWRzDQoNCiAgICAgICAgbGV0IHBhdGhGZWF0dXJlcyA9IHBhdGhzLm1hcChwPT50aGlzLm1hcEltcC5mZWF0dXJlUHJvcGVydGllcyhwKSk7DQogICAgICAgIGxldCB0b0hpZ2hsaWdodCA9IFtdOw0KICAgICAgICBwYXRoRmVhdHVyZXMuZm9yRWFjaChwPT57DQogICAgICAgICAgdGhpcy5tYXBJbXAubm9kZVBhdGhNb2RlbHMocC5mZWF0dXJlSWQpLmZvckVhY2goZj0+ew0KICAgICAgICAgICAgdG9IaWdobGlnaHQucHVzaChmKTsNCiAgICAgICAgICB9KQ0KICAgICAgICB9KQ0KICAgICAgICAvLyBkaXNwbGF5IGNvbm5lY3RlZCBwYXRocw0KICAgICAgICB0aGlzLm1hcEltcC56b29tVG9GZWF0dXJlcyh0b0hpZ2hsaWdodCwge25vWm9vbUluOiB0cnVlfSk7DQogICAgICB9DQogICAgfSwNCiAgICBzeXN0ZW1TZWxlY3RlZDogZnVuY3Rpb24gKHBheWxvYWQpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVTeXN0ZW0ocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOw0KICAgICAgfQ0KICAgIH0sDQogICAgY2hlY2tBbGxTeXN0ZW1zOiBmdW5jdGlvbiAoZmxhZykgew0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIHRoaXMuc3lzdGVtc1swXS5jaGlsZHJlbi5mb3JFYWNoKChrZXkpID0+DQogICAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlU3lzdGVtKGtleS5sYWJlbCwgZmxhZykNCiAgICAgICAgKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGZ0dVNlbGVjdGVkOiBmdW5jdGlvbiAobW9kZWxzKSB7DQogICAgICB0aGlzLnNlYXJjaEFuZFNob3dSZXN1bHQobW9kZWxzLCB0cnVlKTsNCiAgICB9LA0KICAgIGxheWVyc1NlbGVjdGVkOiBmdW5jdGlvbiAocGF5bG9hZCkgew0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZUxheWVyKHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGNoZWNrQWxsTGF5ZXJzOiBmdW5jdGlvbiAocGF5bG9hZCkgew0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIHBheWxvYWQua2V5cy5mb3JFYWNoKChrZXkpID0+DQogICAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlTGF5ZXIoa2V5LCBwYXlsb2FkLnZhbHVlKQ0KICAgICAgICApOw0KICAgICAgfQ0KICAgIH0sDQogICAgdGF4b25zU2VsZWN0ZWQ6IGZ1bmN0aW9uIChwYXlsb2FkKSB7DQogICAgICBpZiAodGhpcy5tYXBJbXApIHsNCiAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlQ29ubmVjdGl2aXR5QnlUYXhvbklkcyhwYXlsb2FkLmtleSwgcGF5bG9hZC52YWx1ZSk7DQogICAgICB9DQogICAgfSwNCiAgICBjaGVja0FsbFRheG9uczogZnVuY3Rpb24gKHBheWxvYWQpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICBwYXlsb2FkLmtleXMuZm9yRWFjaCgoa2V5KSA9Pg0KICAgICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZUNvbm5lY3Rpdml0eUJ5VGF4b25JZHMoa2V5LCBwYXlsb2FkLnZhbHVlKQ0KICAgICAgICApOw0KICAgICAgfQ0KICAgIH0sDQogICAgcGF0aHdheXNTZWxlY3RlZDogZnVuY3Rpb24gKHBheWxvYWQpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVQYXRoKHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGNoZWNrQWxsUGF0aHdheXM6IGZ1bmN0aW9uIChwYXlsb2FkKSB7DQogICAgICBpZiAodGhpcy5tYXBJbXApIHsNCiAgICAgICAgcGF5bG9hZC5rZXlzLmZvckVhY2goKGtleSkgPT4NCiAgICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVQYXRoKGtleSwgcGF5bG9hZC52YWx1ZSkNCiAgICAgICAgKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGVuYWJsZVBhblpvb21FdmVudHM6IGZ1bmN0aW9uIChmbGFnKSB7DQogICAgICB0aGlzLm1hcEltcC5lbmFibGVQYW5ab29tRXZlbnRzKGZsYWcpOw0KICAgIH0sDQogICAgZXZlbnRDYWxsYmFjazogZnVuY3Rpb24gKCkgew0KICAgICAgcmV0dXJuIChldmVudFR5cGUsIGRhdGEsIC4uLmFyZ3MpID0+IHsNCiAgICAgICAgaWYgKGV2ZW50VHlwZSAhPT0gInBhbi16b29tIikgew0KICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGF0YS5sYWJlbDsNCiAgICAgICAgICBjb25zdCByZXNvdXJjZSA9IFtkYXRhLm1vZGVsc107DQogICAgICAgICAgY29uc3QgdGF4b25vbXkgPSB0aGlzLmVudHJ5Ow0KICAgICAgICAgIGNvbnN0IGJpb2xvZ2ljYWxTZXggPSB0aGlzLmJpb2xvZ2ljYWxTZXg7DQogICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHsNCiAgICAgICAgICAgIGRhdGFzZXQ6IGRhdGEuZGF0YXNldCwNCiAgICAgICAgICAgIGJpb2xvZ2ljYWxTZXg6IGJpb2xvZ2ljYWxTZXgsDQogICAgICAgICAgICB0YXhvbm9teTogdGF4b25vbXksDQogICAgICAgICAgICByZXNvdXJjZTogcmVzb3VyY2UsDQogICAgICAgICAgICBsYWJlbDogbGFiZWwsDQogICAgICAgICAgICBmZWF0dXJlOiBkYXRhLA0KICAgICAgICAgICAgdXNlckRhdGE6IGFyZ3MsDQogICAgICAgICAgICBldmVudFR5cGU6IGV2ZW50VHlwZSwNCiAgICAgICAgICAgIHByb3ZlbmFuY2VUYXhvbm9teTogZGF0YS50YXhvbnMNCiAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKGRhdGEudGF4b25zKQ0KICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwNCiAgICAgICAgICB9Ow0KICAgICAgICAgIGlmIChldmVudFR5cGUgPT09ICJjbGljayIpIHsNCiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdpbmdNb2RlID09PSAiTmV0d29yayBEaXNjb3ZlcnkiKSB7DQogICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29ubmVjdGVkUGF0aHMoW2RhdGEubW9kZWxzXSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBY3RpdmUgPSBkYXRhLm1vZGVscyA/IGRhdGEubW9kZWxzIDogIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICJtb3VzZWVudGVyIiAmJiANCiAgICAgICAgICAhKHRoaXMudmlld2luZ01vZGUgPT09ICJOZXR3b3JrIERpc2NvdmVyeSIpKSB7DQogICAgICAgICAgICB0aGlzLmN1cnJlbnRIb3ZlciA9IGRhdGEubW9kZWxzID8gZGF0YS5tb2RlbHMgOiAiIjsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKA0KICAgICAgICAgICAgZGF0YSAmJg0KICAgICAgICAgICAgZGF0YS50eXBlICE9PSAibWFya2VyIiAmJg0KICAgICAgICAgICAgZXZlbnRUeXBlID09PSAiY2xpY2siICYmDQogICAgICAgICAgICAhKHRoaXMudmlld2luZ01vZGUgPT09ICJOZXR3b3JrIERpc2NvdmVyeSIpDQogICAgICAgICAgKSB7DQogICAgICAgICAgICB0aGlzLmNoZWNrQW5kQ3JlYXRlUG9wdXBzKHBheWxvYWQpOw0KICAgICAgICAgIH0NCiAgICAgICAgICB0aGlzLiRlbWl0KCJyZXNvdXJjZS1zZWxlY3RlZCIsIHBheWxvYWQpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJGVtaXQoInBhbi16b29tLWNhbGxiYWNrIiwgZGF0YSk7DQogICAgICAgIH0NCiAgICAgIH07DQogICAgfSwNCiAgICAvLyBjaGVja05ldXJvbkNsaWNrZWQgc2hvd3MgYSBuZXVyb24gcGF0aCBwb3AgdXAgaWYgYSBwYXRoIHdhcyByZWNlbnRseSBjbGlja2VkDQogICAgY2hlY2tBbmRDcmVhdGVQb3B1cHM6IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAvLyBDYWxsIGZsYXRtYXAgZGF0YWJhc2UgdG8gZ2V0IHRoZSBjb25uZWN0aW9uIGRhdGENCiAgICAgIGlmICh0aGlzLnZpZXdpbmdNb2RlICA9PT0gIkFubm90YXRpb24iKSB7DQogICAgICAgIGlmIChkYXRhLmZlYXR1cmUgJiYgZGF0YS5mZWF0dXJlLmZlYXR1cmVJZCAmJiBkYXRhLmZlYXR1cmUubW9kZWxzKSB7DQogICAgICAgICAgdGhpcy5hbm5vdGF0aW9uRW50cnkgPSB7IC4uLmRhdGEuZmVhdHVyZSwgcmVzb3VyY2VJZDogdGhpcy5zZXJ2ZXJVVUlEIH07DQogICAgICAgICAgdGhpcy5kaXNwbGF5VG9vbHRpcChkYXRhLmZlYXR1cmUubW9kZWxzKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLmFubm90YXRpb24gPSB7fTsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgbGV0IHJlc3VsdHMgPQ0KICAgICAgICAgIGF3YWl0IHRoaXMuZmxhdG1hcFF1ZXJpZXMucmV0cmlldmVGbGF0bWFwS25vd2xlZGdlRm9yRXZlbnQoZGF0YSk7DQogICAgICAgIC8vIFRoZSBsaW5lIGJlbG93IG9ubHkgY3JlYXRlcyB0aGUgdG9vbHRpcCBpZiBzb21lIGRhdGEgd2FzIGZvdW5kIG9uIHRoZSBwYXRoDQogICAgICAgIC8vIHJlc3VsdCAwIGlzIHRoZSBjb25uZWN0aW9uLCByZXN1bHQgMSBpcyB0aGUgcHVibWVkIHJlc3VsdHMgZnJvbSBmbGF0bWFwDQogICAgICAgIGlmICgNCiAgICAgICAgICByZXN1bHRzWzBdIHx8DQogICAgICAgICAgcmVzdWx0c1sxXSB8fA0KICAgICAgICAgIChkYXRhLmZlYXR1cmUuaHlwZXJsaW5rcyAmJiBkYXRhLmZlYXR1cmUuaHlwZXJsaW5rcy5sZW5ndGggPiAwKQ0KICAgICAgICApIHsNCiAgICAgICAgICB0aGlzLnJlc291cmNlRm9yVG9vbHRpcCA9IGRhdGEucmVzb3VyY2VbMF07DQogICAgICAgICAgZGF0YS5yZXNvdXJjZUZvclRvb2x0aXAgPSB0aGlzLnJlc291cmNlRm9yVG9vbHRpcDsNCiAgICAgICAgICB0aGlzLmNyZWF0ZVRvb2x0aXBGcm9tTmV1cm9uQ3VyYXRpb24oZGF0YSk7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9LA0KICAgIHBvcFVwQ3NzSGFja3M6IGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIEJlbG93IGlzIGEgaGFjayB0byByZW1vdmUgZmxhdG1hcCB0b29sdGlwcyB3aGlsZSBwb3B1cCBpcyBvcGVuDQogICAgICBsZXQgZnRvb2x0aXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZmxhdG1hcC10b29sdGlwLXBvcHVwIik7DQogICAgICBpZiAoZnRvb2x0aXApIGZ0b29sdGlwLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubWFwbGlicmVnbC1wb3B1cC1jbG9zZS1idXR0b24iKS5zdHlsZS5kaXNwbGF5ID0NCiAgICAgICAgImJsb2NrIjsNCiAgICAgIHRoaXMuJHJlZnMudG9vbHRpcC4kZWwuc3R5bGUuZGlzcGxheSA9ICJmbGV4IjsNCiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tYXBsaWJyZWdsLXBvcHVwLWNsb3NlLWJ1dHRvbiIpLm9uY2xpY2sgPSAoKSA9PiB7DQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5mbGF0bWFwLXRvb2x0aXAtcG9wdXAiKS5zdHlsZS5kaXNwbGF5ID0NCiAgICAgICAgICAiYmxvY2siOw0KICAgICAgfTsNCiAgICB9LA0KICAgIGNsb3NlVG9vbHRpcDogZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy4kcmVmcy50b29sdGlwLiRlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLm1hcGxpYnJlZ2wtcG9wdXAiKS5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgIGl0ZW0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgY3JlYXRlVG9vbHRpcEZyb21OZXVyb25DdXJhdGlvbjogYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgIHRoaXMudG9vbHRpcEVudHJ5ID0gYXdhaXQgdGhpcy5mbGF0bWFwUXVlcmllcy5jcmVhdGVUb29sdGlwRGF0YShkYXRhKTsNCiAgICAgIHRoaXMuZGlzcGxheVRvb2x0aXAoZGF0YS5yZXNvdXJjZVswXSk7DQogICAgfSwNCiAgICAvLyBLZWVwaW5nIHRoaXMgYXMgYW4gQVBJDQogICAgc2hvd1BvcHVwOiBmdW5jdGlvbiAoZmVhdHVyZUlkLCBub2RlLCBvcHRpb25zKSB7DQogICAgICBsZXQgbXlPcHRpb25zID0gb3B0aW9uczsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICBpZiAobXlPcHRpb25zKSB7DQogICAgICAgICAgaWYgKCFteU9wdGlvbnMuY2xhc3NOYW1lKSBteU9wdGlvbnMuY2xhc3NOYW1lID0gImN1c3RvbS1wb3B1cCI7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgbXlPcHRpb25zID0geyBjbGFzc05hbWU6ICJjdXN0b20tcG9wdXAiLCBwb3NpdGlvbkF0TGFzdENsaWNrOiB0cnVlIH07DQogICAgICAgIH0NCiAgICAgICAgdGhpcy5tYXBJbXAuc2hvd1BvcHVwKGZlYXR1cmVJZCwgbm9kZSwgbXlPcHRpb25zKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHNob3dNYXJrZXJQb3B1cDogZnVuY3Rpb24gKGZlYXR1cmVJZCwgbm9kZSwgb3B0aW9ucykgew0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIHRoaXMubWFwSW1wLnNob3dNYXJrZXJQb3B1cChmZWF0dXJlSWQsIG5vZGUsIG9wdGlvbnMpOw0KICAgICAgfQ0KICAgIH0sDQogICAgY2xvc2VNaW5pbWFwOiBmdW5jdGlvbiAoKSB7DQogICAgICBsZXQgbWluaW1hcEVsID0gdGhpcy4kcmVmcy5mbGF0bWFwQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoDQogICAgICAgICIubWFwbGlicmVnbC1jdHJsLW1pbmltYXAiDQogICAgICApOyAvLyBmaW5kIG1pbmltYXANCiAgICAgIGlmICh0aGlzLm1pbmltYXBTbWFsbCkgew0KICAgICAgICAvL3N3aXRjaCB0aGUgY2xhc3NlcyBvbiB0aGUgbWluaW1hcA0KICAgICAgICBtaW5pbWFwRWwuY2xhc3NMaXN0LmFkZCgiZW5sYXJnZSIpOw0KICAgICAgICBtaW5pbWFwRWwuY2xhc3NMaXN0LnJlbW92ZSgic2hyaW5rIik7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBtaW5pbWFwRWwuY2xhc3NMaXN0LmFkZCgic2hyaW5rIik7DQogICAgICAgIG1pbmltYXBFbC5jbGFzc0xpc3QucmVtb3ZlKCJlbmxhcmdlIik7DQogICAgICB9DQogICAgICB0aGlzLm1pbmltYXBTbWFsbCA9ICF0aGlzLm1pbmltYXBTbWFsbDsNCiAgICB9LA0KICAgIGFkZFJlc2l6ZUJ1dHRvblRvTWluaW1hcDogZnVuY3Rpb24gKCkgew0KICAgICAgbGV0IG1pbmltYXBFbCA9IHRoaXMuJHJlZnMuZmxhdG1hcENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKA0KICAgICAgICAiLm1hcGxpYnJlZ2wtY3RybC1taW5pbWFwIg0KICAgICAgKTsNCiAgICAgIGlmIChtaW5pbWFwRWwpIHsNCiAgICAgICAgdGhpcy4kcmVmcy5taW5pbWFwUmVzaXplLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoDQogICAgICAgICAgdGhpcy4kcmVmcy5taW5pbWFwUmVzaXplDQogICAgICAgICk7DQogICAgICAgIG1pbmltYXBFbC5hcHBlbmRDaGlsZCh0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUpOw0KICAgICAgICB0aGlzLm1pbmltYXBSZXNpemVTaG93ID0gdHJ1ZTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHNldEhlbHBNb2RlOiBmdW5jdGlvbiAoaGVscE1vZGUpIHsNCiAgICAgIGlmIChoZWxwTW9kZSkgew0KICAgICAgICB0aGlzLmluSGVscCA9IHRydWU7DQogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOw0KICAgICAgICB9KTsNCiAgICAgICAgdGhpcy5vcGVuRmxhdG1hcEhlbHBQb3B1cCgpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5pbkhlbHAgPSBmYWxzZTsNCiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgICAgaXRlbS52YWx1ZSA9IGZhbHNlOw0KICAgICAgICB9KTsNCiAgICAgICAgdGhpcy5jbG9zZUZsYXRtYXBIZWxwUG9wdXAoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHNob3dUb29saXRpcDogZnVuY3Rpb24gKHRvb2x0aXBOdW1iZXIpIHsNCiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsNCiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudG9vbHRpcFdhaXRbdG9vbHRpcE51bWJlcl0pOw0KICAgICAgICB0aGlzLnRvb2x0aXBXYWl0W3Rvb2x0aXBOdW1iZXJdID0gc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllc1t0b29sdGlwTnVtYmVyXS52YWx1ZSA9IHRydWU7DQogICAgICAgIH0sIDUwMCk7DQogICAgICB9DQogICAgfSwNCiAgICBoaWRlVG9vbGl0aXA6IGZ1bmN0aW9uICh0b29sdGlwTnVtYmVyKSB7DQogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7DQogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvb2x0aXBXYWl0W3Rvb2x0aXBOdW1iZXJdKTsNCiAgICAgICAgdGhpcy50b29sdGlwV2FpdFt0b29sdGlwTnVtYmVyXSA9IHNldFRpbWVvdXQoKCkgPT4gew0KICAgICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXNbdG9vbHRpcE51bWJlcl0udmFsdWUgPSBmYWxzZTsNCiAgICAgICAgfSwgNTAwKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGRpc3BsYXlUb29sdGlwOiBmdW5jdGlvbiAoZmVhdHVyZSkgew0KICAgICAgdGhpcy5tYXBJbXAuc2hvd1BvcHVwKA0KICAgICAgICB0aGlzLm1hcEltcC5tb2RlbEZlYXR1cmVJZHMoZmVhdHVyZSlbMF0sDQogICAgICAgIHRoaXMuJHJlZnMudG9vbHRpcC4kZWwsDQogICAgICAgIHsgY2xhc3NOYW1lOiAiZmxhdG1hcHZ1ZXItcG9wb3ZlciIsIHBvc2l0aW9uQXRMYXN0Q2xpY2s6IHRydWUgfQ0KICAgICAgKTsNCiAgICAgIHRoaXMucG9wVXBDc3NIYWNrcygpOw0KICAgIH0sDQogICAgb3BlbkZsYXRtYXBIZWxwUG9wdXA6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICBsZXQgaGVhcnRJZCA9IHRoaXMubWFwSW1wLmZlYXR1cmVJZHNGb3JNb2RlbCgiVUJFUk9OOjAwMDA5NDgiKVswXTsNCiAgICAgICAgY29uc3QgZWxtID0gIkNsaWNrIGZvciBtb3JlIGluZm9ybWF0aW9uIjsNCiAgICAgICAgdGhpcy5tYXBJbXAuc2hvd1BvcHVwKGhlYXJ0SWQsIGVsbSwgew0KICAgICAgICAgIGFuY2hvcjogInRvcCIsDQogICAgICAgICAgY2xhc3NOYW1lOiAiZmxhdG1hcC1wb3B1cC1wb3BwZXIiLA0KICAgICAgICB9KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGNsb3NlRmxhdG1hcEhlbHBQb3B1cDogZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy4kZWwNCiAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoIi5tYXBsaWJyZWdsLXBvcHVwLWNsb3NlLWJ1dHRvbiIpDQogICAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgICAgaXRlbS5jbGljaygpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIGdldExhYmVsczogZnVuY3Rpb24gKCkgew0KICAgICAgbGV0IGxhYmVscyA9IFtdOw0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIGxldCBhbm5vdGF0aW9ucyA9IHRoaXMubWFwSW1wLmFubm90YXRpb25zOw0KICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBhbm5vdGF0aW9ucy52YWx1ZXMoKSkgew0KICAgICAgICAgIGlmICh2YWx1ZS5sYWJlbCkgbGFiZWxzLnB1c2godmFsdWUubGFiZWwpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQobGFiZWxzKSk7DQogICAgICB9DQogICAgfSwNCiAgICBnZXRTdGF0ZTogZnVuY3Rpb24gKCkgew0KICAgICAgaWYgKHRoaXMubWFwSW1wKSB7DQogICAgICAgIGxldCBzdGF0ZSA9IHsNCiAgICAgICAgICBlbnRyeTogdGhpcy5lbnRyeSwNCiAgICAgICAgICB2aWV3cG9ydDogdGhpcy5tYXBJbXAuZ2V0U3RhdGUoKSwNCiAgICAgICAgfTsNCiAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMubWFwSW1wLmdldElkZW50aWZpZXIoKTsNCiAgICAgICAgaWYgKHRoaXMuYmlvbG9naWNhbFNleCkgc3RhdGVbImJpb2xvZ2ljYWxTZXgiXSA9IHRoaXMuYmlvbG9naWNhbFNleDsNCiAgICAgICAgZWxzZSBpZiAoaWRlbnRpZmllciAmJiBpZGVudGlmaWVyLmJpb2xvZ2ljYWxTZXgpDQogICAgICAgICAgc3RhdGVbImJpb2xvZ2ljYWxTZXgiXSA9IGlkZW50aWZpZXIuYmlvbG9naWNhbFNleDsNCiAgICAgICAgaWYgKGlkZW50aWZpZXIgJiYgaWRlbnRpZmllci51dWlkKSBzdGF0ZVsidXVpZCJdID0gaWRlbnRpZmllci51dWlkOw0KICAgICAgICByZXR1cm4gc3RhdGU7DQogICAgICB9DQogICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgIH0sDQogICAgc2V0U3RhdGU6IGZ1bmN0aW9uIChzdGF0ZSkgew0KICAgICAgaWYgKHN0YXRlKSB7DQogICAgICAgIGlmICgNCiAgICAgICAgICB0aGlzLm1hcEltcCAmJg0KICAgICAgICAgIHN0YXRlLmVudHJ5ICYmDQogICAgICAgICAgdGhpcy5lbnRyeSA9PSBzdGF0ZS5lbnRyeSAmJg0KICAgICAgICAgICghc3RhdGUuYmlvbG9naWNhbFNleCB8fCBzdGF0ZS5iaW9sb2dpY2FsU2V4ID09PSB0aGlzLmJpb2xvZ2ljYWxTZXgpDQogICAgICAgICkgew0KICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCkgew0KICAgICAgICAgICAgdGhpcy5tYXBJbXAuc2V0U3RhdGUoc3RhdGUudmlld3BvcnQpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLmNyZWF0ZUZsYXRtYXAoc3RhdGUpOw0KICAgICAgICB9DQogICAgICAgIHRoaXMuc2V0U3RhdGVSZXF1aXJlZCA9IGZhbHNlOw0KICAgICAgfQ0KICAgIH0sDQogICAgcmVzdG9yZU1hcFN0YXRlOiBmdW5jdGlvbiAoc3RhdGUpIHsNCiAgICAgIGlmIChzdGF0ZSkgew0KICAgICAgICBpZiAoc3RhdGUudmlld3BvcnQpIHRoaXMubWFwSW1wLnNldFN0YXRlKHN0YXRlLnZpZXdwb3J0KTsNCiAgICAgICAgaWYgKHN0YXRlLnNlYXJjaFRlcm0pIHRoaXMuc2VhcmNoQW5kU2hvd1Jlc3VsdChzdGF0ZS5zZWFyY2hUZXJtLCB0cnVlKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGNyZWF0ZUZsYXRtYXA6IGZ1bmN0aW9uIChzdGF0ZSkgew0KICAgICAgaWYgKCF0aGlzLm1hcEltcCAmJiAhdGhpcy5sb2FkaW5nKSB7DQogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICAgIGxldCBtaW5pbWFwID0gZmFsc2U7DQogICAgICAgIGlmICh0aGlzLmRpc3BsYXlNaW5pbWFwKSB7DQogICAgICAgICAgbWluaW1hcCA9IHsgcG9zaXRpb246ICJ0b3AtcmlnaHQiIH07DQogICAgICAgIH0NCg0KICAgICAgICAvL0FzIGZvciBmbGF0bWFwLXZpZXdlckAyLjIuNywgc2VlIGJlbG93IGZvciB0aGUgZG9jdW1lbnRhdGlvbg0KICAgICAgICAvL2ZvciB0aGUgaWRlbnRpZmllcjoNCg0KICAgICAgICAvL0BhcmcgaWRlbnRpZmllciB7c3RyaW5nfE9iamVjdH0NCiAgICAgICAgLy8gQSBzdHJpbmcgb3Igb2JqZWN0IGlkZW50aWZ5aW5nIHRoZSBtYXAgdG8gbG9hZC4gSWYgYSBzdHJpbmcgaXRzDQogICAgICAgIC8vIHZhbHVlIGNhbiBiZSBlaXRoZXIgdGhlIG1hcCdzIGBgdXVpZGBgLCBhc3NpZ25lZCBhdCBnZW5lcmF0aW9uIHRpbWUsDQogICAgICAgIC8vIG9yIHRheG9uIGFuZCBiaW9sb2dpY2FsIHNleCBpZGVudGlmaWVycyBvZiB0aGUgc3BlY2llcyB0aGF0IHRoZSBtYXANCiAgICAgICAgLy8gcmVwcmVzZW50cy4gVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgbWFwIGlzIGxvYWRlZCB1bmxlc3MgaXQgaGFzIGJlZW4NCiAgICAgICAgLy8gaWRlbnRpZmllZCB1c2luZyBhIGBgdXVpZGBgIChzZWUgYmVsb3cpLg0KICAgICAgICAvLyBAYXJnIGlkZW50aWZpZXIudGF4b24ge3N0cmluZ30gVGhlIHRheG9uIGlkZW50aWZpZXIgb2YgdGhlIHNwZWNpZXMNCiAgICAgICAgLy8gIHJlcHJlc2VudGVkIGJ5IHRoZSBtYXAuIFRoaXMgaXMgc3BlY2lmaWVkIGFzIG1ldGFkYXRhIGluIHRoZSBtYXAncyBzb3VyY2UgZmlsZS4NCiAgICAgICAgLy8gQGFyZyBpZGVudGlmaWVyLmJpb2xvZ2ljYWxTZXgge3N0cmluZ30gVGhlIGJpb2xvZ2ljYWwgc2V4IG9mIHRoZSBzcGVjaWVzDQogICAgICAgIC8vIHJlcHJlc2VudGVkIGJ5IHRoZSBtYXAuIFRoaXMgaXMgc3BlY2lmaWVkIGFzIG1ldGFkYXRhaW4gdGhlIG1hcCdzIHNvdXJjZSBmaWxlLg0KICAgICAgICAvLyBAYXJnIGlkZW50aWZpZXIudXVpZCB7c3RyaW5nfSBUaGUgdW5pcXVlIHV1aWQgdGhlIGZsYXRtYXAuIElmIGdpdmVuIHRoZW4gdGhpcyBleGFjdCBtYXAgd2lsbA0KICAgICAgICAvLyAgYmUgbG9hZGVkLCBvdmVycmlkaW5nIGBgdGF4b25gYCBhbmQgYGBiaW9sb2dpY2FsU2V4YGAuDQoNCiAgICAgICAgbGV0IGlkZW50aWZpZXIgPSB7IHRheG9uOiB0aGlzLmVudHJ5IH07DQogICAgICAgIGlmICh0aGlzLnV1aWQpIHsNCiAgICAgICAgICBpZGVudGlmaWVyLnV1aWQgPSB0aGlzLnV1aWQ7DQogICAgICAgIH0NCiAgICAgICAgLy9UaGlzIG5vdyBoYW5kbGUgdGhlIHVzZXMgb2YgdXVpZCB3aGVuIHJlc3VtaW5nIHN0YXRlcw0KICAgICAgICBpZiAoc3RhdGUpIHsNCiAgICAgICAgICBpZiAoc3RhdGUudXVpZCkgew0KICAgICAgICAgICAgaWRlbnRpZmllciA9IHsgdXVpZDogc3RhdGUudXVpZCB9Ow0KICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW50cnkpIHsNCiAgICAgICAgICAgIGlkZW50aWZpZXIudGF4b24gPSBzdGF0ZS5lbnRyeTsNCiAgICAgICAgICAgIGlmIChzdGF0ZS5iaW9sb2dpY2FsU2V4KSB7DQogICAgICAgICAgICAgIGlkZW50aWZpZXJbImJpb2xvZ2ljYWxTZXgiXSA9IHN0YXRlLmJpb2xvZ2ljYWxTZXg7DQogICAgICAgICAgICB9IGVsc2UgaWYgKGlkZW50aWZpZXIudGF4b24gPT09ICJOQ0JJVGF4b246OTYwNiIpIHsNCiAgICAgICAgICAgICAgLy9Gb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQ0KICAgICAgICAgICAgICBpZGVudGlmaWVyWyJiaW9sb2dpY2FsU2V4Il0gPSAiUEFUTzowMDAwMzg0IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgLy8gU2V0IHRoZSBiaW9sb2ljYWxTZXggbm93IGlmIG1hcCBpcyBub3QgcmVzdW1lZCBmcm9tDQogICAgICAgICAgLy8gYSBzYXZlZCBzdGF0ZQ0KICAgICAgICAgIGlmICh0aGlzLmJpb2xvZ2ljYWxTZXgpIHsNCiAgICAgICAgICAgIGlkZW50aWZpZXJbImJpb2xvZ2ljYWxTZXgiXSA9IHRoaXMuYmlvbG9naWNhbFNleDsNCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBsZXQgcHJvbWlzZTEgPSB0aGlzLm1hcE1hbmFnZXIubG9hZE1hcCgNCiAgICAgICAgICBpZGVudGlmaWVyLA0KICAgICAgICAgIHRoaXMuJHJlZnMuZGlzcGxheSwNCiAgICAgICAgICB0aGlzLmV2ZW50Q2FsbGJhY2soKSwNCiAgICAgICAgICB7DQogICAgICAgICAgICAvL2Z1bGxzY3JlZW5Db250cm9sOiBmYWxzZSwNCiAgICAgICAgICAgIC8vYW5ub3RhdGFibGU6IGZhbHNlLA0KICAgICAgICAgICAgLy9kZWJ1ZzogdHJ1ZSwNCiAgICAgICAgICAgIGZlYXR1cmVJbmZvOiB0aGlzLmZlYXR1cmVJbmZvLA0KICAgICAgICAgICAgIm1pbi16b29tIjogdGhpcy5taW5ab29tLA0KICAgICAgICAgICAgbGF5ZXJDb250cm9sOiB0cnVlLA0KICAgICAgICAgICAgcGF0aENvbnRyb2xzOiB0cnVlLA0KICAgICAgICAgICAgc2VhcmNoYWJsZTogdGhpcy5zZWFyY2hhYmxlLA0KICAgICAgICAgICAgdG9vbHRpcHM6IHRoaXMudG9vbHRpcHMsDQogICAgICAgICAgICBtaW5pbWFwOiBtaW5pbWFwLA0KICAgICAgICAgIH0NCiAgICAgICAgKTsNCiAgICAgICAgcHJvbWlzZTEudGhlbigocmV0dXJuZWRPYmplY3QpID0+IHsNCiAgICAgICAgICB0aGlzLm1hcEltcCA9IHJldHVybmVkT2JqZWN0Ow0KICAgICAgICAgIHRoaXMuc2VydmVyVVVJRCA9IHRoaXMubWFwSW1wLmdldElkZW50aWZpZXIoKS51dWlkOw0KICAgICAgICAgIHRoaXMub25GbGF0bWFwUmVhZHkoKTsNCiAgICAgICAgICBpZiAodGhpcy5fc3RhdGVUb0JlU2V0KSB0aGlzLnJlc3RvcmVNYXBTdGF0ZSh0aGlzLl9zdGF0ZVRvQmVTZXQpOw0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5yZXN0b3JlTWFwU3RhdGUoc3RhdGUpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICB9IGVsc2UgaWYgKHN0YXRlKSB7DQogICAgICAgIHRoaXMuX3N0YXRlVG9CZVNldCA9IHsNCiAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsDQogICAgICAgICAgc2VhcmNoVGVybTogc3RhdGUuc2VhcmNoVGVybSwNCiAgICAgICAgfTsNCiAgICAgICAgaWYgKHRoaXMubWFwSW1wICYmICF0aGlzLmxvYWRpbmcpDQogICAgICAgICAgdGhpcy5yZXN0b3JlTWFwU3RhdGUodGhpcy5fc3RhdGVUb0JlU2V0KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCkgew0KICAgICAgY29uc3QgZWxlbSA9IHRoaXMuJHJlZnMuZGlzcGxheTsNCiAgICAgIGlmIChlbGVtKSB7DQogICAgICAgIGNvbnN0IGNvbXB1dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTsNCiAgICAgICAgY29uc3QgcGFkZGluZyA9DQogICAgICAgICAgcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ1RvcCkgKyBwYXJzZUludChjb21wdXRlZC5wYWRkaW5nQm90dG9tKTsNCiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbS5jbGllbnRIZWlnaHQgLSBwYWRkaW5nOw0KICAgICAgICB0aGlzLnBhdGh3YXlzTWF4SGVpZ2h0ID0gaGVpZ2h0IC0gMTcwOw0KICAgICAgfQ0KICAgIH0sDQogICAgbWFwUmVzaXplOiBmdW5jdGlvbiAoKSB7DQogICAgICB0cnkgew0KICAgICAgICB0aGlzLmNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCk7DQogICAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICAgIHRoaXMubWFwSW1wLnJlc2l6ZSgpOw0KICAgICAgICAgIHRoaXMuc2hvd01pbmltYXAodGhpcy5kaXNwbGF5TWluaW1hcCk7DQogICAgICAgICAgaWYgKHRoaXMubWFwSW1wLl9taW5pbWFwKSB7DQogICAgICAgICAgICB0aGlzLm1hcEltcC5fbWluaW1hcC5yZXNpemUoKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0gY2F0Y2ggew0KICAgICAgICBjb25zb2xlLmVycm9yKCJNYXAgcmVzaXplIGVycm9yIik7DQogICAgICB9DQogICAgfSwNCiAgICBvbkZsYXRtYXBSZWFkeTogZnVuY3Rpb24gKCkgew0KICAgICAgLy8gb25GbGF0bWFwUmVhZHkgaXMgdXNlZCBmb3IgZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBydW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZsYXRtYXAgaXMgbG9hZGVkDQogICAgICB0aGlzLnNlbnNvciA9IG5ldyBSZXNpemVTZW5zb3IodGhpcy4kcmVmcy5kaXNwbGF5LCB0aGlzLm1hcFJlc2l6ZSk7DQogICAgICBpZiAodGhpcy5tYXBJbXAub3B0aW9ucyAmJiB0aGlzLm1hcEltcC5vcHRpb25zLnN0eWxlID09PSAiZnVuY3Rpb25hbCIpIHsNCiAgICAgICAgdGhpcy5pc0ZDID0gdHJ1ZTsNCiAgICAgIH0NCiAgICAgIHRoaXMubWFwSW1wLnNldEJhY2tncm91bmRPcGFjaXR5KDEpOw0KICAgICAgdGhpcy5iYWNrZ3JvdW5kQ2hhbmdlQ2FsbGJhY2sodGhpcy5jdXJyZW50QmFja2dyb3VuZCk7DQogICAgICB0aGlzLnBhdGh3YXlzID0gdGhpcy5tYXBJbXAucGF0aFR5cGVzKCk7DQogICAgICB0aGlzLm1hcEltcC5lbmFibGVDZW50cmVsaW5lcyhmYWxzZSk7DQogICAgICAvL0Rpc2FibGUgbGF5ZXJzIGZvciBub3cNCiAgICAgIC8vdGhpcy5sYXllcnMgPSB0aGlzLm1hcEltcC5nZXRMYXllcnMoKTsNCiAgICAgIHRoaXMuc3lzdGVtcyA9IHByb2Nlc3NTeXN0ZW1zKHRoaXMubWFwSW1wLmdldFN5c3RlbXMoKSk7DQogICAgICB0aGlzLnRheG9uQ29ubmVjdGl2aXR5ID0gcHJvY2Vzc1RheG9uKA0KICAgICAgICB0aGlzLmZsYXRtYXBBUEksDQogICAgICAgIHRoaXMubWFwSW1wLnRheG9uSWRlbnRpZmllcnMNCiAgICAgICk7DQogICAgICB0aGlzLmFkZFJlc2l6ZUJ1dHRvblRvTWluaW1hcCgpOw0KICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICB0aGlzLmNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCk7DQogICAgICB0aGlzLmRyYXdlck9wZW4gPSB0cnVlOw0KICAgICAgdGhpcy5tYXBSZXNpemUoKTsNCiAgICAgIHRoaXMuJGVtaXQoInJlYWR5IiwgdGhpcyk7DQogICAgfSwNCiAgICBzaG93TWluaW1hcDogZnVuY3Rpb24gKGZsYWcpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgdGhpcy5tYXBJbXAuc2hvd01pbmltYXAoZmxhZyk7DQogICAgfSwNCiAgICBzaG93UGF0aHdheXNEcmF3ZXI6IGZ1bmN0aW9uIChmbGFnKSB7DQogICAgICB0aGlzLmRyYXdlck9wZW4gPSBmbGFnOw0KICAgIH0sDQogICAgLyoqDQogICAgICogRnVuY3Rpb24gdG8gZGlzcGxheSBmZWF0dXJlcyB3aXRoIGFubm90YXRpb24gbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIHRlcm0sDQogICAgICogd2l0aCB0aGUgb3B0aW9uIHRvIGRpc3BsYXkgdGhlIGxhYmVsIHVzaW5nIGRpc3BsYXlMYWJlbCBmbGFnLg0KICAgICAqLw0KICAgIHNlYXJjaEFuZFNob3dSZXN1bHQ6IGZ1bmN0aW9uICh0ZXJtLCBkaXNwbGF5TGFiZWwpIHsNCiAgICAgIGlmICh0aGlzLm1hcEltcCkgew0KICAgICAgICBpZiAodGVybSA9PT0gdW5kZWZpbmVkIHx8IHRlcm0gPT09ICIiKSB7DQogICAgICAgICAgdGhpcy5tYXBJbXAuY2xlYXJTZWFyY2hSZXN1bHRzKCk7DQogICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IHRoaXMubWFwSW1wLnNlYXJjaCh0ZXJtKTsNCiAgICAgICAgICBpZiAoDQogICAgICAgICAgICBzZWFyY2hSZXN1bHRzICYmDQogICAgICAgICAgICBzZWFyY2hSZXN1bHRzLnJlc3VsdHMgJiYNCiAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMucmVzdWx0cy5sZW5ndGggPiAwDQogICAgICAgICAgKSB7DQogICAgICAgICAgICB0aGlzLm1hcEltcC5zaG93U2VhcmNoUmVzdWx0cyhzZWFyY2hSZXN1bHRzKTsNCiAgICAgICAgICAgIGlmICgNCiAgICAgICAgICAgICAgZGlzcGxheUxhYmVsICYmDQogICAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMucmVzdWx0c1swXS5mZWF0dXJlSWQgJiYNCiAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0cy5yZXN1bHRzWzBdLnRleHQNCiAgICAgICAgICAgICkgew0KICAgICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uID0gdGhpcy5tYXBJbXAuYW5ub3RhdGlvbigNCiAgICAgICAgICAgICAgICBzZWFyY2hSZXN1bHRzLnJlc3VsdHNbMF0uZmVhdHVyZUlkDQogICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cCgNCiAgICAgICAgICAgICAgICBzZWFyY2hSZXN1bHRzLnJlc3VsdHNbMF0uZmVhdHVyZUlkLA0KICAgICAgICAgICAgICAgIGFubm90YXRpb24ubGFiZWwsDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiY3VzdG9tLXBvcHVwIiwNCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uQXRMYXN0Q2xpY2s6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgcHJlc2VydmVTZWxlY3Rpb246IHRydWUsDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgfSBlbHNlIHRoaXMubWFwSW1wLmNsZWFyU2VhcmNoUmVzdWx0cygpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGVkIHRlcm1zDQogICAgICovDQogICAgc2VhcmNoU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uICh0ZXJtKSB7DQogICAgICBpZiAodGhpcy5tYXBJbXApIHJldHVybiB0aGlzLm1hcEltcC5zZWFyY2godGVybSk7DQogICAgICByZXR1cm4gW107DQogICAgfSwNCiAgfSwNCiAgcHJvcHM6IHsNCiAgICBlbnRyeTogU3RyaW5nLA0KICAgIHV1aWQ6IFN0cmluZywNCiAgICBiaW9sb2dpY2FsU2V4OiB7DQogICAgICB0eXBlOiBTdHJpbmcsDQogICAgICBkZWZhdWx0OiAiIiwNCiAgICB9LA0KICAgIGZlYXR1cmVJbmZvOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICBtaW5ab29tOiB7DQogICAgICB0eXBlOiBOdW1iZXIsDQogICAgICBkZWZhdWx0OiA0LA0KICAgIH0sDQogICAgcGF0aENvbnRyb2xzOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICBzZWFyY2hhYmxlOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICBsYXllckNvbnRyb2w6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiBmYWxzZSwNCiAgICB9LA0KICAgIHRvb2x0aXBzOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogdHJ1ZSwNCiAgICB9LA0KICAgIGhlbHBNb2RlOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICByZW5kZXJBdE1vdW50ZWQ6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiB0cnVlLA0KICAgIH0sDQogICAgZGlzcGxheU1pbmltYXA6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiBmYWxzZSwNCiAgICB9LA0KICAgIGRpc3BsYXlXYXJuaW5nOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGbGFnIHRvIGRldGVybWluZSByYXRoZXIgb3BlbiBtYXAgVUkgc2hvdWxkIGJlDQogICAgICogcHJlc2VudGVkIG9yIG5vdC4NCiAgICAgKi8NCiAgICBlbmFibGVPcGVuTWFwVUk6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiBmYWxzZSwNCiAgICB9LA0KICAgIG9wZW5NYXBPcHRpb25zOiB7DQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgcmV0dXJuIFsNCiAgICAgICAgICB7DQogICAgICAgICAgICBkaXNwbGF5OiAiT3BlbiBBQyBNYXAiLA0KICAgICAgICAgICAga2V5OiAiQUMiLA0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgZGlzcGxheTogIk9wZW4gRkMgTWFwIiwNCiAgICAgICAgICAgIGtleTogIkZDIiwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIDNEIEh1bWFuIE1hcCIsDQogICAgICAgICAgICBrZXk6ICIzRCIsDQogICAgICAgICAgfSwNCiAgICAgICAgXTsNCiAgICAgIH0sDQogICAgfSwNCiAgICBzaG93U3RhckluTGVnZW5kOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UNCiAgICB9LA0KICAgIGlzTGVnYWN5OiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICBkaXNwbGF5TGF0ZXN0Q2hhbmdlczogew0KICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgIGRlZmF1bHQ6IGZhbHNlLA0KICAgIH0sDQogICAgLyoqDQogICAgICogU3RhdGUgY29udGFpbmluZyBzdGF0ZSBvZiB0aGUgZmxhdG1hcC4NCiAgICAgKi8NCiAgICBzdGF0ZTogew0KICAgICAgdHlwZTogT2JqZWN0LA0KICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLA0KICAgIH0sDQogICAgLyoqDQogICAgICogU3BlY2lmeSB0aGUgZW5kcG9pbnQgb2YgdGhlIGZsYXRtYXAgc2VydmVyLg0KICAgICAqLw0KICAgIGZsYXRtYXBBUEk6IHsNCiAgICAgIHR5cGU6IFN0cmluZywNCiAgICAgIGRlZmF1bHQ6ICJodHRwczovL21hcGNvcmUtZGVtby5vcmcvY3VycmVudC9mbGF0bWFwL3YzLyIsDQogICAgfSwNCiAgICBzcGFyY0FQSTogew0KICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgZGVmYXVsdDogImh0dHBzOi8vYXBpLnNwYXJjLnNjaWVuY2UvIiwNCiAgICB9LA0KICB9LA0KICBwcm92aWRlKCkgew0KICAgIHJldHVybiB7DQogICAgICBmbGF0bWFwQVBJOiB0aGlzLmZsYXRtYXBBUEksDQogICAgICBzcGFyY0FQSTogdGhpcy5zcGFyY0FQSSwNCiAgICB9Ow0KICB9LA0KICBkYXRhOiBmdW5jdGlvbiAoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIGFubm90YXRpb25FbnRyeToge30sDQogICAgICBzZXJ2ZXJVVUlEOiB1bmRlZmluZWQsDQogICAgICBsYXllcnM6IFtdLA0KICAgICAgcGF0aHdheXM6IFtdLA0KICAgICAgc2NrYW5EaXNwbGF5OiBbDQogICAgICAgIHsNCiAgICAgICAgICBsYWJlbDogIkRpc3BsYXkgUGF0aCB3aXRoIFNDS0FOIiwNCiAgICAgICAgICBrZXk6ICJWQUxJRCIsDQogICAgICAgIH0sDQogICAgICBdLA0KICAgICAgY2VudHJlTGluZXM6IFsNCiAgICAgICAgew0KICAgICAgICAgIGxhYmVsOiAiRGlzcGxheSBOZXJ2ZXMiLA0KICAgICAgICAgIGtleTogImNlbnRyZWxpbmVzIiwNCiAgICAgICAgICBlbmFibGVkOiBmYWxzZSwNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgICBzeXN0ZW1zOiBbXSwNCiAgICAgIHRheG9uQ29ubmVjdGl2aXR5OiBbXSwNCiAgICAgIHBhdGh3YXlzTWF4SGVpZ2h0OiAxMDAwLA0KICAgICAgaG92ZXJWaXNpYmlsaXRpZXM6IFsNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwNCiAgICAgIF0sDQogICAgICB5ZWxsb3dzdGFyOiB5ZWxsb3dzdGFyLA0KICAgICAgaXNGQzogZmFsc2UsDQogICAgICBpbkhlbHA6IGZhbHNlLA0KICAgICAgY3VycmVudEJhY2tncm91bmQ6ICJ3aGl0ZSIsDQogICAgICBhdmFpbGFibGVCYWNrZ3JvdW5kOiBbIndoaXRlIiwgImxpZ2h0c2t5Ymx1ZSIsICJibGFjayJdLA0KICAgICAgbG9hZGluZzogZmFsc2UsDQogICAgICBmbGF0bWFwTWFya2VyOiBmbGF0bWFwTWFya2VyLA0KICAgICAgdG9vbHRpcEVudHJ5OiBjcmVhdGVVbmZpbGxlZFRvb2x0aXBEYXRhKCksDQogICAgICBjb25uZWN0aXZpdHlUb29sdGlwVmlzaWJsZTogZmFsc2UsDQogICAgICBkcmF3ZXJPcGVuOiBmYWxzZSwNCiAgICAgIGFubm90YXRpb25SYWRpbzogZmFsc2UsDQogICAgICBjb2xvdXJSYWRpbzogdHJ1ZSwNCiAgICAgIG91dGxpbmVzUmFkaW86IHRydWUsDQogICAgICBtaW5pbWFwUmVzaXplU2hvdzogZmFsc2UsDQogICAgICBtaW5pbWFwU21hbGw6IGZhbHNlLA0KICAgICAgY3VycmVudEFjdGl2ZTogIiIsDQogICAgICBjdXJyZW50SG92ZXI6ICIiLA0KICAgICAgdmlld2luZ01vZGU6ICJFeHBsb3JhdGlvbiIsDQogICAgICB2aWV3aW5nTW9kZXM6IFsiQW5ub3RhdGlvbiIsICJFeHBsb3JhdGlvbiIsICJOZXR3b3JrIERpc2NvdmVyeSJdLA0KICAgIH07DQogIH0sDQogIHdhdGNoOiB7DQogICAgZW50cnk6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICghdGhpcy5zdGF0ZSkgdGhpcy5jcmVhdGVGbGF0bWFwKCk7DQogICAgfSwNCiAgICBoZWxwTW9kZTogZnVuY3Rpb24gKHZhbCkgew0KICAgICAgdGhpcy5zZXRIZWxwTW9kZSh2YWwpOw0KICAgIH0sDQogICAgc3RhdGU6IHsNCiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIChzdGF0ZSkgew0KICAgICAgICBpZiAodGhpcy5tYXBNYW5hZ2VyKSB7DQogICAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgLy90aGlzIGNvbXBvbmVudCBoYXMgbm90IGJlZW4gbW91bnRlZCB5ZXQNCiAgICAgICAgICB0aGlzLnNldFN0YXRlUmVxdWlyZWQgPSB0cnVlOw0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgaW1tZWRpYXRlOiB0cnVlLA0KICAgICAgZGVlcDogdHJ1ZSwNCiAgICB9LA0KICB9LA0KICBtb3VudGVkOiBmdW5jdGlvbiAoKSB7DQogICAgY29uc3QgZmxhdG1hcCA9IHJlcXVpcmUoIkBhYmktc29mdHdhcmUvZmxhdG1hcC12aWV3ZXIiKTsNCiAgICB0aGlzLnRvb2x0aXBXYWl0ID0gW107DQogICAgdGhpcy50b29sdGlwV2FpdC5sZW5ndGggPSB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmxlbmd0aDsNCiAgICB0aGlzLm1hcE1hbmFnZXIgPSBuZXcgZmxhdG1hcC5NYXBNYW5hZ2VyKHRoaXMuZmxhdG1hcEFQSSk7DQogICAgdGhpcy5mbGF0bWFwUXVlcmllcyA9IG5ldyBGbGF0bWFwUXVlcmllcygpOw0KICAgIHRoaXMuZmxhdG1hcFF1ZXJpZXMuaW5pdGlhbGlzZSh0aGlzLmZsYXRtYXBBUEkpOw0KICAgIGlmICh0aGlzLnN0YXRlKSB7DQogICAgICAvL1N0YXRlIGlzIHNldCBhbmQgcmVxdWlyZSB0byBzZXQgdGhlIHN0YXRlDQogICAgICBpZiAodGhpcy5zZXRTdGF0ZVJlcXVpcmVkKSB7DQogICAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7DQogICAgICB9DQogICAgfSBlbHNlIGlmICh0aGlzLnJlbmRlckF0TW91bnRlZCkgew0KICAgICAgdGhpcy5jcmVhdGVGbGF0bWFwKCk7DQogICAgfQ0KICB9LA0KfTsNCg=="},{"version":3,"sources":["FlatmapVuer.vue"],"names":[],"mappings":";AAycA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"FlatmapVuer.vue","sourceRoot":"node_modules/@abi-software/flatmapvuer/src/components","sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n"]}]}