{"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:aW1wb3J0IF9UYWJzMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay90YWJzLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1RhYnMgZnJvbSAiZWxlbWVudC11aS9saWIvdGFicyI7CmltcG9ydCBfVGFiUGFuZTIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvdGFiLXBhbmUuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfVGFiUGFuZSBmcm9tICJlbGVtZW50LXVpL2xpYi90YWItcGFuZSI7CmltcG9ydCBfU2xpZGVyMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zbGlkZXIuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2xpZGVyIGZyb20gImVsZW1lbnQtdWkvbGliL3NsaWRlciI7CmltcG9ydCBfU2VsZWN0MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zZWxlY3QuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2VsZWN0IGZyb20gImVsZW1lbnQtdWkvbGliL3NlbGVjdCI7CmltcG9ydCBfUm93MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yb3cuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUm93IGZyb20gImVsZW1lbnQtdWkvbGliL3JvdyI7CmltcG9ydCBfUG9wb3ZlcjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcG9wb3Zlci5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Qb3BvdmVyIGZyb20gImVsZW1lbnQtdWkvbGliL3BvcG92ZXIiOwppbXBvcnQgX09wdGlvbjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvb3B0aW9uLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX09wdGlvbiBmcm9tICJlbGVtZW50LXVpL2xpYi9vcHRpb24iOwppbXBvcnQgX0xvYWRpbmcyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2xvYWRpbmcuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfTG9hZGluZyBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2FkaW5nIjsKaW1wb3J0IF9Db2wyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2NvbC5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Db2wgZnJvbSAiZWxlbWVudC11aS9saWIvY29sIjsKaW1wb3J0IF9CdXR0b24yIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2J1dHRvbi5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9CdXR0b24gZnJvbSAiZWxlbWVudC11aS9saWIvYnV0dG9uIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQsIG5vLWNvbnNvbGUgKi8KaW1wb3J0IFZ1ZSBmcm9tICJ2dWUiOwppbXBvcnQgT3BhY2l0eUNvbnRyb2xzIGZyb20gIi4vT3BhY2l0eUNvbnRyb2xzIjsKaW1wb3J0IFNjYWZmb2xkVG9vbHRpcCBmcm9tICIuL1NjYWZmb2xkVG9vbHRpcCI7CmltcG9ydCBUcmVlQ29udHJvbHMgZnJvbSAiLi9UcmVlQ29udHJvbHMiOwppbXBvcnQgeyBNYXBTdmdJY29uLCBNYXBTdmdTcHJpdGVDb2xvciB9IGZyb20gIkBhYmktc29mdHdhcmUvc3ZnLXNwcml0ZSI7CmltcG9ydCB7IGZpbmRPYmplY3RzV2l0aE5hbWVzLCBnZXRPYmplY3RzRnJvbUFubm90YXRpb25zIH0gZnJvbSAiLi4vc2NyaXB0cy91dGlsaXRpZXMuanMiOwppbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gIi4uL3NjcmlwdHMvc2VhcmNoLmpzIjsKaW1wb3J0IGxhbmcgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvZW4iOwppbXBvcnQgbG9jYWxlIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZSI7CmxvY2FsZS51c2UobGFuZyk7ClZ1ZS51c2UoX0J1dHRvbik7ClZ1ZS51c2UoX0NvbCk7ClZ1ZS51c2UoX0xvYWRpbmcuZGlyZWN0aXZlKTsKVnVlLnVzZShfT3B0aW9uKTsKVnVlLnVzZShfUG9wb3Zlcik7ClZ1ZS51c2UoX1Jvdyk7ClZ1ZS51c2UoX1NlbGVjdCk7ClZ1ZS51c2UoX1NsaWRlcik7ClZ1ZS51c2UoX1RhYlBhbmUpOwpWdWUudXNlKF9UYWJzKTsKdmFyIE9yZ2Fuc1ZpZXdlciA9IHJlcXVpcmUoIi4uL3NjcmlwdHMvb3JnYW5zUmVuZGVyZXIiKS5PcmdhbnNWaWV3ZXI7CnZhciBFdmVudE5vdGlmaWVyID0gcmVxdWlyZSgiLi4vc2NyaXB0cy9ldmVudE5vdGlmaWVyIikuRXZlbnROb3RpZmllcjsKCi8qKg0KICogQSB2dWUgY29tcG9uZW50IG9mIHRoZSBzY2FmZm9sZCB2aWV3ZXIuDQogKg0KICogQHJlcXVpcmVzIC4vT3BhY2l0eUNvbnRyb2xzLnZ1ZQ0KICogQHJlcXVpcmVzIC4vVHJlZUNvbnRyb2xzLnZ1ZQ0KICovCmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiU2NhZmZvbGRWdWVyIiwKICBjb21wb25lbnRzOiB7CiAgICBNYXBTdmdJY29uOiBNYXBTdmdJY29uLAogICAgTWFwU3ZnU3ByaXRlQ29sb3I6IE1hcFN2Z1Nwcml0ZUNvbG9yLAogICAgT3BhY2l0eUNvbnRyb2xzOiBPcGFjaXR5Q29udHJvbHMsCiAgICBTY2FmZm9sZFRvb2x0aXA6IFNjYWZmb2xkVG9vbHRpcCwKICAgIFRyZWVDb250cm9sczogVHJlZUNvbnRyb2xzCiAgfSwKICBwcm9wczogewogICAgLyoqDQogICAgICogVVJMIG9mIHRoZSB6aW5janMgbWV0YWRhdGEuIFRoaXMgdmFsdWUgd2lsbCBiZSBpZ25vcmVkIGlmIGEgdmFsaWQNCiAgICAgKiBzdGF0ZSBwcm9wIGlzIGFsc28gcHJvdmlkZWQuDQogICAgICogSWYgdGhlIHVybCBuZWVkcyB0byBiZSB1cGRhdGVkIHdpdGggc3RhdGUgcHJlc2VudCwgcGxlYXNlIHVzZQ0KICAgICAqIHRoZSBzZXRVUkwgbWV0aG9kLg0KICAgICAqLwogICAgdXJsOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICAvKioNCiAgICAgKiBTaG93IHRoZSBjb2xvdXIgY29udHJvbCBvZiBzZXQgdG8gdHJ1ZS4NCiAgICAgKi8KICAgIHNob3dDb2xvdXJQaWNrZXI6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioNCiAgICAgKiBGbGFnIHRvIHNob3cvaGlkZSB0aGUgVUkuDQogICAgICovCiAgICBkaXNwbGF5VUk6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8qKg0KICAgICAqIERpc3BsYXkgYWxsIGdyYXBoaWNzIGF0IHN0YXJ0Lg0KICAgICAqDQogICAgICogVGhpcyBzZXR0aW5nIG9ubHkgd29ya3Mgd2hlbiB0cmFkaXRpb25hbCBpcyBzZXQgdG8gZmFsc2UuDQogICAgICovCiAgICBkaXNwbGF5QXRTdGFydFVwOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioNCiAgICAgKiBVc2UgZm9yIHRvZ2dsaW5nIHRoZSBoZWxwIHRvb2x0aXBzLg0KICAgICAqLwogICAgaGVscE1vZGU6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioNCiAgICAgKiBVc2UgZm9yIHNob3cvZGlzcGxheSBiZXRhIHdhcm5pbmcgaWNvbi4NCiAgICAgKi8KICAgIGRpc3BsYXlXYXJuaW5nOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioNCiAgICAgKiBXYXJuaW5nIG1lc3NhZ2UgZm9yIHRoZSBob3ZlcmVkIG92ZXIgdGV4dA0KICAgICAqIG9uIHRoZSB3YXJuaW5nIGljb24uDQogICAgICovCiAgICB3YXJuaW5nTWVzc2FnZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJCZXRhIGZlYXR1cmUgLSB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQiCiAgICB9LAogICAgZGlzcGxheUxhdGVzdENoYW5nZXM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBsYXRlc3RDaGFuZ2VzTWVzc2FnZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJOZXcgZmVhdHVyZSAtIExvY2FsIHNlYXJjaCBpcyBub3cgYXZhaWxhYmxlIgogICAgfSwKICAgIC8qKg0KICAgICAqIFNob3cvaGlkZSBwaWNrYWJsZSBtYXJrZXJzIGZvciByZWdpb25zLg0KICAgICAqLwogICAgZGlzcGxheU1hcmtlcnM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBtYXJrZXJMYWJlbHM6IHsKICAgICAgdHlwZTogQXJyYXksCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIFNob3cvaGlkZSBtaW5pbWFwLg0KICAgICAqLwogICAgZGlzcGxheU1pbmltYXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioNCiAgICAgKiBGb3JtYXQgb2YgdGhlIGlucHV0IFVSTA0KICAgICAqLwogICAgZm9ybWF0OiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIm1ldGFkYXRhIgogICAgfSwKICAgIC8qKg0KICAgICAqIFNldHRpbmdzIGZvciBtaW5pbWFwIHBvc2l0aW9uLCBzaXplIGFuZCBhbGlnbm1lbnQuDQogICAgICovCiAgICBtaW5pbWFwU2V0dGluZ3M6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgeF9vZmZzZXQ6IDE2LAogICAgICAgICAgeV9vZmZzZXQ6IDE2LAogICAgICAgICAgd2lkdGg6IDEyOCwKICAgICAgICAgIGhlaWdodDogMTI4LAogICAgICAgICAgYWxpZ246ICJ0b3AtcmlnaHQiCiAgICAgICAgfTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIEZsYWcgdG8gZGV0ZXJtaW5lIHJhdGhlciBvcGVuIG1hcCBVSSBzaG91bGQgYmUNCiAgICAgKiBwcmVzZW50ZWQgb3Igbm90Lg0KICAgICAqLwogICAgZW5hYmxlT3Blbk1hcFVJOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgb3Blbk1hcE9wdGlvbnM6IHsKICAgICAgdHlwZTogQXJyYXksCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbewogICAgICAgICAgZGlzcGxheTogIk9wZW4gQUMgTWFwIiwKICAgICAgICAgIGtleTogIkFDIgogICAgICAgIH0sIHsKICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIEZDIE1hcCIsCiAgICAgICAgICBrZXk6ICJGQyIKICAgICAgICB9LCB7CiAgICAgICAgICBkaXNwbGF5OiAiT3BlbiAzRCBIdW1hbiBNYXAiLAogICAgICAgICAga2V5OiAiM0QiCiAgICAgICAgfV07CiAgICAgIH0KICAgIH0sCiAgICAvKioNCiAgICAgKiBTdGF0ZSBjb250YWluaW5nIHN0YXRlIG9mIHRoZSBzY2FmZm9sZC4NCiAgICAgKi8KICAgIHN0YXRlOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogdW5kZWZpbmVkCiAgICB9LAogICAgLyoqDQogICAgICogT3B0aW9uYWwgcHJvcCBmb3IgdGhlIG5hbWUgb2YgdGhlIHJlZ2lvbiB0byBmb2N1cyBvbiwNCiAgICAgKiB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHN0YXRlIG9yIHZpZXdVUkwgaXMgYWxzbyBwcm92aWRlZC4NCiAgICAgKi8KICAgIHJlZ2lvbjogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICIiCiAgICB9LAogICAgLyoqDQogICAgICogT3B0aW9uYWwgcHJvcCBmb3IgYW4gVVJMIG9mIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb2YgYSB2aWV3cG9ydC4NCiAgICAgKiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHN0YXRlIGlzIGFsc28gcHJvdmlkZWQuDQogICAgICogSXQgd2lsbCB1c2UgdGhlIHByb3ZpZGVkIFVSTCBhcyBiYXNlIGlmIGEgcmVsYXRpdmUgcGFydGggaXMgcHJvdmlkZWQuDQogICAgICovCiAgICB2aWV3VVJMOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICAvKioNCiAgICAgKiBTZXR0aW5ncyBmb3IgdHVybmluZyBvbi9vZmYgcmVuZGVyaW5nDQogICAgICovCiAgICByZW5kZXI6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHNjZW5lRGF0YTogdGhpcy4kbW9kdWxlLnNjZW5lRGF0YSwKICAgICAgaXNQbGF5aW5nOiBmYWxzZSwKICAgICAgaXNSZWFkeTogZmFsc2UsCiAgICAgIC8qKg0KICAgICAgICogVGhpcyBpcyBzZXQgd2hlbiBzY2VuZSBpcyB0cmFuc2l0aW9uaW5nLg0KICAgICAgICovCiAgICAgIGlzVHJhbnNpdGlvbmluZzogZmFsc2UsCiAgICAgIHRvb2x0aXBBcHBlbmRUb0JvZHk6IGZhbHNlLAogICAgICBob3ZlclZpc2liaWxpdGllczogW3sKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH1dLAogICAgICBpbkhlbHA6IGZhbHNlLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgZHVyYXRpb246IDMwMDAsCiAgICAgIGRyYXdlck9wZW46IHRydWUsCiAgICAgIGN1cnJlbnRCYWNrZ3JvdW5kOiAid2hpdGUiLAogICAgICBhdmFpbGFibGVCYWNrZ3JvdW5kOiBbIndoaXRlIiwgImxpZ2h0c2t5Ymx1ZSIsICJibGFjayJdLAogICAgICBtaW5pbWlzZWRTbGlkZXI6IGZhbHNlLAogICAgICBzbGlkZXJQb3NpdGlvbjogIiIsCiAgICAgIHRpbWVNYXg6IDEwMCwKICAgICAgb3JnaW5hbER1cmF0aW9uOiAiIiwKICAgICAgYW5pbWF0ZUR1cmF0aW9uOiAiNnNlY3MiLAogICAgICBwbGF5U3BlZWQ6IFt7CiAgICAgICAgdmFsdWU6IDAuMSwKICAgICAgICBsYWJlbDogIjAuMXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMC41LAogICAgICAgIGxhYmVsOiAiMC41eCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAxLAogICAgICAgIGxhYmVsOiAiMXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMiwKICAgICAgICBsYWJlbDogIjJ4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDUsCiAgICAgICAgbGFiZWw6ICI1eCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAxMCwKICAgICAgICBsYWJlbDogIjEweCIKICAgICAgfV0sCiAgICAgIGN1cnJlbnRTcGVlZDogMSwKICAgICAgdGltZVN0YW1wczoge30sCiAgICAgIGRlZmF1bHRDaGVja2VkS2V5czogW10sCiAgICAgIHREYXRhOiB7CiAgICAgICAgbGFiZWw6ICIiLAogICAgICAgIHJlZ2lvbjogIiIsCiAgICAgICAgdmlzaWJsZTogZmFsc2UsCiAgICAgICAgeDogMjAwLAogICAgICAgIHk6IDIwMAogICAgICB9LAogICAgICBmaWxlRm9ybWF0OiAibWV0YWRhdGEiLAogICAgICBwcmV2aW91c01hcmtlckxhYmVsczogW10KICAgIH07CiAgfSwKICB3YXRjaDogewogICAgZm9ybWF0OiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsdWUpIHsKICAgICAgICB0aGlzLmZpbGVGb3JtYXQgPSB2YWx1ZTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgdXJsOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIobmV3VmFsdWUpIHsKICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc3RhdGUudXJsID09PSB1bmRlZmluZWQpIHRoaXMuc2V0VVJMKG5ld1ZhbHVlKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgcmVnaW9uOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIocmVnaW9uKSB7CiAgICAgICAgaWYgKCEodGhpcy5zdGF0ZSB8fCB0aGlzLnZpZXdVUkwpKSB0aGlzLnNldEZvY3VzZWRSZWdpb24ocmVnaW9uKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgc3RhdGU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihzdGF0ZSkgewogICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUpOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUsCiAgICAgIGRlZXA6IHRydWUKICAgIH0sCiAgICB2aWV3VVJMOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmlld1VSTCkgewogICAgICAgIHRoaXMudXBkYXRlVmlld1VSTCh2aWV3VVJMKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgaGVscE1vZGU6IGZ1bmN0aW9uIGhlbHBNb2RlKHZhbCkgewogICAgICB0aGlzLnNldEhlbHBNb2RlKHZhbCk7CiAgICB9LAogICAgZGlzcGxheU1hcmtlcnM6IGZ1bmN0aW9uIGRpc3BsYXlNYXJrZXJzKHZhbCkgewogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1hcmtlcnMgPSB2YWw7CiAgICAgIC8vVXBkYXRlIHBpY2thYmxlIG9iamVjdHMKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmZvcmNlUGlja2FibGVPYmplY3RzVXBkYXRlID0gdHJ1ZTsKICAgIH0sCiAgICBkaXNwbGF5TWluaW1hcDogZnVuY3Rpb24gZGlzcGxheU1pbmltYXAodmFsKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWluaW1hcCA9IHZhbDsKICAgIH0sCiAgICAic2NlbmVEYXRhLmN1cnJlbnRUaW1lIjogZnVuY3Rpb24gc2NlbmVEYXRhQ3VycmVudFRpbWUoKSB7CiAgICAgIC8qKg0KICAgICAgICogVHJpZ2dlcnMgd2hlbiBzY2VuZSB0aW1lIGNoYW5nZXMuDQogICAgICAgKg0KICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWUgQ3VycmVudCBidWlsZC1pbiB0aW1lIG9mIHNjZW5lLg0KICAgICAgICogb2Ygc2VsZWN0ZWQgb2JqZWN0Lg0KICAgICAgICovCiAgICAgIHRoaXMuJGVtaXQoInRpbWVDaGFuZ2VkIiwgdGhpcy5zY2VuZURhdGEuY3VycmVudFRpbWUpOwogICAgfSwKICAgIGR1cmF0aW9uOiBmdW5jdGlvbiBkdXJhdGlvbigpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnNldER1cmF0aW9uKHRoaXMuZHVyYXRpb24pOwogICAgfSwKICAgIG1pbmltYXBTZXR0aW5nczogewogICAgICBkZWVwOiB0cnVlLAogICAgICBoYW5kbGVyOiAidXBkYXRlTWluaW1hcFNjaXNzb3IiCiAgICB9LAogICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIodmFsKSB7CiAgICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHZhbCk7CiAgICB9LAogICAgbWFya2VyTGFiZWxzOiBmdW5jdGlvbiBtYXJrZXJMYWJlbHMobGFiZWxzKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIGNvbnNvbGUubG9nKCJtYXJrZXIgbGFiZWxzIGNoYW5nZWQiLCBsYWJlbHMpOwogICAgICB0aGlzLnByZXZpb3VzTWFya2VyTGFiZWxzLmZvckVhY2goZnVuY3Rpb24gKHBtbCkgewogICAgICAgIF90aGlzLnNldE1hcmtlck1vZGVGb3JPYmplY3RzV2l0aE5hbWUocG1sLCAib2ZmIik7CiAgICAgIH0pOwogICAgICBsYWJlbHMuZm9yRWFjaChmdW5jdGlvbiAobCkgewogICAgICAgIF90aGlzLnNldE1hcmtlck1vZGVGb3JPYmplY3RzV2l0aE5hbWUobCwgIm9uIik7CiAgICAgIH0pOwogICAgICB0aGlzLnByZXZpb3VzTWFya2VyTGFiZWxzID0gbGFiZWxzOwogICAgfQogIH0sCiAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7CiAgICB0aGlzLiRtb2R1bGUgPSBuZXcgT3JnYW5zVmlld2VyKCk7CiAgICB0aGlzLnNlbGVjdGVkT2JqZWN0cyA9IFtdOwogICAgdGhpcy5ob3ZlcmVkT2JqZWN0cyA9IFtdOwogICAgdGhpcy5jdXJyZW50QmFja2dyb3VuZCA9ICJ3aGl0ZSI7CiAgICB0aGlzLl9jdXJyZW50VVJMID0gdW5kZWZpbmVkOwogICAgdGhpcy5hdmFpbGFibGVCYWNrZ3JvdW5kID0gWyJ3aGl0ZSIsICJibGFjayIsICJsaWdodHNreWJsdWUiXTsKICAgIHRoaXMuJF9zZWFyY2hJbmRleCA9IG5ldyBTZWFyY2hJbmRleCgpOwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldE1vZHVsZSh0aGlzLiRtb2R1bGUpOwogICAgdmFyIGV2ZW50Tm90aWZpZXIgPSBuZXcgRXZlbnROb3RpZmllcigpOwogICAgZXZlbnROb3RpZmllci5zdWJzY3JpYmUodGhpcywgdGhpcy5ldmVudE5vdGlmaWVyQ2FsbGJhY2spOwogICAgdGhpcy4kbW9kdWxlLmFkZE5vdGlmaWVyKGV2ZW50Tm90aWZpZXIpOwogICAgdGhpcy4kbW9kdWxlLmFkZE9yZ2FuUGFydEFkZGVkQ2FsbGJhY2sodGhpcy56aW5jT2JqZWN0QWRkZWQpOwogICAgdGhpcy4kbW9kdWxlLmluaXRpYWxpc2VSZW5kZXJlcih0aGlzLiRyZWZzLmRpc3BsYXkpOwogICAgdGhpcy50b2dnbGVSZW5kZXJpbmcodGhpcy5yZW5kZXIpOwogICAgdGhpcy5ybyA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLmFkanVzdExheW91dCkub2JzZXJ2ZSh0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyKTsKICAgIHRoaXMuZGVmYXVsdFJhdGUgPSB0aGlzLiRtb2R1bGUuZ2V0UGxheVJhdGUoKTsKICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICBpZiAodGhpcy5ybykgdGhpcy5yby5kaXNjb25uZWN0KCk7CiAgICB0aGlzLiRtb2R1bGUuZGVzdHJveSgpOwogICAgdGhpcy4kbW9kdWxlID0gdW5kZWZpbmVkOwogIH0sCiAgbWV0aG9kczogewogICAgYWRkWmluY09iamVjdDogZnVuY3Rpb24gYWRkWmluY09iamVjdCh6aW5jT2JqZWN0KSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuYWRkWmluY09iamVjdCh6aW5jT2JqZWN0KTsKICAgICAgICB0aGlzLnppbmNPYmplY3RBZGRlZCh6aW5jT2JqZWN0KTsKICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnppbmNPYmplY3RBZGRlZCh6aW5jT2JqZWN0KTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gYSBuZXcgemluYyBvYmplY3QgaXMgcmVhZCBpbnRvIHRoZSBzY2VuZS4NCiAgICAgKi8KICAgIHppbmNPYmplY3RBZGRlZDogZnVuY3Rpb24gemluY09iamVjdEFkZGVkKHppbmNPYmplY3QpIHsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QsIHppbmNPYmplY3QudXVpZCk7CiAgICAgIHRoaXMuJGVtaXQoInppbmMtb2JqZWN0LWFkZGVkIiwgemluY09iamVjdCk7CiAgICB9LAogICAgLyoqDQogICAgICogDQogICAgICovCiAgICBhZGRSZWdpb25zVG9TZWFyY2hJbmRleDogZnVuY3Rpb24gYWRkUmVnaW9uc1RvU2VhcmNoSW5kZXgoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICB2YXIgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7CiAgICAgIHZhciByZWdpb25zID0gcm9vdFJlZ2lvbi5nZXRDaGlsZFJlZ2lvbnModHJ1ZSk7CiAgICAgIHJlZ2lvbnMuZm9yRWFjaChmdW5jdGlvbiAocmVnaW9uKSB7CiAgICAgICAgX3RoaXMyLiRfc2VhcmNoSW5kZXguYWRkUmVnaW9uKHJlZ2lvbiwgcmVnaW9uLnV1aWQpOwogICAgICB9KTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIENoYW5nZSBiYWNrZ3NwZWVkcm91bmQgY29sb3VyIGJ1dHRvbg0KICAgICAqIGlzIHByZXNzZWQgYW4gY2F1c2VzIHRoZSBiYWNrZ3JvdUNvbG9ybmQgY29sb3VyIHRvIGJlIGNoYW5nZWQNCiAgICAgKiB0byBvbmUgb2YgdGhlIHRocmVlIHByZXNldCBjb2xvdXI6IHdoaXRlLCBibGFjayBhbmQNCiAgICAgKiBsaWdodHNreWJsdWUuDQogICAgICovCiAgICBiYWNrZ3JvdW5kQ2hhbmdlQ2FsbGJhY2s6IGZ1bmN0aW9uIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjayhjb2xvdXIpIHsKICAgICAgdGhpcy5jdXJyZW50QmFja2dyb3VuZCA9IGNvbG91cjsKICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5nZXRUaHJlZUpTUmVuZGVyZXIoKS5zZXRDbGVhckNvbG9yKHRoaXMuY3VycmVudEJhY2tncm91bmQsIDEpOwogICAgfSwKICAgIC8qKg0KICAgICAqIFRoaXMgaXMgY2FsbGVkIGJ5IGNhcHR1ZWVTY3JlZW5zaG90IGFuZCBhZnRlciB0aGUgbGFzdCByZW5kZXINCiAgICAgKiBsb29wLCBpdCBkb3dubG9hZCBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgc2NlbmUgd2l0aCBubyBVSS4NCiAgICAgKi8KICAgIGNhcHR1cmVTY3JlZW5zaG90Q2FsbGJhY2s6IGZ1bmN0aW9uIGNhcHR1cmVTY3JlZW5zaG90Q2FsbGJhY2soKSB7CiAgICAgIC8vUmVtb3ZlIHRoZSBjYWxsYmFjaywgb25seSBuZWVkcyB0byBoYXBwZW4gb25jZQogICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuY2FwdHVyZUlEKTsKICAgICAgdmFyIHNjcmVlbnNob3QgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLmRvbUVsZW1lbnQudG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKICAgICAgdmFyIGhyZWZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChocmVmRWxlbWVudCk7CiAgICAgIGlmICghdGhpcy5jYXB0dXJlRmlsZW5hbWUpIGhyZWZFbGVtZW50LmRvd25sb2FkID0gInNjcmVlbnNob3QucG5nIjtlbHNlIGhyZWZFbGVtZW50LmRvd25sb2FkID0gdGhpcy5jYXB0dXJlRmlsZW5hbWU7CiAgICAgIGhyZWZFbGVtZW50LmhyZWYgPSBzY3JlZW5zaG90OwogICAgICBocmVmRWxlbWVudC5jbGljaygpOwogICAgICBocmVmRWxlbWVudC5yZW1vdmUoKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiBmb3IgY2FwdHVyaW5nIGEgc2NyZWVuc2hvdCBvZiB0aGUgY3VycmVudCByZW5kZXJpbmcuDQogICAgICoNCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWUgZmlsZW5hbWUgZ2l2ZW4gdG8gdGhlIHNjcmVlbnNob3QuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovCiAgICBjYXB0dXJlU2NyZWVuc2hvdDogZnVuY3Rpb24gY2FwdHVyZVNjcmVlbnNob3QoZmlsZW5hbWUpIHsKICAgICAgdGhpcy5jYXB0dXJlRmlsZW5hbWUgPSBmaWxlbmFtZTsKICAgICAgdGhpcy5jYXB0dXJlSUQgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjayk7CiAgICB9LAogICAgLyoqDQogICAgICogRnVuY3Rpb24gdG8gY2xlYXIgY3VycmVudCBzY2VuZSwgdGhlIHRyZWUgY29udHJvbHMgYW5kIHRoZSBzZWFyY2ggaW5kZXguDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovCiAgICBjbGVhclNjZW5lOiBmdW5jdGlvbiBjbGVhclNjZW5lKCkgewogICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNsZWFyKCk7CiAgICAgIGlmICh0aGlzLiRfc2VhcmNoSW5kZXgpIHRoaXMuJF9zZWFyY2hJbmRleC5yZW1vdmVBbGwoKTsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgdGhpcy4kbW9kdWxlLnNjZW5lLmNsZWFyQWxsKCk7CiAgICB9LAogICAgZm9ybWF0VG9vbHRpcDogZnVuY3Rpb24gZm9ybWF0VG9vbHRpcCh2YWwpIHsKICAgICAgaWYgKHRoaXMudGltZU1heCA+PSAxMDAwKSB7CiAgICAgICAgaWYgKHZhbCkgewogICAgICAgICAgdmFyIHNlYyA9ICh2YWwgJSA2MDAwMCAvIDEwMDApLnRvRml4ZWQoMikgKyAicyI7CiAgICAgICAgICB2YXIgbWluID0gdmFsID4gNjAwMDAgPyAodmFsIC8gNjAwMDApLnRvRml4ZWQoMCkgKyAibSAiIDogIiI7CiAgICAgICAgICByZXR1cm4gbWluICsgc2VjOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdmFsID8gdmFsLnRvRml4ZWQoMikgKyAiIG1zIiA6ICIwIG1zIjsKICAgIH0sCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byByZXNldCB0aGUgdmlldyB0byBkZWZhdWx0Lg0KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovCiAgICBmaXRXaW5kb3c6IGZ1bmN0aW9uIGZpdFdpbmRvdygpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIGluLg0KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovCiAgICB6b29tSW46IGZ1bmN0aW9uIHpvb21JbigpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jaGFuZ2Vab29tQnlTY3JvbGxSYXRlVW5pdCgtMSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4NCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLwogICAgem9vbU91dDogZnVuY3Rpb24gem9vbU91dCgpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jaGFuZ2Vab29tQnlTY3JvbGxSYXRlVW5pdCgxKTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHRvIGNoYW5nZSB0aGUgY3VycmVudCBwbGF5IHNwZWVkLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLwogICAgc3BlZWRDaGFuZ2VkOiBmdW5jdGlvbiBzcGVlZENoYW5nZWQoc3BlZWQpIHsKICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSBzcGVlZDsKICAgICAgdGhpcy4kbW9kdWxlLnNldFBsYXlSYXRlKHRoaXMuZGVmYXVsdFJhdGUgKiB0aGlzLmN1cnJlbnRTcGVlZCk7CiAgICB9LAogICAgLyoqDQogICAgICogRnVuY3Rpb24gdXNlZCB0byBzdG9wIHRoZSBmcmVlIHNwaW4NCiAgICAgKg0KICAgICAqIEBwdWJsaWMNCiAgICAgKi8KICAgIHN0b3BGcmVlU3BpbjogZnVuY3Rpb24gc3RvcEZyZWVTcGluKCkgewogICAgICB2YXIgY2FtZXJhY29udHJvbCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsKICAgICAgY2FtZXJhY29udHJvbC5zdG9wQXV0b1R1bWJsZSgpOwogICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IGZhbHNlOwogICAgfSwKICAgIGZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZTogZnVuY3Rpb24gZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lKG5hbWUpIHsKICAgICAgdmFyIG9iamVjdHMgPSBbXTsKICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSAiIiAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICBvYmplY3RzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gb2JqZWN0czsKICAgIH0sCiAgICAvKioNCiAgICAgKiBGb2N1cyBvbiBuYW1lZCByZWdpb24NCiAgICAgKi8KICAgIHZpZXdSZWdpb246IGZ1bmN0aW9uIHZpZXdSZWdpb24obmFtZXMpIHsKICAgICAgdmFyIHJvb3RSZWdpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Um9vdFJlZ2lvbigpOwogICAgICB2YXIgZ3JvdXBzID0gQXJyYXkuaXNBcnJheShuYW1lcykgPyBuYW1lcyA6IFtuYW1lc107CiAgICAgIHZhciBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgIHZhciBib3ggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Qm91bmRpbmdCb3hPZlppbmNPYmplY3RzKG9iamVjdHMpOwogICAgICBpZiAoYm94KSB7CiAgICAgICAgaWYgKHRoaXMuJG1vZHVsZS5pc1N5bmNDb250cm9sKCkpIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRTeW5jQ29udHJvbFpvb21Ub0JveChib3gpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgZGlzdCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEuZmFyIC0gdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5uZWFyOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGxXaXRoQm91bmRpbmdCb3goYm94KTsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEuZmFyID0gdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5uZWFyICsgZGlzdDsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgc2V0Rm9jdXNlZFJlZ2lvbjogZnVuY3Rpb24gc2V0Rm9jdXNlZFJlZ2lvbihuYW1lKSB7CiAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgewogICAgICAgICAgdGhpcy52aWV3UmVnaW9uKG5hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgICAgcmVnaW9uOiBuYW1lCiAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgdXBkYXRlVmlld1VSTDogZnVuY3Rpb24gdXBkYXRlVmlld1VSTCh2aWV3VVJMKSB7CiAgICAgIGlmICh2aWV3VVJMKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgewogICAgICAgICAgdmFyIHVybCA9IG5ldyBVUkwodmlld1VSTCwgdGhpcy51cmwpOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmxvYWRWaWV3VVJMKHVybCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgICB2aWV3VVJMOiB2aWV3VVJMCiAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZ2V0UmVuZGVyZXJJbmZvOiBmdW5jdGlvbiBnZXRSZW5kZXJlckluZm8oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuZ2V0VGhyZWVKU1JlbmRlcmVyKCkuaW5mbzsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gcm90YXRlIHRoZSBzY2VuZS4NCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLwogICAgZnJlZVNwaW46IGZ1bmN0aW9uIGZyZWVTcGluKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIGNhbWVyYWNvbnRyb2wgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCk7CiAgICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSB0cnVlOwogICAgICAgIGNhbWVyYWNvbnRyb2wuZW5hYmxlQXV0b1R1bWJsZSgpOwogICAgICAgIGNhbWVyYWNvbnRyb2wuYXV0b1R1bWJsZShbMS4wLCAwLjBdLCBNYXRoLlBJLCB0cnVlKTsKICAgICAgICBzZXRUaW1lb3V0KHRoaXMuc3RvcEZyZWVTcGluLCA0MDAwKTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIENhbGxiYWNrIHdoZW4gYSByZWdpb24gaXMgc2VsZWN0ZWQvaGlnaGxpZ2h0ZWQuDQogICAgICogSXQgd2lsbCBhbHNvIHVwZGF0ZSBvdGhlciBjb250cm9scy4NCiAgICAgKg0KICAgICAqLwogICAgZXZlbnROb3RpZmllckNhbGxiYWNrOiBmdW5jdGlvbiBldmVudE5vdGlmaWVyQ2FsbGJhY2soZXZlbnQpIHsKICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgIHZhciB6aW5jT2JqZWN0cyA9IFtdOwogICAgICB2YXIgcmVnaW9uID0gdW5kZWZpbmVkOwogICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDEgfHwgZXZlbnQuZXZlbnRUeXBlID09IDIpIHsKICAgICAgICBldmVudC5pZGVudGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChpZGVudGlmaWVyKSB7CiAgICAgICAgICBpZiAoaWRlbnRpZmllcikgewogICAgICAgICAgICB2YXIgaWQgPSBpZGVudGlmaWVyLmRhdGEuaWQgPyBpZGVudGlmaWVyLmRhdGEuaWQgOiBpZGVudGlmaWVyLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIG5hbWVzLnB1c2goaWQpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHppbmNPYmplY3RzID0gZXZlbnQuemluY09iamVjdHM7CiAgICAgIH0KICAgICAgLyoNCiAgICAgICAqIEV2ZW50IFR5cGUgMTogU2VsZWN0ZWQNCiAgICAgICAqIEV2ZW50IFR5cGUgMjogSGlnaGxpZ2h0ZWQNCiAgICAgICAqIEV2ZW50IFR5cGUgMTogTW92ZQ0KICAgICAgICovCiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT0gMSkgewogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgewogICAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgLy90aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VBY3RpdmVCeU5hbWVzKG5hbWVzLCByZWdpb24sIGZhbHNlKTsKICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMudXBkYXRlQWN0aXZlVUkoemluY09iamVjdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVBY3RpdmUodHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIFRyaWdnZXJzIHdoZW4gYW4gb2JqZWN0IGhhcyBiZWVuIHNlbGVjdGVkCiAgICAgICAgdGhpcy4kZW1pdCgic2NhZmZvbGQtc2VsZWN0ZWQiLCBldmVudC5pZGVudGlmaWVycyk7CiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDIpIHsKICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgICAvLyBjb25zdCBvZmZzZXRzID0gdGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgewogICAgICAgICAgICBpZiAobmFtZXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIC8vdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2hhbmdlSG92ZXJCeU5hbWVzKG5hbWVzLCByZWdpb24sIGZhbHNlKTsKICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy51cGRhdGVIb3ZlclVJKHppbmNPYmplY3RzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVIb3Zlcih0cnVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzLmxlbmd0aCA+IDAgJiYgZXZlbnQuaWRlbnRpZmllcnNbMF0pIHsKICAgICAgICAgICAgdmFyIGlkID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5pZCA/IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuaWQgOiBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLmdyb3VwOwogICAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzKSB7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS52aXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICB0aGlzLnREYXRhLmxhYmVsID0gaWQ7CiAgICAgICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEucmVnaW9uKSB0aGlzLnREYXRhLnJlZ2lvbiA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEucmVnaW9uO2Vsc2UgdGhpcy50RGF0YS5yZWdpb24gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLng7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIC8vIFRyaWdnZXJzIHdoZW4gYW4gb2JqZWN0IGhhcyBiZWVuIGhpZ2hsaWdodGVkCiAgICAgICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1oaWdobGlnaHRlZCIsIGV2ZW50LmlkZW50aWZpZXJzKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDMpIHsKICAgICAgICAvL01PVkUKICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiBldmVudC5pZGVudGlmaWVyc1swXSkgewogICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3JkcykgewogICAgICAgICAgICB2YXIgb2Zmc2V0cyA9IHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgIHRoaXMudERhdGEueCA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy54IC0gb2Zmc2V0cy5sZWZ0OwogICAgICAgICAgICB0aGlzLnREYXRhLnkgPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueSAtIG9mZnNldHMudG9wOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIEdldCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcmVnaW9uLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLwogICAgZ2V0Q29vcmRpbmF0ZXNPZlNlbGVjdGVkOiBmdW5jdGlvbiBnZXRDb29yZGluYXRlc09mU2VsZWN0ZWQoKSB7CiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRPYmplY3RzU2NyZWVuWFkodGhpcy5zZWxlY3RlZE9iamVjdHMpOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAogICAgLyoqDQogICAgICogUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB3aW5kb3cgY29vcmRpbmF0ZXMgb2YgdGhlDQogICAgICogY3VycmVudCBzZWxlY3RlZCByZWdpb24gd2hpY2ggd2lsbCBiZSB1cGRhdGVkIGFmdGVyIGVhY2ggcmVuZGVyDQogICAgICogbG9vcC4NCiAgICAgKg0KICAgICAqIEBwdWJsaWMNCiAgICAgKi8KICAgIGdldER5bmFtaWNTZWxlY3RlZENvb3JkaW5hdGVzOiBmdW5jdGlvbiBnZXREeW5hbWljU2VsZWN0ZWRDb29yZGluYXRlcygpIHsKICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zZWxlY3RlZFNjcmVlbkNvb3JkaW5hdGVzOwogICAgfSwKICAgIC8qKg0KICAgICAqIENhbGxiYWNrIHdoZW4gdGltZSBpcyBjaGFuZ2VkIHRocm91Z2ggdGhlIFVJLg0KICAgICAqLwogICAgdGltZUNoYW5nZTogZnVuY3Rpb24gdGltZUNoYW5nZShldmVudCkgewogICAgICB2YXIgbm9ybWFsaXplZFRpbWUgPSBldmVudCAvIHRoaXMudGltZU1heCAqIDEwMDsKICAgICAgaWYgKG5vcm1hbGl6ZWRUaW1lICE9IHRoaXMuc2NlbmVEYXRhLmN1cnJlbnRUaW1lKSB0aGlzLiRtb2R1bGUudXBkYXRlVGltZShub3JtYWxpemVkVGltZSk7CiAgICB9LAogICAgLyoqDQogICAgICogQSBjYWxsYmFjayB1c2VkIGJ5IGNoaWxkcmVuIGNvbXBvbmVudHMuIFNldCB0aGUgc2VsZWN0ZWQgemluYyBvYmplY3QNCiAgICAgKg0KICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgWmluYyBvYmplY3QNCiAgICAgKi8KICAgIG9iamVjdFNlbGVjdGVkOiBmdW5jdGlvbiBvYmplY3RTZWxlY3RlZChvYmplY3RzLCBwcm9wYWdhdGUpIHsKICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdHMgPSBvYmplY3RzOwogICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMgJiYgdGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCkgdGhpcy4kcmVmcy5vcGFjaXR5Q29udHJvbC5zZXRPYmplY3QodGhpcy5zZWxlY3RlZE9iamVjdHNbMF0pOwogICAgICB0aGlzLiRtb2R1bGUuc2V0U2VsZWN0ZWRCeVppbmNPYmplY3RzKG9iamVjdHMsIHVuZGVmaW5lZCwgcHJvcGFnYXRlKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBBIGNhbGxiYWNrIHVzZWQgYnkgY2hpbGRyZW4gY29tcG9uZW50cy4gU2V0IHRoZSBoaWdobGlnaHRlZCB6aW5jIG9iamVjdA0KICAgICAqDQogICAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBaaW5jIG9iamVjdA0KICAgICAqLwogICAgb2JqZWN0SG92ZXJlZDogZnVuY3Rpb24gb2JqZWN0SG92ZXJlZChvYmplY3RzLCBwcm9wYWdhdGUpIHsKICAgICAgdGhpcy5ob3ZlcmVkT2JqZWN0cyA9IG9iamVjdHM7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRIaWdobGlnaHRlZEJ5WmluY09iamVjdHMob2JqZWN0cywgdW5kZWZpbmVkLCBwcm9wYWdhdGUpOwogICAgfSwKICAgIC8qKg0KICAgICAqIFNldCB0aGUgc2VsZWN0ZWQgYnkgbmFtZS4NCiAgICAgKg0KICAgICAqIEBwYXJhbSB7fSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwDQogICAgICovCiAgICBjaGFuZ2VBY3RpdmVCeU5hbWU6IGZ1bmN0aW9uIGNoYW5nZUFjdGl2ZUJ5TmFtZShuYW1lcywgcmVnaW9uLCBwcm9wYWdhdGUpIHsKICAgICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5hbWVzKTsKICAgICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQgfHwgaXNBcnJheSAmJiBuYW1lcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVBY3RpdmUocHJvcGFnYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgYXJyYXkgPSBuYW1lczsKICAgICAgICBpZiAoIWlzQXJyYXkpIGFycmF5ID0gW2FycmF5XTsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VBY3RpdmVCeU5hbWVzKGFycmF5LCByZWdpb24sIHByb3BhZ2F0ZSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioNCiAgICAgKiBTZXQgdGhlIGhpZ2hsaWdodGVkIGJ5IG5hbWUuDQogICAgICoNCiAgICAgKiBAcGFyYW0ge25hbWV9IG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXANCiAgICAgKi8KICAgIGNoYW5nZUhpZ2hsaWdodGVkQnlOYW1lOiBmdW5jdGlvbiBjaGFuZ2VIaWdobGlnaHRlZEJ5TmFtZShuYW1lcywgcmVnaW9uLCBwcm9wYWdhdGUpIHsKICAgICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5hbWVzKTsKICAgICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQgfHwgaXNBcnJheSAmJiBuYW1lcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVIb3Zlcihwcm9wYWdhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBhcnJheSA9IG5hbWVzOwogICAgICAgIGlmICghaXNBcnJheSkgYXJyYXkgPSBbYXJyYXldOwogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUhvdmVyQnlOYW1lcyhhcnJheSwgcmVnaW9uLCBwcm9wYWdhdGUpOwogICAgICB9CiAgICB9LAogICAgLyoqDQogICAgICogU3RhcnQgdGhlIGFuaW1hdGlvbi4NCiAgICAgKg0KICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgWmluYyBvYmplY3QNCiAgICAgKi8KICAgIHBsYXk6IGZ1bmN0aW9uIHBsYXkoZmxhZykgewogICAgICB0aGlzLiRtb2R1bGUucGxheUFuaW1hdGlvbihmbGFnKTsKICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmbGFnOwogICAgICAvL0hpZGUgdG9vbHRpcCBhcyBsb2NhdGlvbiBtYXkKICAgICAgLy90aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICB9LAoKICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBvbi9vZmYgb3ZlcmxheSBoZWxwLg0KICAgICAqLwogICAgc2V0SGVscE1vZGU6IGZ1bmN0aW9uIHNldEhlbHBNb2RlKGhlbHBNb2RlKSB7CiAgICAgIGlmIChoZWxwTW9kZSkgewogICAgICAgIHRoaXMuaW5IZWxwID0gdHJ1ZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaW5IZWxwID0gZmFsc2U7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpdGVtLnZhbHVlID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioNCiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB1c2VkIGJ5IHNob3dSZWdpb25Ub29sdGlwIGluIHRoZSBjYXNlIHdoZW4gdGhlIHRvb2x0aXANCiAgICAgKiBpcyBvdXQgb2Ygdmlldy4NCiAgICAgKi8KICAgIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2s6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2sobmFtZSwgb2JqZWN0cywgcmVnaW9uUGF0aCwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzOwogICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgIGluc3RhbmNlLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKGluc3RhbmNlLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrKTsKICAgICAgICBpbnN0YW5jZS4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayA9IHVuZGVmaW5lZDsKICAgICAgICBpbnN0YW5jZS5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgfTsKICAgIH0sCiAgICBsaXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbiBsaXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNlbGVjdGVkQ2VudGVyKSB7CiAgICAgICAgdGhpcy50RGF0YS54ID0gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXMueDsKICAgICAgICB0aGlzLnREYXRhLnkgPSB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlcy55OwogICAgICB9CiAgICB9LAogICAgZGlzcGxheVRvb2x0aXBPZk9iamVjdHM6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKG5hbWUsIG9iamVjdHMsIHJlZ2lvblBhdGgsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgaWYgKG9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBjb29yZHMgPSBvYmplY3RzWzBdLmdldENsb3Nlc3RWZXJ0ZXhET01FbGVtZW50Q29vcmRzKHRoaXMuJG1vZHVsZS5zY2VuZSk7CiAgICAgICAgaWYgKGNvb3JkcykgewogICAgICAgICAgLy9UaGUgY29vcmRzIGlzIG5vdCBpbiB2aWV3LCB2aWV3IGFsbCBpZiByZXNldFZpZXcgZmxhZyBpcyB0cnVlCiAgICAgICAgICBpZiAoIWNvb3Jkcy5pblZpZXcpIHsKICAgICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgICAgICBpZiAocmVzZXRWaWV3KSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGwoKTsKICAgICAgICAgICAgICAvL1VzZSB0aGUgcG9zdCByZW5kZXIgY2FsbGJhY2sgdG8gbWFrZSBzdXJlIHRoZSBzY2VuZSBoYXMgYmVlbiB1cGRhdGVkCiAgICAgICAgICAgICAgLy9iZWZvcmUgZ2V0dGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAuCiAgICAgICAgICAgICAgaWYgKHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2sgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuZGlzcGxheVRvb2x0aXBPZk9iamVjdHNDYWxsYmFjayhuYW1lLCBvYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIHRoaXMudERhdGEubGFiZWwgPSBuYW1lOwogICAgICAgICAgICB0aGlzLnREYXRhLnggPSBjb29yZHMucG9zaXRpb24ueDsKICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gY29vcmRzLnBvc2l0aW9uLnk7CiAgICAgICAgICAgIHRoaXMudERhdGEucmVnaW9uID0gcmVnaW9uUGF0aDsKICAgICAgICAgICAgaWYgKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGxpdmVVcGRhdGVzKSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNldHVwTGl2ZUNvb3JkaW5hdGVzKG9iamVjdHMpOwogICAgICAgICAgICAgIHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLmxpdmVVcGRhdGVUb29sdGlwUG9zaXRpb24pOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqDQogICAgICogRGlzcGxheSB0aGUgdG9vbHRpcCB1c2VkIGZvciBkaXNwbGF5aW5nIHNlYXJjaCByZXN1bHQuDQogICAgICogV2hlbiByZXNldFZpZXcgaXMgc2V0IHRvIHRydWUsIGl0IHdpbGwNCiAgICAgKiByZXNldCB2aWV3IGlmIHRoZSB0b29sdGlwIGlzIG5vdCBpbiB2aWV3Lg0KICAgICAqIFNldHRpbmcgbGl2ZVVwZGF0ZXMgdG8gdHJ1ZSB3aWxsIHVwZGF0ZSB0aGUgdG9vbHRpcCBsb2NhdGlvbg0KICAgICAqIGF0IGV2ZXJ5IHJlbmRlcmluZyBsb29wLg0KICAgICAqLwogICAgc2hvd1JlZ2lvblRvb2x0aXBXaXRoT2JqZWN0czogZnVuY3Rpb24gc2hvd1JlZ2lvblRvb2x0aXBXaXRoT2JqZWN0cyhsYWJlbCwgemluY09iamVjdHMsIHJlZ2lvblBhdGgsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgaWYgKGxhYmVsICYmIHppbmNPYmplY3RzICYmIHppbmNPYmplY3RzLmxlbmd0aCA+IDAgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVRvb2x0aXBPZk9iamVjdHMobGFiZWwsIHppbmNPYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgfQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwLiBXaGVuIHJlc2V0VmlldyBpcyBzZXQgdG8gdHJ1ZSwgaXQgd2lsbA0KICAgICAqIHJlc2V0IHZpZXcgaWYgdGhlIHRvb2x0aXAgaXMgbm90IGluIHZpZXcuDQogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uDQogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuDQogICAgICovCiAgICBzaG93UmVnaW9uVG9vbHRpcDogZnVuY3Rpb24gc2hvd1JlZ2lvblRvb2x0aXAobmFtZSwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICBpZiAobmFtZSAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB2YXIgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7CiAgICAgICAgdmFyIGdyb3VwcyA9IFtuYW1lXTsKICAgICAgICB2YXIgb2JqZWN0cyA9IGZpbmRPYmplY3RzV2l0aE5hbWVzKHJvb3RSZWdpb24sIGdyb3VwcywgIiIsIHRydWUpOwogICAgICAgIHZhciByZWdpb25QYXRoID0gdW5kZWZpbmVkOwogICAgICAgIGlmIChvYmplY3RzICYmIG9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgICAgcmVnaW9uUGF0aCA9IG9iamVjdHNbMF0uZ2V0UmVnaW9uKCkuZ2V0RnVsbFBhdGgoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXBXaXRoT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgfQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwIHVzaW5nIHRoZSBsaXN0IG9mIGFubm90YXRpb25zLg0KICAgICAqIFdoZW4gcmVzZXRWaWV3IGlzIHNldCB0byB0cnVlLCBpdCB3aWxsDQogICAgICogcmVzZXQgdmlldyBpZiB0aGUgdG9vbHRpcCBpcyBub3QgaW4gdmlldy4NCiAgICAgKiBTZXR0aW5nIGxpdmVVcGRhdGVzIHRvIHRydWUgd2lsbCB1cGRhdGUgdGhlIHRvb2x0aXAgbG9jYXRpb24NCiAgICAgKiBhdCBldmVyeSByZW5kZXJpbmcgbG9vcC4NCiAgICAgKi8KICAgIHNob3dSZWdpb25Ub29sdGlwV2l0aEFubm90YXRpb25zOiBmdW5jdGlvbiBzaG93UmVnaW9uVG9vbHRpcFdpdGhBbm5vdGF0aW9ucyhhbm5vdGF0aW9ucywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIHJlc3VsdCA9IGdldE9iamVjdHNGcm9tQW5ub3RhdGlvbnModGhpcy4kbW9kdWxlLnNjZW5lLCBhbm5vdGF0aW9ucyk7CiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQub2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5zaG93UmVnaW9uVG9vbHRpcFdpdGhPYmplY3RzKHJlc3VsdC5sYWJlbCwgcmVzdWx0Lm9iamVjdHMsIHJlc3VsdC5yZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgaGlkZVJlZ2lvblRvb2x0aXA6IGZ1bmN0aW9uIGhpZGVSZWdpb25Ub29sdGlwKCkgewogICAgICBpZiAodGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKTsKICAgICAgICAvL1Vuc2V0IHRoZSB0cmFja2luZwogICAgICAgIHRoaXMuJG1vZHVsZS5zZXR1cExpdmVDb29yZGluYXRlcyh1bmRlZmluZWQpOwogICAgICB9CiAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IGZhbHNlOwogICAgICB0aGlzLnREYXRhLnJlZ2lvbiA9IHVuZGVmaW5lZDsKICAgIH0sCiAgICAvKioNCiAgICAgKiBTZXQgdGhlIG1hcmtlciBtb2RlcyBmb3Igb2JqZWN0cyB3aXRoIHRoZSBwcm92aWRlZCBuYW1lLCBtb2RlIGNhbg0KICAgICAqIGJlICJvbiIsICJvZmYiIG9yICJpbmhlcml0ZWQiLg0KICAgICAqLwogICAgc2V0TWFya2VyTW9kZUZvck9iamVjdHNXaXRoTmFtZTogZnVuY3Rpb24gc2V0TWFya2VyTW9kZUZvck9iamVjdHNXaXRoTmFtZShuYW1lLCBtb2RlKSB7CiAgICAgIGlmIChuYW1lICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsKICAgICAgICB2YXIgZ3JvdXBzID0gW25hbWVdOwogICAgICAgIHZhciBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgICAgb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChvYmplY3QpIHsKICAgICAgICAgIHJldHVybiBvYmplY3Quc2V0TWFya2VyTW9kZShtb2RlKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIFNldCB0aGUgbWFya2VyIG1vZGVzIGZvciBvYmplY3RzIHNwZWNpZmllZCBieSB0aGUgbGlzdCBvZiBhbm5vdGF0aW9ucw0KICAgICAqLwogICAgc2V0TWFya2VyTW9kZVdpdGhBbm5vdGF0aW9uczogZnVuY3Rpb24gc2V0TWFya2VyTW9kZVdpdGhBbm5vdGF0aW9ucyhhbm5vdGF0aW9ucywgbW9kZSkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIHJlc3VsdCA9IGdldE9iamVjdHNGcm9tQW5ub3RhdGlvbnModGhpcy4kbW9kdWxlLnNjZW5lLCBhbm5vdGF0aW9ucyk7CiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQub2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICByZXN1bHQub2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChvYmplY3QpIHsKICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5zZXRNYXJrZXJNb2RlKG1vZGUpOwogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqDQogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBtb3VzZSBjdXJzb3IgZW50ZXJzIHN1cHBvcnRlZCBlbGVtZW50cw0KICAgICAqIHdpdGggaGVscCB0b290bHRpcHMuDQogICAgICovCiAgICBzaG93SGVscFRleHQ6IGZ1bmN0aW9uIHNob3dIZWxwVGV4dChoZWxwVGV4dE51bWJlcikgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgaWYgKCF0aGlzLmluSGVscCkgewogICAgICAgIHRoaXMuaGVscFRleHRXYWl0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczMuaG92ZXJWaXNpYmlsaXRpZXNbaGVscFRleHROdW1iZXJdLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9LCA1MDApOwogICAgICB9CiAgICB9LAogICAgLyoqDQogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBtb3VzZSBjdXJzb3IgZXhpdHMgc3VwcG9ydGVkIGVsZW1lbnQuLg0KICAgICAqLwogICAgaGlkZUhlbHBUZXh0OiBmdW5jdGlvbiBoaWRlSGVscFRleHQoaGVscFRleHROdW1iZXIpIHsKICAgICAgaWYgKCF0aGlzLmluSGVscCkgewogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXNbaGVscFRleHROdW1iZXJdLnZhbHVlID0gZmFsc2U7CiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVscFRleHRXYWl0KTsKICAgICAgfQogICAgfSwKICAgIHNlYXJjaDogZnVuY3Rpb24gc2VhcmNoKHRleHQsIGRpc3BsYXlMYWJlbCkgewogICAgICBpZiAodGhpcy4kX3NlYXJjaEluZGV4KSB7CiAgICAgICAgaWYgKHRleHQgPT09IHVuZGVmaW5lZCB8fCB0ZXh0ID09PSAiIiB8fCBBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKFtdLCB0cnVlKTsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuJF9zZWFyY2hJbmRleC5zZWFyY2hBbmRQcm9jZXNzUmVzdWx0KHRleHQpOwogICAgICAgICAgdmFyIHppbmNPYmplY3RzID0gcmVzdWx0LnppbmNPYmplY3RzOwogICAgICAgICAgaWYgKHppbmNPYmplY3RzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZCh6aW5jT2JqZWN0cywgdHJ1ZSk7CiAgICAgICAgICAgIGlmIChkaXNwbGF5TGFiZWwpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHppbmNPYmplY3RzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoemluY09iamVjdHNbaV0gJiYgemluY09iamVjdHNbaV0uZ3JvdXBOYW1lKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXBXaXRoT2JqZWN0cyhyZXN1bHQubGFiZWwsIHppbmNPYmplY3RzLCByZXN1bHQucmVnaW9uUGF0aCwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZChbXSwgdHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGVkIHRlcm1zDQogICAgICovCiAgICBmZXRjaFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiBmZXRjaFN1Z2dlc3Rpb25zKHRlcm0pIHsKICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLiRfc2VhcmNoSW5kZXguYXV0b19zdWdnZXN0KHRlcm0pOwogICAgfSwKICAgIC8qKg0KICAgICAqIENhbGxlZCB3aGVuIG1pbmltYXAgc2V0dGluZ3MgaGFzIGNoYW5nZWQuIFBhc3MgdGhlDQogICAgICogcGFyYW1ldGVycyB0byBaaW5jSlMgYW5kIG1hcmtlZCBpdCBmb3IgdXBkYXRlLg0KICAgICAqLwogICAgdXBkYXRlTWluaW1hcFNjaXNzb3I6IGZ1bmN0aW9uIHVwZGF0ZU1pbmltYXBTY2lzc29yKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgT2JqZWN0LmtleXModGhpcy5taW5pbWFwU2V0dGluZ3MpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgICAgIF90aGlzNC4kbW9kdWxlLnNjZW5lLm1pbmltYXBTY2lzc29yW2tleV0gPSBfdGhpczQubWluaW1hcFNldHRpbmdzW2tleV07CiAgICAgIH0pOwogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUubWluaW1hcFNjaXNzb3IudXBkYXRlUmVxdWlyZWQgPSB0cnVlOwogICAgfSwKICAgIHVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lOiBmdW5jdGlvbiB1cGRhdGVTZXR0aW5nc2Zyb21TY2VuZSgpIHsKICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSAxOwogICAgICB0aGlzLiRtb2R1bGUuc2V0UGxheVJhdGUodGhpcy5kZWZhdWx0UmF0ZSk7CiAgICAgIHRoaXMub3JnaW5hbER1cmF0aW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJPcmlnaW5hbER1cmF0aW9uIik7CiAgICAgIHRoaXMuYW5pbWF0ZUR1cmF0aW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJEdXJhdGlvbiIpOwogICAgICB2YXIgdGltZVN0YW1wcyA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiVGltZVN0YW1wcyIpOwogICAgICB0aGlzLnRpbWVTdGFtcHMgPSB7fTsKICAgICAgZm9yICh2YXIga2V5IGluIHRpbWVTdGFtcHMpIHsKICAgICAgICB0aGlzLnRpbWVTdGFtcHNbdGltZVN0YW1wc1trZXldXSA9IGtleTsKICAgICAgfQogICAgICB0aGlzLnRpbWVNYXggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0RHVyYXRpb24oKTsKICAgIH0sCiAgICBzZXRVUkxGaW5pc2hDYWxsYmFjazogZnVuY3Rpb24gc2V0VVJMRmluaXNoQ2FsbGJhY2sob3B0aW9ucykgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAob3B0aW9ucykgewogICAgICAgICAgaWYgKG9wdGlvbnMudmlld3BvcnQpIHsKICAgICAgICAgICAgX3RoaXM1LiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCkuc2V0Q3VycmVudENhbWVyYVNldHRpbmdzKG9wdGlvbnMudmlld3BvcnQpOwogICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnZpZXdVUkwgJiYgb3B0aW9ucy52aWV3VVJMICE9PSAiIikgewogICAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTChvcHRpb25zLnZpZXdVUkwsIF90aGlzNS51cmwpOwogICAgICAgICAgICBfdGhpczUuJG1vZHVsZS5zY2VuZS5sb2FkVmlld1VSTCh1cmwpOwogICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnJlZ2lvbiAmJiBvcHRpb25zLnJlZ2lvbiAhPT0gIiIpIHsKICAgICAgICAgICAgX3RoaXM1LnZpZXdSZWdpb24ob3B0aW9ucy5yZWdpb24pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKG9wdGlvbnMudmlzaWJpbGl0eSkgewogICAgICAgICAgICAvLyBTb21lIFVJcyBtYXkgbm90IGJlIHJlYWR5IGF0IHRoaXMgdGltZS4KICAgICAgICAgICAgX3RoaXM1LiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgX3RoaXM1LiRyZWZzLnRyZWVDb250cm9scy5zZXRTdGF0ZShvcHRpb25zLnZpc2liaWxpdHkpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgX3RoaXM1LnVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lKCk7CiAgICAgICAgX3RoaXM1LiRtb2R1bGUudXBkYXRlVGltZSgwLjAxKTsKICAgICAgICBfdGhpczUuJG1vZHVsZS51cGRhdGVUaW1lKDApOwogICAgICAgIF90aGlzNS4kbW9kdWxlLnVuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjaygpOwogICAgICAgIF90aGlzNS5hZGRSZWdpb25zVG9TZWFyY2hJbmRleCgpOwogICAgICAgIF90aGlzNS4kZW1pdCgib24tcmVhZHkiKTsKICAgICAgICBfdGhpczUuaXNSZWFkeSA9IHRydWU7CiAgICAgIH07CiAgICB9LAogICAgLyoqDQogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgZ2V0dGluZyB0aGUgY3VycmVudCBzdGF0ZXMgb2YgdGhlIHNjZW5lLiBUaGlzIGV4cG9ydGVkIHN0YXRlcw0KICAgICAqIGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgaW1wb3J0U3RhdGVzIG1ldGhvZC4NCiAgICAgKg0KICAgICAqIEBwdWJsaWMNCiAgICAgKi8KICAgIGdldFN0YXRlOiBmdW5jdGlvbiBnZXRTdGF0ZSgpIHsKICAgICAgdmFyIHN0YXRlID0gewogICAgICAgIGZvcm1hdDogdGhpcy5maWxlRm9ybWF0LAogICAgICAgIHVybDogdGhpcy5fY3VycmVudFVSTCwKICAgICAgICB2aWV3cG9ydDogdW5kZWZpbmVkLAogICAgICAgIHZpc2liaWxpdHk6IHVuZGVmaW5lZAogICAgICB9OwogICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHN0YXRlLnZpc2liaWxpdHkgPSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5nZXRTdGF0ZSgpOwogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIHppbmNDYW1lcmFDb250cm9scyA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsKICAgICAgICBzdGF0ZS52aWV3cG9ydCA9IHppbmNDYW1lcmFDb250cm9scy5nZXRDdXJyZW50Vmlld3BvcnQoKTsKICAgICAgfQogICAgICByZXR1cm4gc3RhdGU7CiAgICB9LAogICAgLyoqDQogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgaW1wb3J0aW5nIHRoZSBzdGF0ZXMgb2YgdGhlIHNjZW5lLiBUaGlzIGV4cG9ydGVkIHN0YXRlcw0KICAgICAqIGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgcmVhZCBzdGF0ZXMgbWV0aG9kLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLwogICAgc2V0U3RhdGU6IGZ1bmN0aW9uIHNldFN0YXRlKHN0YXRlKSB7CiAgICAgIGlmIChzdGF0ZSkgewogICAgICAgIGlmIChzdGF0ZS51cmwgJiYgc3RhdGUudXJsICE9PSB0aGlzLl9jdXJyZW50VVJMKSB7CiAgICAgICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKHN0YXRlLnVybCwgewogICAgICAgICAgICBmaWxlRm9ybWF0OiBzdGF0ZS5maWxlRm9ybWF0LAogICAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsCiAgICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlLnZpc2liaWxpdHkKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhdGUudmlld3BvcnQgfHwgc3RhdGUudmlzaWJpbGl0eSkgewogICAgICAgICAgICBpZiAodGhpcy5pc1JlYWR5ICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCkgdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpLnNldEN1cnJlbnRDYW1lcmFTZXR0aW5ncyhzdGF0ZS52aWV3cG9ydCk7CiAgICAgICAgICAgICAgaWYgKHN0YXRlLnZpc2liaWxpdHkpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKHN0YXRlLnZpc2liaWxpdHkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgICAgICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LAogICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogc3RhdGUudmlzaWJpbGl0eQogICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGV4cG9ydEdMVEY6IGZ1bmN0aW9uIGV4cG9ydEdMVEYoYmluYXJ5KSB7CiAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2NlbmUuZXhwb3J0R0xURihiaW5hcnkpOwogICAgfSwKICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIHJlYWRpbmcgaW4gbmV3IHNjYWZmb2xkIG1ldGFkYXRhIGFuZCBhIGN1c3RvbQ0KICAgICAqIHZpZXdwb3J0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHRoZSBzdGF0ZSBwcm9wIGFuZA0KICAgICAqIHJlYWQgaW4gdGhlIG5ldyB1cmwuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovCiAgICBzZXRVUkxBbmRTdGF0ZTogZnVuY3Rpb24gc2V0VVJMQW5kU3RhdGUobmV3VmFsdWUsIHN0YXRlKSB7CiAgICAgIGlmIChuZXdWYWx1ZSAhPSB0aGlzLl9jdXJyZW50VVJMKSB7CiAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLmZvcm1hdCkgdGhpcy5maWxlRm9ybWF0ID0gc3RhdGUuZm9ybWF0OwogICAgICAgIHZhciB2aWV3cG9ydCA9IHN0YXRlICYmIHN0YXRlLnZpZXdwb3J0ID8gc3RhdGUudmlld3BvcnQgOiB1bmRlZmluZWQ7CiAgICAgICAgdmFyIHZpc2liaWxpdHkgPSBzdGF0ZSAmJiBzdGF0ZS52aXNpYmlsaXR5ID8gc3RhdGUudmlzaWJpbGl0eSA6IHVuZGVmaW5lZDsKICAgICAgICB0aGlzLl9jdXJyZW50VVJMID0gbmV3VmFsdWU7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jbGVhcigpOwogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgICAgdGhpcy5pc1JlYWR5ID0gZmFsc2U7CiAgICAgICAgdGhpcy4kX3NlYXJjaEluZGV4LnJlbW92ZUFsbCgpOwogICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgIHZpZXdwb3J0OiB2aWV3cG9ydCwKICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sCiAgICAgICAgICB2aWV3VVJMOiB0aGlzLnZpZXdVUkwsCiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmlsaXR5CiAgICAgICAgfSkpOwogICAgICAgIGlmICh0aGlzLmZpbGVGb3JtYXQgPT09ICJnbHRmIikgewogICAgICAgICAgdGhpcy4kbW9kdWxlLmxvYWRHTFRGRnJvbVVSTChuZXdWYWx1ZSwgInNjZW5lIiwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5sb2FkT3JnYW5zRnJvbVVSTChuZXdWYWx1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJzY2VuZSIsIHVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWFya2VycyA9IHRoaXMuZGlzcGxheU1hcmtlcnM7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmZvcmNlUGlja2FibGVPYmplY3RzVXBkYXRlID0gdHJ1ZTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1pbmltYXAgPSB0aGlzLmRpc3BsYXlNaW5pbWFwOwogICAgICAgIHRoaXMudXBkYXRlTWluaW1hcFNjaXNzb3IoKTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIHJlYWRpbmcgaW4gbmV3IHNjYWZmb2xkIG1ldGFkYXRhLiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlDQogICAgICogdGhlIHN0YXRlIHByb3AgYW5kIHJlYWQgaW4gdGhlIG5ldyB1cmwuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovCiAgICBzZXRVUkw6IGZ1bmN0aW9uIHNldFVSTChuZXdWYWx1ZSkgewogICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKG5ld1ZhbHVlLCB1bmRlZmluZWQpOwogICAgfSwKICAgIC8qKg0KICAgICAqIENhbGxiYWNrIHdoZW4gZHJhd2VyIGlzIHRvZ2dsZWQuDQogICAgICovCiAgICBkcmF3ZXJUb2dnbGVkOiBmdW5jdGlvbiBkcmF3ZXJUb2dnbGVkKGZsYWcpIHsKICAgICAgdGhpcy5kcmF3ZXJPcGVuID0gZmxhZzsKICAgICAgdGhpcy5hZGp1c3RMYXlvdXQoKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBDYWxsYmFjayB1c2luZyBSZXNpemVPYnNlcnZlci4NCiAgICAgKi8KICAgIGFkanVzdExheW91dDogZnVuY3Rpb24gYWRqdXN0TGF5b3V0KCkgewogICAgICB2YXIgd2lkdGggPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmNsaWVudFdpZHRoOwogICAgICB0aGlzLm1pbmltaXNlZFNsaWRlciA9IHdpZHRoIDwgODEyOwogICAgICBpZiAodGhpcy5taW5pbWlzZWRTbGlkZXIpIHsKICAgICAgICB0aGlzLnNsaWRlclBvc2l0aW9uID0gdGhpcy5kcmF3ZXJPcGVuID8gInJpZ2h0IiA6ICJsZWZ0IjsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnNsaWRlclBvc2l0aW9uID0gIiI7CiAgICAgIH0KICAgIH0sCiAgICB0b2dnbGVSZW5kZXJpbmc6IGZ1bmN0aW9uIHRvZ2dsZVJlbmRlcmluZyhmbGFnKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYW5pbWF0ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnN0b3BBbmltYXRlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZm9yY2VSZXNpemU6IGZ1bmN0aW9uIGZvcmNlUmVzaXplKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgewogICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIub25XaW5kb3dSZXNpemUoKTsKICAgICAgfQogICAgfSwKICAgIHN5bmNDb250cm9sQ2FsbGJhY2s6IGZ1bmN0aW9uIHN5bmNDb250cm9sQ2FsbGJhY2soKSB7CiAgICAgIHZhciBwYXlsb2FkID0gdGhpcy4kbW9kdWxlLk5EQ0NhbWVyYUNvbnRyb2wuZ2V0UGFuWm9vbSgpOwogICAgICBpZiAodGhpcy50RGF0YS52aXNpYmxlKSB7CiAgICAgICAgdGhpcy5zaG93UmVnaW9uVG9vbHRpcCh0aGlzLnREYXRhLmxhYmVsLCB0cnVlLCB0cnVlKTsKICAgICAgfQogICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1uYXZpZ2F0ZWQiLCBwYXlsb2FkKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBSb3RhdGUgbW9kZSAtICJub25lIiwgImhvcml6b250YWwiLCAidmVydGljYWwiLCAiZnJlZSIgYnV0DQogICAgICogaXQgd2lsbCBiZSBpZ25vcmVkIGlmIGZsYWcgaXMgc2V0IHRvIGZhbHNlLg0KICAgICAqLwogICAgdG9nZ2xlU3luY0NvbnRyb2w6IGZ1bmN0aW9uIHRvZ2dsZVN5bmNDb250cm9sKGZsYWcsIHJvdGF0ZU1vZGUpIHsKICAgICAgdGhpcy4kbW9kdWxlLnRvZ2dsZVN5bmNDb250cm9sKGZsYWcsIHJvdGF0ZU1vZGUpOwogICAgICB0aGlzLiRtb2R1bGUuc2V0U3luY0NvbnRyb2xDYWxsYmFjayh0aGlzLnN5bmNDb250cm9sQ2FsbGJhY2spOwogICAgfQogIH0KfTs="},{"version":3,"names":["Vue","OpacityControls","ScaffoldTooltip","TreeControls","MapSvgIcon","MapSvgSpriteColor","findObjectsWithNames","getObjectsFromAnnotations","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","markerLabels","Array","_default","displayMinimap","format","minimapSettings","Object","x_offset","y_offset","width","height","align","enableOpenMapUI","openMapOptions","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","previousMarkerLabels","watch","handler","immediate","newValue","setURL","setFocusedRegion","setState","deep","updateViewURL","val","setHelpMode","scene","forcePickableObjectsUpdate","sceneDataCurrentTime","$emit","currentTime","setDuration","toggleRendering","labels","_this","console","log","forEach","pml","setMarkerModeForObjectsWithName","l","beforeCreate","selectedObjects","hoveredObjects","_currentURL","$_searchIndex","mounted","$refs","treeControls","setModule","eventNotifier","subscribe","eventNotifierCallback","addNotifier","addOrganPartAddedCallback","zincObjectAdded","initialiseRenderer","ro","ResizeObserver","adjustLayout","observe","scaffoldContainer","defaultRate","getPlayRate","beforeDestroy","disconnect","destroy","methods","addZincObject","zincObject","uuid","addRegionsToSearchIndex","_this2","rootRegion","getRootRegion","regions","getChildRegions","addRegion","backgroundChangeCallback","colour","zincRenderer","getThreeJSRenderer","setClearColor","captureScreenshotCallback","removePostRenderCallbackFunction","captureID","screenshot","domElement","toDataURL","hrefElement","document","createElement","body","append","captureFilename","download","href","click","remove","captureScreenshot","filename","addPostRenderCallbackFunction","clearScene","clear","removeAll","clearAll","formatTooltip","sec","toFixed","min","fitWindow","viewAll","zoomIn","changeZoomByScrollRateUnit","zoomOut","speedChanged","speed","setPlayRate","stopFreeSpin","cameracontrol","getZincCameraControls","stopAutoTumble","findObjectsWithGroupName","objects","viewRegion","names","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","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","regionPath","resetView","liveUpdates","instance","$_regionTooltipCallback","displayTooltipOfObjects","liveUpdateTooltipPosition","selectedCenter","getClosestVertexDOMElementCoords","inView","position","$_liveCoordinatesUpdated","setupLiveCoordinates","showRegionTooltipWithObjects","showRegionTooltip","getRegion","getFullPath","showRegionTooltipWithAnnotations","annotations","result","mode","object","setMarkerMode","setMarkerModeWithAnnotations","showHelpText","helpTextNumber","_this3","helpTextWait","hideHelpText","clearTimeout","search","text","displayLabel","searchAndProcessResult","i","groupName","fetchSuggestions","term","auto_suggest","updateMinimapScissor","_this4","keys","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","getDuration","options","_this5","viewport","setCurrentCameraSettings","visibility","$nextTick","unsetFinishDownloadCallback","getState","zincCameraControls","getCurrentViewport","setURLAndState","exportGLTF","binary","loadGLTFFromURL","loadOrgansFromURL","drawerToggled","clientWidth","animate","stopAnimate","forceResize","onWindowResize","syncControlCallback","payload","NDCCameraControl","getPanZoom","toggleSyncControl","rotateMode","setSyncControlCallback"],"sources":["node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuTA;AACA,OAAAA,GAAA;AACA,OAAAC,eAAA;AACA,OAAAC,eAAA;AACA,OAAAC,YAAA;AACA,SAAAC,UAAA,EAAAC,iBAAA;AACA,SAAAC,oBAAA,EAAAC,yBAAA;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;IACAW,YAAA;MACAb,IAAA,EAAAc,KAAA;MACAZ,OAAA,WAAAa,SAAA;QACA;MACA;IACA;IACA;AACA;AACA;IACAC,cAAA;MACAhB,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAe,MAAA;MACAjB,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAgB,eAAA;MACAlB,IAAA,EAAAmB,MAAA;MACAjB,OAAA,WAAAa,SAAA;QACA;UACAK,QAAA;UACAC,QAAA;UACAC,KAAA;UACAC,MAAA;UACAC,KAAA;QACA;MACA;IACA;IACA;AACA;AACA;AACA;IACAC,eAAA;MACAzB,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACAwB,cAAA;MACA1B,IAAA,EAAAc,KAAA;MACAZ,OAAA,WAAAa,SAAA;QACA,QACA;UACAY,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,EACA;MACA;IACA;IACA;AACA;AACA;IACAC,KAAA;MACA7B,IAAA,EAAAmB,MAAA;MACAjB,OAAA,EAAA4B;IACA;IACA;AACA;AACA;AACA;IACAC,MAAA;MACA/B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACA8B,OAAA;MACAhC,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACA+B,MAAA;MACAjC,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;EACA;EACAgC,IAAA,WAAAA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"}]}