{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js??ref--1-0!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/babel.config.js","mtime":1684261475125},{"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:aW1wb3J0IF9UYWJzMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay90YWJzLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1RhYnMgZnJvbSAiZWxlbWVudC11aS9saWIvdGFicyI7CmltcG9ydCBfVGFiUGFuZTIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvdGFiLXBhbmUuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfVGFiUGFuZSBmcm9tICJlbGVtZW50LXVpL2xpYi90YWItcGFuZSI7CmltcG9ydCBfU2xpZGVyMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zbGlkZXIuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2xpZGVyIGZyb20gImVsZW1lbnQtdWkvbGliL3NsaWRlciI7CmltcG9ydCBfU2VsZWN0MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zZWxlY3QuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2VsZWN0IGZyb20gImVsZW1lbnQtdWkvbGliL3NlbGVjdCI7CmltcG9ydCBfUm93MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yb3cuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUm93IGZyb20gImVsZW1lbnQtdWkvbGliL3JvdyI7CmltcG9ydCBfUG9wb3ZlcjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcG9wb3Zlci5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Qb3BvdmVyIGZyb20gImVsZW1lbnQtdWkvbGliL3BvcG92ZXIiOwppbXBvcnQgX09wdGlvbjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvb3B0aW9uLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX09wdGlvbiBmcm9tICJlbGVtZW50LXVpL2xpYi9vcHRpb24iOwppbXBvcnQgX0xvYWRpbmcyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2xvYWRpbmcuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfTG9hZGluZyBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2FkaW5nIjsKaW1wb3J0IF9Db2wyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2NvbC5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Db2wgZnJvbSAiZWxlbWVudC11aS9saWIvY29sIjsKaW1wb3J0IF9CdXR0b24yIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2J1dHRvbi5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9CdXR0b24gZnJvbSAiZWxlbWVudC11aS9saWIvYnV0dG9uIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLnRvLWZpeGVkLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNlYXJjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQsIG5vLWNvbnNvbGUgKi8KaW1wb3J0IFZ1ZSBmcm9tICJ2dWUiOwppbXBvcnQgT3BhY2l0eUNvbnRyb2xzIGZyb20gIi4vT3BhY2l0eUNvbnRyb2xzIjsKaW1wb3J0IFNjYWZmb2xkVG9vbHRpcCBmcm9tICIuL1NjYWZmb2xkVG9vbHRpcCI7CmltcG9ydCBUcmVlQ29udHJvbHMgZnJvbSAiLi9UcmVlQ29udHJvbHMiOwppbXBvcnQgeyBNYXBTdmdJY29uLCBNYXBTdmdTcHJpdGVDb2xvciB9IGZyb20gIkBhYmktc29mdHdhcmUvc3ZnLXNwcml0ZSI7CmltcG9ydCB7IGZpbmRPYmplY3RzV2l0aE5hbWVzLCBnZXRBbGxPYmplY3RzIH0gZnJvbSAiLi4vc2NyaXB0cy91dGlsaXRpZXMuanMiOwppbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gIi4uL3NjcmlwdHMvc2VhcmNoLmpzIjsKaW1wb3J0IGxhbmcgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvZW4iOwppbXBvcnQgbG9jYWxlIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZSI7CmxvY2FsZS51c2UobGFuZyk7ClZ1ZS51c2UoX0J1dHRvbik7ClZ1ZS51c2UoX0NvbCk7ClZ1ZS51c2UoX0xvYWRpbmcuZGlyZWN0aXZlKTsKVnVlLnVzZShfT3B0aW9uKTsKVnVlLnVzZShfUG9wb3Zlcik7ClZ1ZS51c2UoX1Jvdyk7ClZ1ZS51c2UoX1NlbGVjdCk7ClZ1ZS51c2UoX1NsaWRlcik7ClZ1ZS51c2UoX1RhYlBhbmUpOwpWdWUudXNlKF9UYWJzKTsKdmFyIE9yZ2Fuc1ZpZXdlciA9IHJlcXVpcmUoIi4uL3NjcmlwdHMvb3JnYW5zUmVuZGVyZXIiKS5PcmdhbnNWaWV3ZXI7CnZhciBFdmVudE5vdGlmaWVyID0gcmVxdWlyZSgiLi4vc2NyaXB0cy9ldmVudE5vdGlmaWVyIikuRXZlbnROb3RpZmllcjsKCi8qKgogKiBBIHZ1ZSBjb21wb25lbnQgb2YgdGhlIHNjYWZmb2xkIHZpZXdlci4KICoKICogQHJlcXVpcmVzIC4vT3BhY2l0eUNvbnRyb2xzLnZ1ZQogKiBAcmVxdWlyZXMgLi9UcmVlQ29udHJvbHMudnVlCiAqLwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogIlNjYWZmb2xkVnVlciIsCiAgY29tcG9uZW50czogewogICAgTWFwU3ZnSWNvbjogTWFwU3ZnSWNvbiwKICAgIE1hcFN2Z1Nwcml0ZUNvbG9yOiBNYXBTdmdTcHJpdGVDb2xvciwKICAgIE9wYWNpdHlDb250cm9sczogT3BhY2l0eUNvbnRyb2xzLAogICAgU2NhZmZvbGRUb29sdGlwOiBTY2FmZm9sZFRvb2x0aXAsCiAgICBUcmVlQ29udHJvbHM6IFRyZWVDb250cm9scwogIH0sCiAgcHJvcHM6IHsKICAgIC8qKgogICAgICogVVJMIG9mIHRoZSB6aW5janMgbWV0YWRhdGEuIFRoaXMgdmFsdWUgd2lsbCBiZSBpZ25vcmVkIGlmIGEgdmFsaWQKICAgICAqIHN0YXRlIHByb3AgaXMgYWxzbyBwcm92aWRlZC4KICAgICAqIElmIHRoZSB1cmwgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIHN0YXRlIHByZXNlbnQsIHBsZWFzZSB1c2UKICAgICAqIHRoZSBzZXRVUkwgbWV0aG9kLgogICAgICovCiAgICB1cmw6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIgogICAgfSwKICAgIC8qKgogICAgICogU2hvdyB0aGUgY29sb3VyIGNvbnRyb2wgb2Ygc2V0IHRvIHRydWUuCiAgICAgKi8KICAgIHNob3dDb2xvdXJQaWNrZXI6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIEZsYWcgdG8gc2hvdy9oaWRlIHRoZSBVSS4KICAgICAqLwogICAgZGlzcGxheVVJOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioKICAgICAqIERpc3BsYXkgYWxsIGdyYXBoaWNzIGF0IHN0YXJ0LgogICAgICoKICAgICAqIFRoaXMgc2V0dGluZyBvbmx5IHdvcmtzIHdoZW4gdHJhZGl0aW9uYWwgaXMgc2V0IHRvIGZhbHNlLgogICAgICovCiAgICBkaXNwbGF5QXRTdGFydFVwOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioKICAgICAqIFVzZSBmb3IgdG9nZ2xpbmcgdGhlIGhlbHAgdG9vbHRpcHMuCiAgICAgKi8KICAgIGhlbHBNb2RlOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLyoqCiAgICAgKiBVc2UgZm9yIHNob3cvZGlzcGxheSBiZXRhIHdhcm5pbmcgaWNvbi4KICAgICAqLwogICAgZGlzcGxheVdhcm5pbmc6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8qKgogICAgICogV2FybmluZyBtZXNzYWdlIGZvciB0aGUgaG92ZXJlZCBvdmVyIHRleHQKICAgICAqIG9uIHRoZSB3YXJuaW5nIGljb24uCiAgICAgKi8KICAgIHdhcm5pbmdNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIkJldGEgZmVhdHVyZSAtIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCIKICAgIH0sCiAgICBkaXNwbGF5TGF0ZXN0Q2hhbmdlczogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIGxhdGVzdENoYW5nZXNNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIk5ldyBmZWF0dXJlIC0gTG9jYWwgc2VhcmNoIGlzIG5vdyBhdmFpbGFibGUiCiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93L2hpZGUgcGlja2FibGUgbWFya2VycyBmb3IgcmVnaW9ucy4KICAgICAqLwogICAgZGlzcGxheU1hcmtlcnM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIFNob3cvaGlkZSBtaW5pbWFwLgogICAgICovCiAgICBkaXNwbGF5TWluaW1hcDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8qKgogICAgICogRm9ybWF0IG9mIHRoZSBpbnB1dCBVUkwKICAgICAqLwogICAgZm9ybWF0OiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIm1ldGFkYXRhIgogICAgfSwKICAgIC8qKgogICAgICogU2V0dGluZ3MgZm9yIG1pbmltYXAgcG9zaXRpb24sIHNpemUgYW5kIGFsaWdubWVudC4KICAgICAqLwogICAgbWluaW1hcFNldHRpbmdzOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHhfb2Zmc2V0OiAxNiwKICAgICAgICAgIHlfb2Zmc2V0OiAxNiwKICAgICAgICAgIHdpZHRoOiAxMjgsCiAgICAgICAgICBoZWlnaHQ6IDEyOCwKICAgICAgICAgIGFsaWduOiAidG9wLXJpZ2h0IgogICAgICAgIH07CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZsYWcgdG8gZGV0ZXJtaW5lIHJhdGhlciBvcGVuIG1hcCBVSSBzaG91bGQgYmUKICAgICAqIHByZXNlbnRlZCBvciBub3QuCiAgICAgKi8KICAgIGVuYWJsZU9wZW5NYXBVSTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIG9wZW5NYXBPcHRpb25zOiB7CiAgICAgIHR5cGU6IEFycmF5LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW3sKICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIEFDIE1hcCIsCiAgICAgICAgICBrZXk6ICJBQyIKICAgICAgICB9LCB7CiAgICAgICAgICBkaXNwbGF5OiAiT3BlbiBGQyBNYXAiLAogICAgICAgICAga2V5OiAiRkMiCiAgICAgICAgfSwgewogICAgICAgICAgZGlzcGxheTogIk9wZW4gM0QgSHVtYW4gTWFwIiwKICAgICAgICAgIGtleTogIjNEIgogICAgICAgIH1dOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTdGF0ZSBjb250YWluaW5nIHN0YXRlIG9mIHRoZSBzY2FmZm9sZC4KICAgICAqLwogICAgc3RhdGU6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiB1bmRlZmluZWQKICAgIH0sCiAgICAvKioKICAgICAqIE9wdGlvbmFsIHByb3AgZm9yIHRoZSBuYW1lIG9mIHRoZSByZWdpb24gdG8gZm9jdXMgb24sCiAgICAgKiB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHN0YXRlIG9yIHZpZXdVUkwgaXMgYWxzbyBwcm92aWRlZC4KICAgICAqLwogICAgcmVnaW9uOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICAvKioKICAgICAqIE9wdGlvbmFsIHByb3AgZm9yIGFuIFVSTCBvZiBjb250YWluaW5nIGluZm9ybWF0aW9uIG9mIGEgdmlld3BvcnQuCiAgICAgKiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHN0YXRlIGlzIGFsc28gcHJvdmlkZWQuCiAgICAgKiBJdCB3aWxsIHVzZSB0aGUgcHJvdmlkZWQgVVJMIGFzIGJhc2UgaWYgYSByZWxhdGl2ZSBwYXJ0aCBpcyBwcm92aWRlZC4KICAgICAqLwogICAgdmlld1VSTDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICIiCiAgICB9LAogICAgLyoqCiAgICAgKiBTZXR0aW5ncyBmb3IgdHVybmluZyBvbi9vZmYgcmVuZGVyaW5nCiAgICAgKi8KICAgIHJlbmRlcjogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgc2NlbmVEYXRhOiB0aGlzLiRtb2R1bGUuc2NlbmVEYXRhLAogICAgICBpc1BsYXlpbmc6IGZhbHNlLAogICAgICBpc1JlYWR5OiBmYWxzZSwKICAgICAgLyoqCiAgICAgICAqIFRoaXMgaXMgc2V0IHdoZW4gc2NlbmUgaXMgdHJhbnNpdGlvbmluZy4KICAgICAgICovCiAgICAgIGlzVHJhbnNpdGlvbmluZzogZmFsc2UsCiAgICAgIHRvb2x0aXBBcHBlbmRUb0JvZHk6IGZhbHNlLAogICAgICBob3ZlclZpc2liaWxpdGllczogW3sKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH1dLAogICAgICBpbkhlbHA6IGZhbHNlLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgZHVyYXRpb246IDMwMDAsCiAgICAgIGRyYXdlck9wZW46IHRydWUsCiAgICAgIGN1cnJlbnRCYWNrZ3JvdW5kOiAid2hpdGUiLAogICAgICBhdmFpbGFibGVCYWNrZ3JvdW5kOiBbIndoaXRlIiwgImxpZ2h0c2t5Ymx1ZSIsICJibGFjayJdLAogICAgICBtaW5pbWlzZWRTbGlkZXI6IGZhbHNlLAogICAgICBzbGlkZXJQb3NpdGlvbjogIiIsCiAgICAgIHRpbWVNYXg6IDEwMCwKICAgICAgb3JnaW5hbER1cmF0aW9uOiAiIiwKICAgICAgYW5pbWF0ZUR1cmF0aW9uOiAiNnNlY3MiLAogICAgICBwbGF5U3BlZWQ6IFt7CiAgICAgICAgdmFsdWU6IDAuMSwKICAgICAgICBsYWJlbDogIjAuMXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMC41LAogICAgICAgIGxhYmVsOiAiMC41eCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAxLAogICAgICAgIGxhYmVsOiAiMXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMiwKICAgICAgICBsYWJlbDogIjJ4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDUsCiAgICAgICAgbGFiZWw6ICI1eCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAxMCwKICAgICAgICBsYWJlbDogIjEweCIKICAgICAgfV0sCiAgICAgIGN1cnJlbnRTcGVlZDogMSwKICAgICAgdGltZVN0YW1wczoge30sCiAgICAgIGRlZmF1bHRDaGVja2VkS2V5czogW10sCiAgICAgIHREYXRhOiB7CiAgICAgICAgbGFiZWw6ICIiLAogICAgICAgIHJlZ2lvbjogIiIsCiAgICAgICAgdmlzaWJsZTogZmFsc2UsCiAgICAgICAgeDogMjAwLAogICAgICAgIHk6IDIwMAogICAgICB9LAogICAgICBmaWxlRm9ybWF0OiAibWV0YWRhdGEiCiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIGZvcm1hdDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZhbHVlKSB7CiAgICAgICAgdGhpcy5maWxlRm9ybWF0ID0gdmFsdWU7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHVybDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbHVlKSB7CiAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnN0YXRlLnVybCA9PT0gdW5kZWZpbmVkKSB0aGlzLnNldFVSTChuZXdWYWx1ZSk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHJlZ2lvbjogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHJlZ2lvbikgewogICAgICAgIGlmICghKHRoaXMuc3RhdGUgfHwgdGhpcy52aWV3VVJMKSkgdGhpcy5zZXRGb2N1c2VkUmVnaW9uKHJlZ2lvbik7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHN0YXRlOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoc3RhdGUpIHsKICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlLAogICAgICBkZWVwOiB0cnVlCiAgICB9LAogICAgdmlld1VSTDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZpZXdVUkwpIHsKICAgICAgICB0aGlzLnVwZGF0ZVZpZXdVUkwodmlld1VSTCk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIGhlbHBNb2RlOiBmdW5jdGlvbiBoZWxwTW9kZSh2YWwpIHsKICAgICAgdGhpcy5zZXRIZWxwTW9kZSh2YWwpOwogICAgfSwKICAgIGRpc3BsYXlNYXJrZXJzOiBmdW5jdGlvbiBkaXNwbGF5TWFya2Vycyh2YWwpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNYXJrZXJzID0gdmFsOwogICAgICAvL1VwZGF0ZSBwaWNrYWJsZSBvYmplY3RzCiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5mb3JjZVBpY2thYmxlT2JqZWN0c1VwZGF0ZSA9IHRydWU7CiAgICB9LAogICAgZGlzcGxheU1pbmltYXA6IGZ1bmN0aW9uIGRpc3BsYXlNaW5pbWFwKHZhbCkgewogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1pbmltYXAgPSB2YWw7CiAgICB9LAogICAgInNjZW5lRGF0YS5jdXJyZW50VGltZSI6IGZ1bmN0aW9uIHNjZW5lRGF0YUN1cnJlbnRUaW1lKCkgewogICAgICAvKioKICAgICAgICogVHJpZ2dlcnMgd2hlbiBzY2VuZSB0aW1lIGNoYW5nZXMuCiAgICAgICAqCiAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lIEN1cnJlbnQgYnVpbGQtaW4gdGltZSBvZiBzY2VuZS4KICAgICAgICogb2Ygc2VsZWN0ZWQgb2JqZWN0LgogICAgICAgKi8KICAgICAgdGhpcy4kZW1pdCgidGltZUNoYW5nZWQiLCB0aGlzLnNjZW5lRGF0YS5jdXJyZW50VGltZSk7CiAgICB9LAogICAgZHVyYXRpb246IGZ1bmN0aW9uIGR1cmF0aW9uKCkgewogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuc2V0RHVyYXRpb24odGhpcy5kdXJhdGlvbik7CiAgICB9LAogICAgbWluaW1hcFNldHRpbmdzOiB7CiAgICAgIGRlZXA6IHRydWUsCiAgICAgIGhhbmRsZXI6ICJ1cGRhdGVNaW5pbWFwU2Npc3NvciIKICAgIH0sCiAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcih2YWwpIHsKICAgICAgdGhpcy50b2dnbGVSZW5kZXJpbmcodmFsKTsKICAgIH0KICB9LAogIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlKCkgewogICAgdGhpcy4kbW9kdWxlID0gbmV3IE9yZ2Fuc1ZpZXdlcigpOwogICAgdGhpcy5zZWxlY3RlZE9iamVjdHMgPSBbXTsKICAgIHRoaXMuaG92ZXJlZE9iamVjdHMgPSBbXTsKICAgIHRoaXMuY3VycmVudEJhY2tncm91bmQgPSAid2hpdGUiOwogICAgdGhpcy5fY3VycmVudFVSTCA9IHVuZGVmaW5lZDsKICAgIHRoaXMuYXZhaWxhYmxlQmFja2dyb3VuZCA9IFsid2hpdGUiLCAiYmxhY2siLCAibGlnaHRza3libHVlIl07CiAgICB0aGlzLiRfc2VhcmNoSW5kZXggPSBuZXcgU2VhcmNoSW5kZXgoKTsKICAgIHRoaXMuJF90ZW1wSWQgPSAxOwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldE1vZHVsZSh0aGlzLiRtb2R1bGUpOwogICAgdmFyIGV2ZW50Tm90aWZpZXIgPSBuZXcgRXZlbnROb3RpZmllcigpOwogICAgZXZlbnROb3RpZmllci5zdWJzY3JpYmUodGhpcywgdGhpcy5ldmVudE5vdGlmaWVyQ2FsbGJhY2spOwogICAgdGhpcy4kbW9kdWxlLmFkZE5vdGlmaWVyKGV2ZW50Tm90aWZpZXIpOwogICAgdGhpcy4kbW9kdWxlLmFkZE9yZ2FuUGFydEFkZGVkQ2FsbGJhY2sodGhpcy56aW5jT2JqZWN0QWRkZWQpOwogICAgdGhpcy4kbW9kdWxlLmluaXRpYWxpc2VSZW5kZXJlcih0aGlzLiRyZWZzLmRpc3BsYXkpOwogICAgdGhpcy50b2dnbGVSZW5kZXJpbmcodGhpcy5yZW5kZXIpOwogICAgdGhpcy5ybyA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLmFkanVzdExheW91dCkub2JzZXJ2ZSh0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyKTsKICAgIHRoaXMuZGVmYXVsdFJhdGUgPSB0aGlzLiRtb2R1bGUuZ2V0UGxheVJhdGUoKTsKICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICBpZiAodGhpcy5ybykgdGhpcy5yby5kaXNjb25uZWN0KCk7CiAgICB0aGlzLiRtb2R1bGUuZGVzdHJveSgpOwogICAgdGhpcy4kbW9kdWxlID0gdW5kZWZpbmVkOwogIH0sCiAgbWV0aG9kczogewogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgbmV3IHppbmMgb2JqZWN0IGlzIHJlYWQgaW50byB0aGUgc2NlbmUuCiAgICAgKi8KICAgIHppbmNPYmplY3RBZGRlZDogZnVuY3Rpb24gemluY09iamVjdEFkZGVkKHppbmNPYmplY3QpIHsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHppbmNPYmplY3Quc2VhcmNoSW5kZXhJZCA9ICsrdGhpcy4kX3RlbXBJZDsKICAgICAgdGhpcy4kX3NlYXJjaEluZGV4LmFkZFppbmNPYmplY3QoemluY09iamVjdCwgemluY09iamVjdC5zZWFyY2hJbmRleElkKTsKICAgICAgdGhpcy4kZW1pdCgiemluYy1vYmplY3QtYWRkZWQiLCB6aW5jT2JqZWN0KTsKICAgIH0sCiAgICAvKioKICAgICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gQ2hhbmdlIGJhY2tnc3BlZWRyb3VuZCBjb2xvdXIgYnV0dG9uCiAgICAgKiBpcyBwcmVzc2VkIGFuIGNhdXNlcyB0aGUgYmFja2dyb3VDb2xvcm5kIGNvbG91ciB0byBiZSBjaGFuZ2VkCiAgICAgKiB0byBvbmUgb2YgdGhlIHRocmVlIHByZXNldCBjb2xvdXI6IHdoaXRlLCBibGFjayBhbmQKICAgICAqIGxpZ2h0c2t5Ymx1ZS4KICAgICAqLwogICAgYmFja2dyb3VuZENoYW5nZUNhbGxiYWNrOiBmdW5jdGlvbiBiYWNrZ3JvdW5kQ2hhbmdlQ2FsbGJhY2soY29sb3VyKSB7CiAgICAgIHRoaXMuY3VycmVudEJhY2tncm91bmQgPSBjb2xvdXI7CiAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuZ2V0VGhyZWVKU1JlbmRlcmVyKCkuc2V0Q2xlYXJDb2xvcih0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kLCAxKTsKICAgIH0sCiAgICAvKioKICAgICAqIFRoaXMgaXMgY2FsbGVkIGJ5IGNhcHR1ZWVTY3JlZW5zaG90IGFuZCBhZnRlciB0aGUgbGFzdCByZW5kZXIKICAgICAqIGxvb3AsIGl0IGRvd25sb2FkIGEgc2NyZWVuc2hvdCBvZiB0aGUgY3VycmVudCBzY2VuZSB3aXRoIG5vIFVJLgogICAgICovCiAgICBjYXB0dXJlU2NyZWVuc2hvdENhbGxiYWNrOiBmdW5jdGlvbiBjYXB0dXJlU2NyZWVuc2hvdENhbGxiYWNrKCkgewogICAgICAvL1JlbW92ZSB0aGUgY2FsbGJhY2ssIG9ubHkgbmVlZHMgdG8gaGFwcGVuIG9uY2UKICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLmNhcHR1cmVJRCk7CiAgICAgIHZhciBzY3JlZW5zaG90ID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5nZXRUaHJlZUpTUmVuZGVyZXIoKS5kb21FbGVtZW50LnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgIHZhciBocmVmRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaHJlZkVsZW1lbnQpOwogICAgICBpZiAoIXRoaXMuY2FwdHVyZUZpbGVuYW1lKSBocmVmRWxlbWVudC5kb3dubG9hZCA9ICJzY3JlZW5zaG90LnBuZyI7ZWxzZSBocmVmRWxlbWVudC5kb3dubG9hZCA9IHRoaXMuY2FwdHVyZUZpbGVuYW1lOwogICAgICBocmVmRWxlbWVudC5ocmVmID0gc2NyZWVuc2hvdDsKICAgICAgaHJlZkVsZW1lbnQuY2xpY2soKTsKICAgICAgaHJlZkVsZW1lbnQucmVtb3ZlKCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiBmb3IgY2FwdHVyaW5nIGEgc2NyZWVuc2hvdCBvZiB0aGUgY3VycmVudCByZW5kZXJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lIGZpbGVuYW1lIGdpdmVuIHRvIHRoZSBzY3JlZW5zaG90LgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgY2FwdHVyZVNjcmVlbnNob3Q6IGZ1bmN0aW9uIGNhcHR1cmVTY3JlZW5zaG90KGZpbGVuYW1lKSB7CiAgICAgIHRoaXMuY2FwdHVyZUZpbGVuYW1lID0gZmlsZW5hbWU7CiAgICAgIHRoaXMuY2FwdHVyZUlEID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLmNhcHR1cmVTY3JlZW5zaG90Q2FsbGJhY2spOwogICAgfSwKICAgIGZvcm1hdFRvb2x0aXA6IGZ1bmN0aW9uIGZvcm1hdFRvb2x0aXAodmFsKSB7CiAgICAgIGlmICh0aGlzLnRpbWVNYXggPj0gMTAwMCkgewogICAgICAgIGlmICh2YWwpIHsKICAgICAgICAgIHZhciBzZWMgPSAodmFsICUgNjAwMDAgLyAxMDAwKS50b0ZpeGVkKDIpICsgInMiOwogICAgICAgICAgdmFyIG1pbiA9IHZhbCA+IDYwMDAwID8gKHZhbCAvIDYwMDAwKS50b0ZpeGVkKDApICsgIm0gIiA6ICIiOwogICAgICAgICAgcmV0dXJuIG1pbiArIHNlYzsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHZhbCA/IHZhbC50b0ZpeGVkKDIpICsgIiBtcyIgOiAiMCBtcyI7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byByZXNldCB0aGUgdmlldyB0byBkZWZhdWx0LgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGZpdFdpbmRvdzogZnVuY3Rpb24gZml0V2luZG93KCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGwoKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gem9vbSBpbi4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICB6b29tSW46IGZ1bmN0aW9uIHpvb21JbigpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jaGFuZ2Vab29tQnlTY3JvbGxSYXRlVW5pdCgtMSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHpvb20gb3V0LgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHpvb21PdXQ6IGZ1bmN0aW9uIHpvb21PdXQoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2hhbmdlWm9vbUJ5U2Nyb2xsUmF0ZVVuaXQoMSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIGNoYW5nZSB0aGUgY3VycmVudCBwbGF5IHNwZWVkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc3BlZWRDaGFuZ2VkOiBmdW5jdGlvbiBzcGVlZENoYW5nZWQoc3BlZWQpIHsKICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSBzcGVlZDsKICAgICAgdGhpcy4kbW9kdWxlLnNldFBsYXlSYXRlKHRoaXMuZGVmYXVsdFJhdGUgKiB0aGlzLmN1cnJlbnRTcGVlZCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHN0b3AgdGhlIGZyZWUgc3BpbgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc3RvcEZyZWVTcGluOiBmdW5jdGlvbiBzdG9wRnJlZVNwaW4oKSB7CiAgICAgIHZhciBjYW1lcmFjb250cm9sID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICBjYW1lcmFjb250cm9sLnN0b3BBdXRvVHVtYmxlKCk7CiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7CiAgICB9LAogICAgZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lOiBmdW5jdGlvbiBmaW5kT2JqZWN0c1dpdGhHcm91cE5hbWUobmFtZSkgewogICAgICB2YXIgb2JqZWN0cyA9IFtdOwogICAgICBpZiAobmFtZSAmJiBuYW1lICE9ICIiICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIG9iamVjdHMgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lKG5hbWUpOwogICAgICB9CiAgICAgIHJldHVybiBvYmplY3RzOwogICAgfSwKICAgIC8qKgogICAgICogRm9jdXMgb24gbmFtZWQgcmVnaW9uCiAgICAgKi8KICAgIHZpZXdSZWdpb246IGZ1bmN0aW9uIHZpZXdSZWdpb24obmFtZXMpIHsKICAgICAgdmFyIHJvb3RSZWdpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Um9vdFJlZ2lvbigpOwogICAgICB2YXIgZ3JvdXBzID0gQXJyYXkuaXNBcnJheShuYW1lcykgPyBuYW1lcyA6IFtuYW1lc107CiAgICAgIHZhciBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgIHZhciBib3ggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Qm91bmRpbmdCb3hPZlppbmNPYmplY3RzKG9iamVjdHMpOwogICAgICBpZiAoYm94KSB7CiAgICAgICAgaWYgKHRoaXMuJG1vZHVsZS5pc1N5bmNDb250cm9sKCkpIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRTeW5jQ29udHJvbFpvb21Ub0JveChib3gpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgZGlzdCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEuZmFyIC0gdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5uZWFyOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGxXaXRoQm91bmRpbmdCb3goYm94KTsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEuZmFyID0gdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5uZWFyICsgZGlzdDsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgc2V0Rm9jdXNlZFJlZ2lvbjogZnVuY3Rpb24gc2V0Rm9jdXNlZFJlZ2lvbihuYW1lKSB7CiAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgewogICAgICAgICAgdGhpcy52aWV3UmVnaW9uKG5hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgICAgcmVnaW9uOiBuYW1lCiAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgdXBkYXRlVmlld1VSTDogZnVuY3Rpb24gdXBkYXRlVmlld1VSTCh2aWV3VVJMKSB7CiAgICAgIGlmICh2aWV3VVJMKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgewogICAgICAgICAgdmFyIHVybCA9IG5ldyBVUkwodmlld1VSTCwgdGhpcy51cmwpOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmxvYWRWaWV3VVJMKHVybCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgICB2aWV3VVJMOiB2aWV3VVJMCiAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZ2V0UmVuZGVyZXJJbmZvOiBmdW5jdGlvbiBnZXRSZW5kZXJlckluZm8oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuZ2V0VGhyZWVKU1JlbmRlcmVyKCkuaW5mbzsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCB0byByb3RhdGUgdGhlIHNjZW5lLgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGZyZWVTcGluOiBmdW5jdGlvbiBmcmVlU3BpbigpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciBjYW1lcmFjb250cm9sID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTsKICAgICAgICBjYW1lcmFjb250cm9sLmVuYWJsZUF1dG9UdW1ibGUoKTsKICAgICAgICBjYW1lcmFjb250cm9sLmF1dG9UdW1ibGUoWzEuMCwgMC4wXSwgTWF0aC5QSSwgdHJ1ZSk7CiAgICAgICAgc2V0VGltZW91dCh0aGlzLnN0b3BGcmVlU3BpbiwgNDAwMCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gYSByZWdpb24gaXMgc2VsZWN0ZWQvaGlnaGxpZ2h0ZWQuCiAgICAgKiBJdCB3aWxsIGFsc28gdXBkYXRlIG90aGVyIGNvbnRyb2xzLgogICAgICoKICAgICAqLwogICAgZXZlbnROb3RpZmllckNhbGxiYWNrOiBmdW5jdGlvbiBldmVudE5vdGlmaWVyQ2FsbGJhY2soZXZlbnQpIHsKICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgIHZhciB6aW5jT2JqZWN0cyA9IFtdOwogICAgICB2YXIgcmVnaW9uID0gdW5kZWZpbmVkOwogICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDEgfHwgZXZlbnQuZXZlbnRUeXBlID09IDIpIHsKICAgICAgICBldmVudC5pZGVudGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChpZGVudGlmaWVyKSB7CiAgICAgICAgICBpZiAoaWRlbnRpZmllcikgewogICAgICAgICAgICB2YXIgaWQgPSBpZGVudGlmaWVyLmRhdGEuaWQgPyBpZGVudGlmaWVyLmRhdGEuaWQgOiBpZGVudGlmaWVyLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIG5hbWVzLnB1c2goaWQpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHppbmNPYmplY3RzID0gZXZlbnQuemluY09iamVjdHM7CiAgICAgIH0KICAgICAgLyoKICAgICAgICogRXZlbnQgVHlwZSAxOiBTZWxlY3RlZAogICAgICAgKiBFdmVudCBUeXBlIDI6IEhpZ2hsaWdodGVkCiAgICAgICAqIEV2ZW50IFR5cGUgMTogTW92ZQogICAgICAgKi8KICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAxKSB7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB7CiAgICAgICAgICBpZiAobmFtZXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAvL3RoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUFjdGl2ZUJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOwogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy51cGRhdGVBY3RpdmVVSSh6aW5jT2JqZWN0cyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUFjdGl2ZSh0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gVHJpZ2dlcnMgd2hlbiBhbiBvYmplY3QgaGFzIGJlZW4gc2VsZWN0ZWQKICAgICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1zZWxlY3RlZCIsIGV2ZW50LmlkZW50aWZpZXJzKTsKICAgICAgfSBlbHNlIGlmIChldmVudC5ldmVudFR5cGUgPT0gMikgewogICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPT09IDApIHsKICAgICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICAgIC8vIGNvbnN0IG9mZnNldHMgPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB7CiAgICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgLy90aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOwogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnVwZGF0ZUhvdmVyVUkoemluY09iamVjdHMpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUhvdmVyKHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiBldmVudC5pZGVudGlmaWVyc1swXSkgewogICAgICAgICAgICB2YXIgaWQgPSBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLmlkID8gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5pZCA6IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMpIHsKICAgICAgICAgICAgICB0aGlzLnREYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgIHRoaXMudERhdGEubGFiZWwgPSBpZDsKICAgICAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5yZWdpb24pIHRoaXMudERhdGEucmVnaW9uID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5yZWdpb247ZWxzZSB0aGlzLnREYXRhLnJlZ2lvbiA9ICJSb290IjsKICAgICAgICAgICAgICB0aGlzLnREYXRhLnggPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueDsKICAgICAgICAgICAgICB0aGlzLnREYXRhLnkgPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLy8gVHJpZ2dlcnMgd2hlbiBhbiBvYmplY3QgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQKICAgICAgICAgIHRoaXMuJGVtaXQoInNjYWZmb2xkLWhpZ2hsaWdodGVkIiwgZXZlbnQuaWRlbnRpZmllcnMpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChldmVudC5ldmVudFR5cGUgPT0gMykgewogICAgICAgIC8vTU9WRQogICAgICAgIGlmIChldmVudC5pZGVudGlmaWVycy5sZW5ndGggPiAwICYmIGV2ZW50LmlkZW50aWZpZXJzWzBdKSB7CiAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzKSB7CiAgICAgICAgICAgIHZhciBvZmZzZXRzID0gdGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnggLSBvZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy55IC0gb2Zmc2V0cy50b3A7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBjdXJyZW50IHNlbGVjdGVkIHJlZ2lvbi4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGdldENvb3JkaW5hdGVzT2ZTZWxlY3RlZDogZnVuY3Rpb24gZ2V0Q29vcmRpbmF0ZXNPZlNlbGVjdGVkKCkgewogICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMgJiYgdGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0T2JqZWN0c1NjcmVlblhZKHRoaXMuc2VsZWN0ZWRPYmplY3RzKTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKgogICAgICogUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB3aW5kb3cgY29vcmRpbmF0ZXMgb2YgdGhlCiAgICAgKiBjdXJyZW50IHNlbGVjdGVkIHJlZ2lvbiB3aGljaCB3aWxsIGJlIHVwZGF0ZWQgYWZ0ZXIgZWFjaCByZW5kZXIKICAgICAqIGxvb3AuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBnZXREeW5hbWljU2VsZWN0ZWRDb29yZGluYXRlczogZnVuY3Rpb24gZ2V0RHluYW1pY1NlbGVjdGVkQ29vcmRpbmF0ZXMoKSB7CiAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlczsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gdGltZSBpcyBjaGFuZ2VkIHRocm91Z2ggdGhlIFVJLgogICAgICovCiAgICB0aW1lQ2hhbmdlOiBmdW5jdGlvbiB0aW1lQ2hhbmdlKGV2ZW50KSB7CiAgICAgIHZhciBub3JtYWxpemVkVGltZSA9IGV2ZW50IC8gdGhpcy50aW1lTWF4ICogMTAwOwogICAgICBpZiAobm9ybWFsaXplZFRpbWUgIT0gdGhpcy5zY2VuZURhdGEuY3VycmVudFRpbWUpIHRoaXMuJG1vZHVsZS51cGRhdGVUaW1lKG5vcm1hbGl6ZWRUaW1lKTsKICAgIH0sCiAgICAvKioKICAgICAqIEEgY2FsbGJhY2sgdXNlZCBieSBjaGlsZHJlbiBjb21wb25lbnRzLiBTZXQgdGhlIHNlbGVjdGVkIHppbmMgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBaaW5jIG9iamVjdAogICAgICovCiAgICBvYmplY3RTZWxlY3RlZDogZnVuY3Rpb24gb2JqZWN0U2VsZWN0ZWQob2JqZWN0cywgcHJvcGFnYXRlKSB7CiAgICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gb2JqZWN0czsKICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPYmplY3RzICYmIHRoaXMuc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA+IDApIHRoaXMuJHJlZnMub3BhY2l0eUNvbnRyb2wuc2V0T2JqZWN0KHRoaXMuc2VsZWN0ZWRPYmplY3RzWzBdKTsKICAgICAgdGhpcy4kbW9kdWxlLnNldFNlbGVjdGVkQnlaaW5jT2JqZWN0cyhvYmplY3RzLCB1bmRlZmluZWQsIHByb3BhZ2F0ZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBBIGNhbGxiYWNrIHVzZWQgYnkgY2hpbGRyZW4gY29tcG9uZW50cy4gU2V0IHRoZSBoaWdobGlnaHRlZCB6aW5jIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgWmluYyBvYmplY3QKICAgICAqLwogICAgb2JqZWN0SG92ZXJlZDogZnVuY3Rpb24gb2JqZWN0SG92ZXJlZChvYmplY3RzLCBwcm9wYWdhdGUpIHsKICAgICAgdGhpcy5ob3ZlcmVkT2JqZWN0cyA9IG9iamVjdHM7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRIaWdobGlnaHRlZEJ5WmluY09iamVjdHMob2JqZWN0cywgdW5kZWZpbmVkLCBwcm9wYWdhdGUpOwogICAgfSwKICAgIC8qKgogICAgICogU2V0IHRoZSBzZWxlY3RlZCBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSB7fSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwCiAgICAgKi8KICAgIGNoYW5nZUFjdGl2ZUJ5TmFtZTogZnVuY3Rpb24gY2hhbmdlQWN0aXZlQnlOYW1lKG5hbWVzLCByZWdpb24sIHByb3BhZ2F0ZSkgewogICAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkobmFtZXMpOwogICAgICBpZiAobmFtZXMgPT09IHVuZGVmaW5lZCB8fCBpc0FycmF5ICYmIG5hbWVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUFjdGl2ZShwcm9wYWdhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBhcnJheSA9IG5hbWVzOwogICAgICAgIGlmICghaXNBcnJheSkgYXJyYXkgPSBbYXJyYXldOwogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUFjdGl2ZUJ5TmFtZXMoYXJyYXksIHJlZ2lvbiwgcHJvcGFnYXRlKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogU2V0IHRoZSBoaWdobGlnaHRlZCBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSB7bmFtZX0gbmFtZSBOYW1lIG9mIHRoZSBncm91cAogICAgICovCiAgICBjaGFuZ2VIaWdobGlnaHRlZEJ5TmFtZTogZnVuY3Rpb24gY2hhbmdlSGlnaGxpZ2h0ZWRCeU5hbWUobmFtZXMsIHJlZ2lvbiwgcHJvcGFnYXRlKSB7CiAgICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShuYW1lcyk7CiAgICAgIGlmIChuYW1lcyA9PT0gdW5kZWZpbmVkIHx8IGlzQXJyYXkgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlSG92ZXIocHJvcGFnYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgYXJyYXkgPSBuYW1lczsKICAgICAgICBpZiAoIWlzQXJyYXkpIGFycmF5ID0gW2FycmF5XTsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMoYXJyYXksIHJlZ2lvbiwgcHJvcGFnYXRlKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogU3RhcnQgdGhlIGFuaW1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0CiAgICAgKi8KICAgIHBsYXk6IGZ1bmN0aW9uIHBsYXkoZmxhZykgewogICAgICB0aGlzLiRtb2R1bGUucGxheUFuaW1hdGlvbihmbGFnKTsKICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmbGFnOwogICAgICAvL0hpZGUgdG9vbHRpcCBhcyBsb2NhdGlvbiBtYXkKICAgICAgLy90aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICB9LAoKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIG9uL29mZiBvdmVybGF5IGhlbHAuCiAgICAgKi8KICAgIHNldEhlbHBNb2RlOiBmdW5jdGlvbiBzZXRIZWxwTW9kZShoZWxwTW9kZSkgewogICAgICBpZiAoaGVscE1vZGUpIHsKICAgICAgICB0aGlzLmluSGVscCA9IHRydWU7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpdGVtLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmluSGVscCA9IGZhbHNlOwogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaXRlbS52YWx1ZSA9IGZhbHNlOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB1c2VkIGJ5IHNob3dSZWdpb25Ub29sdGlwIGluIHRoZSBjYXNlIHdoZW4gdGhlIHRvb2x0aXAKICAgICAqIGlzIG91dCBvZiB2aWV3LgogICAgICovCiAgICBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0c0NhbGxiYWNrOiBmdW5jdGlvbiBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0c0NhbGxiYWNrKG5hbWUsIG9iamVjdHMsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgdmFyIGluc3RhbmNlID0gdGhpczsKICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICBpbnN0YW5jZS4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbihpbnN0YW5jZS4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayk7CiAgICAgICAgaW5zdGFuY2UuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2sgPSB1bmRlZmluZWQ7CiAgICAgICAgaW5zdGFuY2UuZGlzcGxheVRvb2x0aXBPZk9iamVjdHMobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcyk7CiAgICAgIH07CiAgICB9LAogICAgbGl2ZVVwZGF0ZVRvb2x0aXBQb3NpdGlvbjogZnVuY3Rpb24gbGl2ZVVwZGF0ZVRvb2x0aXBQb3NpdGlvbigpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zZWxlY3RlZENlbnRlcikgewogICAgICAgIHRoaXMudERhdGEueCA9IHRoaXMuJG1vZHVsZS5zZWxlY3RlZFNjcmVlbkNvb3JkaW5hdGVzLng7CiAgICAgICAgdGhpcy50RGF0YS55ID0gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXMueTsKICAgICAgfQogICAgfSwKICAgIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzOiBmdW5jdGlvbiBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmIChvYmplY3RzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgY29vcmRzID0gb2JqZWN0c1swXS5nZXRDbG9zZXN0VmVydGV4RE9NRWxlbWVudENvb3Jkcyh0aGlzLiRtb2R1bGUuc2NlbmUpOwogICAgICAgIGlmIChjb29yZHMpIHsKICAgICAgICAgIC8vVGhlIGNvb3JkcyBpcyBub3QgaW4gdmlldywgdmlldyBhbGwgaWYgcmVzZXRWaWV3IGZsYWcgaXMgdHJ1ZQogICAgICAgICAgaWYgKCFjb29yZHMuaW5WaWV3KSB7CiAgICAgICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICAgICAgaWYgKHJlc2V0VmlldykgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsKCk7CiAgICAgICAgICAgICAgLy9Vc2UgdGhlIHBvc3QgcmVuZGVyIGNhbGxiYWNrIHRvIG1ha2Ugc3VyZSB0aGUgc2NlbmUgaGFzIGJlZW4gdXBkYXRlZAogICAgICAgICAgICAgIC8vYmVmb3JlIGdldHRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLgogICAgICAgICAgICAgIGlmICh0aGlzLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2spOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2sobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLnREYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICB0aGlzLnREYXRhLmxhYmVsID0gbmFtZTsKICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gY29vcmRzLnBvc2l0aW9uLng7CiAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGNvb3Jkcy5wb3NpdGlvbi55OwogICAgICAgICAgICB2YXIgcmVnaW9uUGF0aCA9IG9iamVjdHNbMF0uZ2V0UmVnaW9uKCkuZ2V0RnVsbFBhdGgoKTsKICAgICAgICAgICAgaWYgKHJlZ2lvblBhdGgpIHRoaXMudERhdGEucmVnaW9uID0gcmVnaW9uUGF0aDtlbHNlIHRoaXMudERhdGEucmVnaW9uID0gIlJvb3QiOwogICAgICAgICAgICBpZiAobGl2ZVVwZGF0ZXMpIHsKICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0dXBMaXZlQ29vcmRpbmF0ZXMob2JqZWN0cyk7CiAgICAgICAgICAgICAgaWYgKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMubGl2ZVVwZGF0ZVRvb2x0aXBQb3NpdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICAvKioKICAgICAqIERpc3BsYXkgdGhlIHRvb2x0aXAuIFdoZW4gcmVzZXRWaWV3IGlzIHNldCB0byB0cnVlLCBpdCB3aWxsCiAgICAgKiByZXNldCB2aWV3IGlmIHRoZSB0b29sdGlwIGlzIG5vdCBpbiB2aWV3LgogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uCiAgICAgKiBhdCBldmVyeSByZW5kZXJpbmcgbG9vcC4KICAgICAqLwogICAgc2hvd1JlZ2lvblRvb2x0aXA6IGZ1bmN0aW9uIHNob3dSZWdpb25Ub29sdGlwKG5hbWUsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgaWYgKG5hbWUgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIHJvb3RSZWdpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Um9vdFJlZ2lvbigpOwogICAgICAgIHZhciBncm91cHMgPSBbbmFtZV07CiAgICAgICAgdmFyIG9iamVjdHMgPSBmaW5kT2JqZWN0c1dpdGhOYW1lcyhyb290UmVnaW9uLCBncm91cHMsICIiLCB0cnVlKTsKICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgfQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICBoaWRlUmVnaW9uVG9vbHRpcDogZnVuY3Rpb24gaGlkZVJlZ2lvblRvb2x0aXAoKSB7CiAgICAgIGlmICh0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCkgewogICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpOwogICAgICAgIC8vVW5zZXQgdGhlIHRyYWNraW5nCiAgICAgICAgdGhpcy4kbW9kdWxlLnNldHVwTGl2ZUNvb3JkaW5hdGVzKHVuZGVmaW5lZCk7CiAgICAgIH0KICAgICAgdGhpcy50RGF0YS52aXNpYmxlID0gZmFsc2U7CiAgICAgIHRoaXMudERhdGEucmVnaW9uID0gIlJvb3QiOwogICAgfSwKICAgIC8qKgogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBtb3VzZSBjdXJzb3IgZW50ZXJzIHN1cHBvcnRlZCBlbGVtZW50cwogICAgICogd2l0aCBoZWxwIHRvb3RsdGlwcy4KICAgICAqLwogICAgc2hvd0hlbHBUZXh0OiBmdW5jdGlvbiBzaG93SGVscFRleHQoaGVscFRleHROdW1iZXIpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgaWYgKCF0aGlzLmluSGVscCkgewogICAgICAgIHRoaXMuaGVscFRleHRXYWl0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpcy5ob3ZlclZpc2liaWxpdGllc1toZWxwVGV4dE51bWJlcl0udmFsdWUgPSB0cnVlOwogICAgICAgIH0sIDUwMCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gbW91c2UgY3Vyc29yIGV4aXRzIHN1cHBvcnRlZCBlbGVtZW50Li4KICAgICAqLwogICAgaGlkZUhlbHBUZXh0OiBmdW5jdGlvbiBoaWRlSGVscFRleHQoaGVscFRleHROdW1iZXIpIHsKICAgICAgaWYgKCF0aGlzLmluSGVscCkgewogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXNbaGVscFRleHROdW1iZXJdLnZhbHVlID0gZmFsc2U7CiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVscFRleHRXYWl0KTsKICAgICAgfQogICAgfSwKICAgIHNlYXJjaDogZnVuY3Rpb24gc2VhcmNoKHRleHQsIGRpc3BsYXlMYWJlbCkgewogICAgICBpZiAodGhpcy4kX3NlYXJjaEluZGV4KSB7CiAgICAgICAgaWYgKHRleHQgPT09IHVuZGVmaW5lZCB8fCB0ZXh0ID09PSAiIiB8fCBBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKFtdLCB0cnVlKTsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHppbmNPYmplY3RSZXN1bHRzID0gW107CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZXh0KSkgewogICAgICAgICAgICAvL3ppbmNPYmplY3RSZXN1bHRzID0gdGhpcy4kX3NlYXJjaEluZGV4LnNlYXJjaCgiSGVhcnQiKTsKICAgICAgICAgICAgemluY09iamVjdFJlc3VsdHMgPSB0aGlzLiRfc2VhcmNoSW5kZXguc2VhcmNoVGVybXModGV4dCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB6aW5jT2JqZWN0UmVzdWx0cyA9IHRoaXMuJF9zZWFyY2hJbmRleC5zZWFyY2godGV4dCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoemluY09iamVjdFJlc3VsdHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKHppbmNPYmplY3RSZXN1bHRzLCB0cnVlKTsKICAgICAgICAgICAgaWYgKGRpc3BsYXlMYWJlbCkgewogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgemluY09iamVjdFJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmICh6aW5jT2JqZWN0UmVzdWx0c1tpXSAmJiB6aW5jT2JqZWN0UmVzdWx0c1tpXS5ncm91cE5hbWUpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UmVnaW9uVG9vbHRpcCh6aW5jT2JqZWN0UmVzdWx0c1tpXS5ncm91cE5hbWUsIHRydWUsIHRydWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMub2JqZWN0U2VsZWN0ZWQoW10sIHRydWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGVkIHRlcm1zCiAgICAgKi8KICAgIGZldGNoU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uIGZldGNoU3VnZ2VzdGlvbnModGVybSkgewogICAgICBpZiAodGhpcy4kX3NlYXJjaEluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiBbXTsKICAgICAgcmV0dXJuIHRoaXMuJF9zZWFyY2hJbmRleC5hdXRvX3N1Z2dlc3QodGVybSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsZWQgd2hlbiBtaW5pbWFwIHNldHRpbmdzIGhhcyBjaGFuZ2VkLiBQYXNzIHRoZQogICAgICogcGFyYW1ldGVycyB0byBaaW5jSlMgYW5kIG1hcmtlZCBpdCBmb3IgdXBkYXRlLgogICAgICovCiAgICB1cGRhdGVNaW5pbWFwU2Npc3NvcjogZnVuY3Rpb24gdXBkYXRlTWluaW1hcFNjaXNzb3IoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICBPYmplY3Qua2V5cyh0aGlzLm1pbmltYXBTZXR0aW5ncykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgX3RoaXMyLiRtb2R1bGUuc2NlbmUubWluaW1hcFNjaXNzb3Jba2V5XSA9IF90aGlzMi5taW5pbWFwU2V0dGluZ3Nba2V5XTsKICAgICAgfSk7CiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5taW5pbWFwU2Npc3Nvci51cGRhdGVSZXF1aXJlZCA9IHRydWU7CiAgICB9LAogICAgdXBkYXRlU2V0dGluZ3Nmcm9tU2NlbmU6IGZ1bmN0aW9uIHVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lKCkgewogICAgICB0aGlzLmN1cnJlbnRTcGVlZCA9IDE7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRQbGF5UmF0ZSh0aGlzLmRlZmF1bHRSYXRlKTsKICAgICAgdGhpcy5vcmdpbmFsRHVyYXRpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0TWV0YWRhdGFUYWcoIk9yaWdpbmFsRHVyYXRpb24iKTsKICAgICAgdGhpcy5hbmltYXRlRHVyYXRpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0TWV0YWRhdGFUYWcoIkR1cmF0aW9uIik7CiAgICAgIHZhciB0aW1lU3RhbXBzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJUaW1lU3RhbXBzIik7CiAgICAgIHRoaXMudGltZVN0YW1wcyA9IHt9OwogICAgICBmb3IgKHZhciBrZXkgaW4gdGltZVN0YW1wcykgewogICAgICAgIHRoaXMudGltZVN0YW1wc1t0aW1lU3RhbXBzW2tleV1dID0ga2V5OwogICAgICB9CiAgICAgIHRoaXMudGltZU1heCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXREdXJhdGlvbigpOwogICAgfSwKICAgIHNldFVSTEZpbmlzaENhbGxiYWNrOiBmdW5jdGlvbiBzZXRVUkxGaW5pc2hDYWxsYmFjayhvcHRpb25zKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChvcHRpb25zKSB7CiAgICAgICAgICBpZiAob3B0aW9ucy52aWV3cG9ydCkgewogICAgICAgICAgICBfdGhpczMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKS5zZXRDdXJyZW50Q2FtZXJhU2V0dGluZ3Mob3B0aW9ucy52aWV3cG9ydCk7CiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudmlld1VSTCAmJiBvcHRpb25zLnZpZXdVUkwgIT09ICIiKSB7CiAgICAgICAgICAgIHZhciB1cmwgPSBuZXcgVVJMKG9wdGlvbnMudmlld1VSTCwgX3RoaXMzLnVybCk7CiAgICAgICAgICAgIF90aGlzMy4kbW9kdWxlLnNjZW5lLmxvYWRWaWV3VVJMKHVybCk7CiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMucmVnaW9uICYmIG9wdGlvbnMucmVnaW9uICE9PSAiIikgewogICAgICAgICAgICBfdGhpczMudmlld1JlZ2lvbihvcHRpb25zLnJlZ2lvbik7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAob3B0aW9ucy52aXNpYmlsaXR5KSB7CiAgICAgICAgICAgIC8vIFNvbWUgVUlzIG1heSBub3QgYmUgcmVhZHkgYXQgdGhpcyB0aW1lLgogICAgICAgICAgICBfdGhpczMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICBfdGhpczMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKG9wdGlvbnMudmlzaWJpbGl0eSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBfdGhpczMudXBkYXRlU2V0dGluZ3Nmcm9tU2NlbmUoKTsKICAgICAgICBfdGhpczMuJG1vZHVsZS51cGRhdGVUaW1lKDAuMDEpOwogICAgICAgIF90aGlzMy4kbW9kdWxlLnVwZGF0ZVRpbWUoMCk7CiAgICAgICAgX3RoaXMzLiRtb2R1bGUudW5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKCk7CiAgICAgICAgX3RoaXMzLiRlbWl0KCJvbi1yZWFkeSIpOwogICAgICAgIF90aGlzMy5pc1JlYWR5ID0gdHJ1ZTsKICAgICAgfTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIGdldHRpbmcgdGhlIGN1cnJlbnQgc3RhdGVzIG9mIHRoZSBzY2VuZS4gVGhpcyBleHBvcnRlZCBzdGF0ZXMKICAgICAqIGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgaW1wb3J0U3RhdGVzIG1ldGhvZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGdldFN0YXRlOiBmdW5jdGlvbiBnZXRTdGF0ZSgpIHsKICAgICAgdmFyIHN0YXRlID0gewogICAgICAgIGZvcm1hdDogdGhpcy5maWxlRm9ybWF0LAogICAgICAgIHVybDogdGhpcy5fY3VycmVudFVSTCwKICAgICAgICB2aWV3cG9ydDogdW5kZWZpbmVkLAogICAgICAgIHZpc2liaWxpdHk6IHVuZGVmaW5lZAogICAgICB9OwogICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHN0YXRlLnZpc2liaWxpdHkgPSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5nZXRTdGF0ZSgpOwogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIHppbmNDYW1lcmFDb250cm9scyA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsKICAgICAgICBzdGF0ZS52aWV3cG9ydCA9IHppbmNDYW1lcmFDb250cm9scy5nZXRDdXJyZW50Vmlld3BvcnQoKTsKICAgICAgfQogICAgICByZXR1cm4gc3RhdGU7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciBpbXBvcnRpbmcgdGhlIHN0YXRlcyBvZiB0aGUgc2NlbmUuIFRoaXMgZXhwb3J0ZWQgc3RhdGVzCiAgICAgKiBjYW4gYmUgaW1wb3J0ZWQgdXNpbmcgdGhlIHJlYWQgc3RhdGVzIG1ldGhvZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZShzdGF0ZSkgewogICAgICBpZiAoc3RhdGUpIHsKICAgICAgICBpZiAoc3RhdGUudXJsICYmIHN0YXRlLnVybCAhPT0gdGhpcy5fY3VycmVudFVSTCkgewogICAgICAgICAgdGhpcy5zZXRVUkxBbmRTdGF0ZShzdGF0ZS51cmwsIHsKICAgICAgICAgICAgZmlsZUZvcm1hdDogc3RhdGUuZmlsZUZvcm1hdCwKICAgICAgICAgICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LAogICAgICAgICAgICB2aXNpYmlsaXR5OiBzdGF0ZS52aXNpYmlsaXR5CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0IHx8IHN0YXRlLnZpc2liaWxpdHkpIHsKICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICAgICAgICBpZiAoc3RhdGUudmlld3BvcnQpIHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKS5zZXRDdXJyZW50Q2FtZXJhU2V0dGluZ3Moc3RhdGUudmlld3BvcnQpOwogICAgICAgICAgICAgIGlmIChzdGF0ZS52aXNpYmlsaXR5KSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5zZXRTdGF0ZShzdGF0ZS52aXNpYmlsaXR5KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgICAgICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCwKICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlLnZpc2liaWxpdHkKICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBleHBvcnRHTFRGOiBmdW5jdGlvbiBleHBvcnRHTFRGKGJpbmFyeSkgewogICAgICByZXR1cm4gdGhpcy4kbW9kdWxlLnNjZW5lLmV4cG9ydEdMVEYoYmluYXJ5KTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIHJlYWRpbmcgaW4gbmV3IHNjYWZmb2xkIG1ldGFkYXRhIGFuZCBhIGN1c3RvbQogICAgICogdmlld3BvcnQuIFRoaXMgZnVuY3Rpb24gd2lsbCBpZ25vcmUgdGhlIHN0YXRlIHByb3AgYW5kCiAgICAgKiByZWFkIGluIHRoZSBuZXcgdXJsLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc2V0VVJMQW5kU3RhdGU6IGZ1bmN0aW9uIHNldFVSTEFuZFN0YXRlKG5ld1ZhbHVlLCBzdGF0ZSkgewogICAgICBpZiAobmV3VmFsdWUgIT0gdGhpcy5fY3VycmVudFVSTCkgewogICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5mb3JtYXQpIHRoaXMuZmlsZUZvcm1hdCA9IHN0YXRlLmZvcm1hdDsKICAgICAgICB2YXIgdmlld3BvcnQgPSBzdGF0ZSAmJiBzdGF0ZS52aWV3cG9ydCA/IHN0YXRlLnZpZXdwb3J0IDogdW5kZWZpbmVkOwogICAgICAgIHZhciB2aXNpYmlsaXR5ID0gc3RhdGUgJiYgc3RhdGUudmlzaWJpbGl0eSA/IHN0YXRlLnZpc2liaWxpdHkgOiB1bmRlZmluZWQ7CiAgICAgICAgdGhpcy5fY3VycmVudFVSTCA9IG5ld1ZhbHVlOwogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2xlYXIoKTsKICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICAgIHRoaXMuaXNSZWFkeSA9IGZhbHNlOwogICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgdmlld3BvcnQ6IHZpZXdwb3J0LAogICAgICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbiwKICAgICAgICAgIHZpZXdVUkw6IHRoaXMudmlld1VSTCwKICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHkKICAgICAgICB9KSk7CiAgICAgICAgaWYgKHRoaXMuZmlsZUZvcm1hdCA9PT0gImdsdGYiKSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUubG9hZEdMVEZGcm9tVVJMKG5ld1ZhbHVlLCAic2NlbmUiLCB0cnVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kbW9kdWxlLmxvYWRPcmdhbnNGcm9tVVJMKG5ld1ZhbHVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgInNjZW5lIiwgdW5kZWZpbmVkLCB0cnVlKTsKICAgICAgICB9CiAgICAgICAgdGhpcy4kX3NlYXJjaEluZGV4LnJlbW92ZUFsbCgpOwogICAgICAgIHRoaXMuJF90ZW1wSWQgPSAxOwogICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1hcmtlcnMgPSB0aGlzLmRpc3BsYXlNYXJrZXJzOwogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5mb3JjZVBpY2thYmxlT2JqZWN0c1VwZGF0ZSA9IHRydWU7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNaW5pbWFwID0gdGhpcy5kaXNwbGF5TWluaW1hcDsKICAgICAgICB0aGlzLnVwZGF0ZU1pbmltYXBTY2lzc29yKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIHJlYWRpbmcgaW4gbmV3IHNjYWZmb2xkIG1ldGFkYXRhLiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlCiAgICAgKiB0aGUgc3RhdGUgcHJvcCBhbmQgcmVhZCBpbiB0aGUgbmV3IHVybC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHNldFVSTDogZnVuY3Rpb24gc2V0VVJMKG5ld1ZhbHVlKSB7CiAgICAgIHRoaXMuc2V0VVJMQW5kU3RhdGUobmV3VmFsdWUsIHVuZGVmaW5lZCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayB3aGVuIGRyYXdlciBpcyB0b2dnbGVkLgogICAgICovCiAgICBkcmF3ZXJUb2dnbGVkOiBmdW5jdGlvbiBkcmF3ZXJUb2dnbGVkKGZsYWcpIHsKICAgICAgdGhpcy5kcmF3ZXJPcGVuID0gZmxhZzsKICAgICAgdGhpcy5hZGp1c3RMYXlvdXQoKTsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHVzaW5nIFJlc2l6ZU9ic2VydmVyLgogICAgICovCiAgICBhZGp1c3RMYXlvdXQ6IGZ1bmN0aW9uIGFkanVzdExheW91dCgpIHsKICAgICAgdmFyIHdpZHRoID0gdGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lci5jbGllbnRXaWR0aDsKICAgICAgdGhpcy5taW5pbWlzZWRTbGlkZXIgPSB3aWR0aCA8IDgxMjsKICAgICAgaWYgKHRoaXMubWluaW1pc2VkU2xpZGVyKSB7CiAgICAgICAgdGhpcy5zbGlkZXJQb3NpdGlvbiA9IHRoaXMuZHJhd2VyT3BlbiA/ICJyaWdodCIgOiAibGVmdCI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5zbGlkZXJQb3NpdGlvbiA9ICIiOwogICAgICB9CiAgICB9LAogICAgdG9nZ2xlUmVuZGVyaW5nOiBmdW5jdGlvbiB0b2dnbGVSZW5kZXJpbmcoZmxhZykgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgewogICAgICAgIGlmIChmbGFnKSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFuaW1hdGUoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5zdG9wQW5pbWF0ZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGZvcmNlUmVzaXplOiBmdW5jdGlvbiBmb3JjZVJlc2l6ZSgpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLm9uV2luZG93UmVzaXplKCk7CiAgICAgIH0KICAgIH0sCiAgICBzeW5jQ29udHJvbENhbGxiYWNrOiBmdW5jdGlvbiBzeW5jQ29udHJvbENhbGxiYWNrKCkgewogICAgICB2YXIgcGF5bG9hZCA9IHRoaXMuJG1vZHVsZS5ORENDYW1lcmFDb250cm9sLmdldFBhblpvb20oKTsKICAgICAgaWYgKHRoaXMudERhdGEudmlzaWJsZSkgewogICAgICAgIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXAodGhpcy50RGF0YS5sYWJlbCk7CiAgICAgIH0KICAgICAgdGhpcy4kZW1pdCgic2NhZmZvbGQtbmF2aWdhdGVkIiwgcGF5bG9hZCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBSb3RhdGUgbW9kZSAtICJub25lIiwgImhvcml6b250YWwiLCAidmVydGljYWwiLCAiZnJlZSIgYnV0CiAgICAgKiBpdCB3aWxsIGJlIGlnbm9yZWQgaWYgZmxhZyBpcyBzZXQgdG8gZmFsc2UuCiAgICAgKi8KICAgIHRvZ2dsZVN5bmNDb250cm9sOiBmdW5jdGlvbiB0b2dnbGVTeW5jQ29udHJvbChmbGFnLCByb3RhdGVNb2RlKSB7CiAgICAgIHRoaXMuJG1vZHVsZS50b2dnbGVTeW5jQ29udHJvbChmbGFnLCByb3RhdGVNb2RlKTsKICAgICAgdGhpcy4kbW9kdWxlLnNldFN5bmNDb250cm9sQ2FsbGJhY2sodGhpcy5zeW5jQ29udHJvbENhbGxiYWNrKTsKICAgIH0KICB9Cn07"},{"version":3,"names":["Vue","OpacityControls","ScaffoldTooltip","TreeControls","MapSvgIcon","MapSvgSpriteColor","findObjectsWithNames","getAllObjects","SearchIndex","lang","locale","use","_Button","_Col","_Loading","directive","_Option","_Popover","_Row","_Select","_Slider","_TabPane","_Tabs","OrgansViewer","require","EventNotifier","name","components","props","url","type","String","default","showColourPicker","Boolean","displayUI","displayAtStartUp","helpMode","displayWarning","warningMessage","displayLatestChanges","latestChangesMessage","displayMarkers","displayMinimap","format","minimapSettings","Object","_default","x_offset","y_offset","width","height","align","enableOpenMapUI","openMapOptions","Array","display","key","state","undefined","region","viewURL","render","data","sceneData","$module","isPlaying","isReady","isTransitioning","tooltipAppendToBody","hoverVisibilities","value","inHelp","loading","duration","drawerOpen","currentBackground","availableBackground","minimisedSlider","sliderPosition","timeMax","orginalDuration","animateDuration","playSpeed","label","currentSpeed","timeStamps","defaultCheckedKeys","tData","visible","x","y","fileFormat","watch","handler","immediate","newValue","setURL","setFocusedRegion","setState","deep","updateViewURL","val","setHelpMode","scene","forcePickableObjectsUpdate","sceneDataCurrentTime","$emit","currentTime","setDuration","toggleRendering","beforeCreate","selectedObjects","hoveredObjects","_currentURL","$_searchIndex","$_tempId","mounted","$refs","treeControls","setModule","eventNotifier","subscribe","eventNotifierCallback","addNotifier","addOrganPartAddedCallback","zincObjectAdded","initialiseRenderer","ro","ResizeObserver","adjustLayout","observe","scaffoldContainer","defaultRate","getPlayRate","beforeDestroy","disconnect","destroy","methods","zincObject","searchIndexId","addZincObject","backgroundChangeCallback","colour","zincRenderer","getThreeJSRenderer","setClearColor","captureScreenshotCallback","removePostRenderCallbackFunction","captureID","screenshot","domElement","toDataURL","hrefElement","document","createElement","body","append","captureFilename","download","href","click","remove","captureScreenshot","filename","addPostRenderCallbackFunction","formatTooltip","sec","toFixed","min","fitWindow","viewAll","zoomIn","changeZoomByScrollRateUnit","zoomOut","speedChanged","speed","setPlayRate","stopFreeSpin","cameracontrol","getZincCameraControls","stopAutoTumble","findObjectsWithGroupName","objects","viewRegion","names","rootRegion","getRootRegion","groups","isArray","box","getBoundingBoxOfZincObjects","isSyncControl","setSyncControlZoomToBox","dist","camera","far","near","viewAllWithBoundingBox","updateProjectionMatrix","setFinishDownloadCallback","setURLFinishCallback","URL","loadViewURL","getRendererInfo","info","freeSpin","enableAutoTumble","autoTumble","Math","PI","setTimeout","event","zincObjects","eventType","identifiers","forEach","identifier","id","group","push","length","updateActiveUI","hideRegionTooltip","removeActive","updateHoverUI","removeHover","coords","offsets","getBoundingClientRect","left","top","getCoordinatesOfSelected","getObjectsScreenXY","getDynamicSelectedCoordinates","selectedScreenCoordinates","timeChange","normalizedTime","updateTime","objectSelected","propagate","opacityControl","setObject","setSelectedByZincObjects","objectHovered","setHighlightedByZincObjects","changeActiveByName","array","changeActiveByNames","changeHighlightedByName","changeHoverByNames","play","flag","playAnimation","item","displayTooltipOfObjectsCallback","resetView","liveUpdates","instance","$_regionTooltipCallback","displayTooltipOfObjects","liveUpdateTooltipPosition","selectedCenter","getClosestVertexDOMElementCoords","inView","position","regionPath","getRegion","getFullPath","setupLiveCoordinates","$_liveCoordinatesUpdated","showRegionTooltip","showHelpText","helpTextNumber","_this","helpTextWait","hideHelpText","clearTimeout","search","text","displayLabel","zincObjectResults","searchTerms","i","groupName","fetchSuggestions","term","auto_suggest","updateMinimapScissor","_this2","keys","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","getDuration","options","_this3","viewport","setCurrentCameraSettings","visibility","$nextTick","unsetFinishDownloadCallback","getState","zincCameraControls","getCurrentViewport","setURLAndState","exportGLTF","binary","clear","loadGLTFFromURL","loadOrgansFromURL","removeAll","drawerToggled","clientWidth","animate","stopAnimate","forceResize","onWindowResize","syncControlCallback","payload","NDCCameraControl","getPanZoom","toggleSyncControl","rotateMode","setSyncControlCallback"],"sources":["node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue"],"sourcesContent":["\n\n\n\n\n\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuTA;AACA,OAAAA,GAAA;AACA,OAAAC,eAAA;AACA,OAAAC,eAAA;AACA,OAAAC,YAAA;AACA,SAAAC,UAAA,EAAAC,iBAAA;AACA,SAAAC,oBAAA,EAAAC,aAAA;AACA,SAAAC,WAAA;AAaA,OAAAC,IAAA;AACA,OAAAC,MAAA;AAEAA,MAAA,CAAAC,GAAA,CAAAF,IAAA;AACAT,GAAA,CAAAW,GAAA,CAAAC,OAAA;AACAZ,GAAA,CAAAW,GAAA,CAAAE,IAAA;AACAb,GAAA,CAAAW,GAAA,CAAAG,QAAA,CAAAC,SAAA;AACAf,GAAA,CAAAW,GAAA,CAAAK,OAAA;AACAhB,GAAA,CAAAW,GAAA,CAAAM,QAAA;AACAjB,GAAA,CAAAW,GAAA,CAAAO,IAAA;AACAlB,GAAA,CAAAW,GAAA,CAAAQ,OAAA;AACAnB,GAAA,CAAAW,GAAA,CAAAS,OAAA;AACApB,GAAA,CAAAW,GAAA,CAAAU,QAAA;AACArB,GAAA,CAAAW,GAAA,CAAAW,KAAA;AAEA,IAAAC,YAAA,GAAAC,OAAA,8BAAAD,YAAA;AACA,IAAAE,aAAA,GAAAD,OAAA,6BAAAC,aAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACAC,IAAA;EACAC,UAAA;IACAvB,UAAA,EAAAA,UAAA;IACAC,iBAAA,EAAAA,iBAAA;IACAJ,eAAA,EAAAA,eAAA;IACAC,eAAA,EAAAA,eAAA;IACAC,YAAA,EAAAA;EACA;EACAyB,KAAA;IACA;AACA;AACA;AACA;AACA;AACA;IACAC,GAAA;MACAC,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAC,gBAAA;MACAH,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAG,SAAA;MACAL,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACAI,gBAAA;MACAN,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAK,QAAA;MACAP,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAM,cAAA;MACAR,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;AACA;IACAO,cAAA;MACAT,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACAQ,oBAAA;MACAV,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACAS,oBAAA;MACAX,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAU,cAAA;MACAZ,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAW,cAAA;MACAb,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAY,MAAA;MACAd,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAa,eAAA;MACAf,IAAA,EAAAgB,MAAA;MACAd,OAAA,WAAAe,SAAA;QACA;UACAC,QAAA;UACAC,QAAA;UACAC,KAAA;UACAC,MAAA;UACAC,KAAA;QACA;MACA;IACA;IACA;AACA;AACA;AACA;IACAC,eAAA;MACAvB,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACAsB,cAAA;MACAxB,IAAA,EAAAyB,KAAA;MACAvB,OAAA,WAAAe,SAAA;QACA,QACA;UACAS,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,EACA;MACA;IACA;IACA;AACA;AACA;IACAC,KAAA;MACA5B,IAAA,EAAAgB,MAAA;MACAd,OAAA,EAAA2B;IACA;IACA;AACA;AACA;AACA;IACAC,MAAA;MACA9B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACA6B,OAAA;MACA/B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACA8B,MAAA;MACAhC,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;EACA;EACA+B,IAAA,WAAAA,KAAA;IACA;MACAC,SAAA,OAAAC,OAAA,CAAAD,SAAA;MACAE,SAAA;MACAC,OAAA;MACA;AA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"}]}