{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/eslint-loader/index.js??ref--14-0!/home/cmiss/Jenkins/workspace/mapintegratedvuer/src/mixins/ContentMixin.js","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/src/mixins/ContentMixin.js","mtime":1702244729434},{"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/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/eslint-loader/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiL2hvbWUvY21pc3MvSmVua2lucy93b3Jrc3BhY2UvbWFwaW50ZWdyYXRlZHZ1ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICIvaG9tZS9jbWlzcy9KZW5raW5zL3dvcmtzcGFjZS9tYXBpbnRlZ3JhdGVkdnVlci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCB7IGdldEF2YWlsYWJsZVRlcm1zRm9yU3BlY2llcywgZ2V0SW50ZXJhY3RpdmVBY3Rpb24sIGdldE5lcnZlTmFtZXMsIGdldFBhcmVudHNSZWdpb24gfSBmcm9tICIuLi9jb21wb25lbnRzL1NpbXVsYXRlZERhdGEuanMiOwppbXBvcnQgRXZlbnRCdXMgZnJvbSAiLi4vY29tcG9uZW50cy9FdmVudEJ1cyI7CmltcG9ydCBtYXJrZXJab29tTGV2ZWxzIGZyb20gIi4uL2NvbXBvbmVudHMvbWFya2VyWm9vbUxldmVsc0hhcmRDb2RlZC5qcyI7CmltcG9ydCBzdG9yZSBmcm9tICIuLi9zdG9yZSI7CmZ1bmN0aW9uIGNhcGl0YWxpc2UodGV4dCkgewogIHJldHVybiB0ZXh0WzBdLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnN1YnN0cmluZygxKTsKfQoKLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQsIG5vLWNvbnNvbGUgKi8KZXhwb3J0IGRlZmF1bHQgewogIHByb3BzOiB7CiAgICAvKioKICAgICAqIE9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGZvcgogICAgICogdGhlIHJlcXVpcmVkIHZpZXdpbmcuCiAgICAgKi8KICAgIGVudHJ5OiBPYmplY3QsCiAgICB2aXNpYmxlOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICBtb3VzZUhvdmVyZWQ6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0KICB9LAogIGNvbXB1dGVkOiB7CiAgICBzeW5jTW9kZTogZnVuY3Rpb24gc3luY01vZGUoKSB7CiAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5zcGxpdEZsb3cuc3luY01vZGU7CiAgICB9CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIEV2ZW50QnVzLiRvbigic3RhcnRIZWxwIiwgZnVuY3Rpb24gKCkgewogICAgICBfdGhpcy5zdGFydEhlbHAoKTsKICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgdG9nZ2xlU3luY01vZGU6IGZ1bmN0aW9uIHRvZ2dsZVN5bmNNb2RlKCkgewogICAgICByZXR1cm47CiAgICB9LAogICAgZ2V0U3RhdGU6IGZ1bmN0aW9uIGdldFN0YXRlKCkgewogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfSwKICAgIG9wZW5NYXA6IGZ1bmN0aW9uIG9wZW5NYXAodHlwZSkgewogICAgICBpZiAodHlwZSA9PT0gIlNZTkMiKSB7CiAgICAgICAgdGhpcy50b2dnbGVTeW5jTW9kZSgpOwogICAgICB9IGVsc2UgewogICAgICAgIEV2ZW50QnVzLiRlbWl0KCJPcGVuTmV3TWFwIiwgdHlwZSk7CiAgICAgIH0KICAgIH0sCiAgICB1cGRhdGVXaXRoVmlld1VybDogZnVuY3Rpb24gdXBkYXRlV2l0aFZpZXdVcmwoKSB7CiAgICAgIHJldHVybjsKICAgIH0sCiAgICAvKioKICAgICAqIFBlcmZvcm0gYSBsb2NhbCBzZWFyY2ggb24gdGhpcyBjb250ZW50dnVlcgogICAgICovCiAgICBzZWFyY2g6IGZ1bmN0aW9uIHNlYXJjaCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IGEgbGlzdCBvZiBzZWFyY2ggc3VnZ2VzdGlvbnMgb24gdGhpcyBjb250ZW50dnVlcgogICAgICovCiAgICBzZWFyY2hTdWdnZXN0aW9uczogZnVuY3Rpb24gc2VhcmNoU3VnZ2VzdGlvbnMoKSB7CiAgICAgIHJldHVybjsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gdGhlIHZ1ZXJzIGVtaXQgYSBzZWxlY3RlZCBldmVudC4KICAgICAqLwogICAgcmVzb3VyY2VTZWxlY3RlZDogZnVuY3Rpb24gcmVzb3VyY2VTZWxlY3RlZCh0eXBlLCByZXNvdXJjZSkgewogICAgICAvLyBTa2lwIHByb2Nlc3NpbmcgaWYgcmVzb3VyY2VzIGFscmVhZHkgaGFzIGFjdGlvbnMKICAgICAgaWYgKHRoaXMucmVzb3VyY2VIYXNBY3Rpb24ocmVzb3VyY2UpKSB7CiAgICAgICAgRXZlbnRCdXMuJGVtaXQoIlBvcG92ZXJBY3Rpb25DbGljayIsIHJlc291cmNlKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdmFyIHJldHVybmVkQWN0aW9uID0gdW5kZWZpbmVkOwogICAgICB2YXIgYWN0aW9uID0gIm5vbmUiOwogICAgICB2YXIgZmlyZVJlc291cmNlU2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgdmFyIHJlc3VsdCA9IHsKICAgICAgICBwYW5lSW5kZXg6IHRoaXMuZW50cnkuaWQsCiAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICByZXNvdXJjZTogcmVzb3VyY2UsCiAgICAgICAgaW50ZXJuYWxOYW1lOiB1bmRlZmluZWQsCiAgICAgICAgZXZlbnRUeXBlOiB1bmRlZmluZWQKICAgICAgfTsKICAgICAgaWYgKHR5cGUgPT0gIk11bHRpRmxhdG1hcCIgfHwgdHlwZSA9PSAiRmxhdG1hcCIpIHsKICAgICAgICByZXN1bHQuaW50ZXJuYWxOYW1lID0gdGhpcy5pZE5hbWVQYWlyW3Jlc291cmNlLmZlYXR1cmUubW9kZWxzXTsKICAgICAgICBpZiAocmVzb3VyY2UuZXZlbnRUeXBlID09ICJjbGljayIpIHsKICAgICAgICAgIHJlc3VsdC5ldmVudFR5cGUgPSAic2VsZWN0ZWQiOwogICAgICAgICAgaWYgKHJlc291cmNlLmZlYXR1cmUudHlwZSA9PSAibWFya2VyIikgewogICAgICAgICAgICB2YXIgbGFiZWwgPSB0aGlzLmlkTmFtZVBhaXJbcmVzb3VyY2UuZmVhdHVyZS5tb2RlbHNdOwogICAgICAgICAgICB2YXIgaGFyZGNvZGVkQW5ub3RhdGlvbiA9IG1hcmtlclpvb21MZXZlbHMuZmlsdGVyKGZ1bmN0aW9uIChteikgewogICAgICAgICAgICAgIHJldHVybiBtei5pZCA9PT0gcmVzb3VyY2UuZmVhdHVyZS5tb2RlbHM7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAoc3RvcmUuZ2V0dGVyc1sic2V0dGluZ3MvaXNGZWF0dXJlZE1hcmtlcklkZW50aWZpZXIiXShyZXNvdXJjZS5mZWF0dXJlLmlkKSkgewogICAgICAgICAgICAgIC8vIEl0IGlzIGEgZmVhdHVyZWQgZGF0YXNldCBzZWFyY2ggZm9yIERPSS4KICAgICAgICAgICAgICByZXR1cm5lZEFjdGlvbiA9IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJTZWFyY2giLAogICAgICAgICAgICAgICAgdGVybTogc3RvcmUuZ2V0dGVyc1sic2V0dGluZ3MvZmVhdHVyZWRNYXJrZXJEb2kiXShyZXNvdXJjZS5mZWF0dXJlLmlkKQogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFyZGNvZGVkQW5ub3RhdGlvbi5maWx0ZXIoZnVuY3Rpb24gKGgpIHsKICAgICAgICAgICAgICByZXR1cm4gaC5rZXl3b3JkOwogICAgICAgICAgICB9KS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgLy8gaWYgaXQgbWF0Y2hlcyBvdXIgc3RvcmVkIGtleXdvcmRzLCBpdCBpcyBhIGtleXdvcmQgc2VhcmNoCiAgICAgICAgICAgICAgLy8gS2V5d29yZCBzZWFyY2hlcyBkbyBub3QgY29udGFpbiBsYWJlbHMsIHNvIHN3aXRjaCB0byBrZXl3b3JkIHNlYXJjaCBpZiBubyBsYWJlbCBleGlzdHMKICAgICAgICAgICAgICByZXR1cm5lZEFjdGlvbiA9IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJTZWFyY2giLAogICAgICAgICAgICAgICAgdGVybTogImh0dHA6Ly9wdXJsLm9ib2xpYnJhcnkub3JnL29iby8iICsgcmVzb3VyY2UuZmVhdHVyZS5tb2RlbHMucmVwbGFjZSgiOiIsICJfIikKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIC8vIEZhY2V0IHNlYXJjaCBvbiBhbmF0b215IGlmIGl0IGlzIG5vdCBhIGtleXdvcmQgc2VhcmNoCiAgICAgICAgICAgICAgcmV0dXJuZWRBY3Rpb24gPSB7CiAgICAgICAgICAgICAgICB0eXBlOiAiRmFjZXQiLAogICAgICAgICAgICAgICAgZmFjZXQ6IGxhYmVsLAogICAgICAgICAgICAgICAgZmFjZXRQcm9wUGF0aDogImFuYXRvbXkub3JnYW4uY2F0ZWdvcnkubmFtZSIsCiAgICAgICAgICAgICAgICB0ZXJtOiAiQW5hdG9taWNhbCBzdHJ1Y3R1cmUiCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmaXJlUmVzb3VyY2VTZWxlY3RlZCA9IHRydWU7CiAgICAgICAgICAgIGlmICh0eXBlID09ICJNdWx0aUZsYXRtYXAiKSB7CiAgICAgICAgICAgICAgdmFyIGZsYXRtYXAgPSB0aGlzLiRyZWZzLm11bHRpZmxhdG1hcC5nZXRDdXJyZW50RmxhdG1hcCgpLm1hcEltcDsKICAgICAgICAgICAgICBmbGF0bWFwLmNsZWFyU2VhcmNoUmVzdWx0cygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlLmZlYXR1cmUudHlwZSA9PSAiZmVhdHVyZSIpIHsKICAgICAgICAgICAgLy8gRG8gbm8gb3BlbiBzY2FmZm9sZCBpbiBzeW5jIG1hcAogICAgICAgICAgICBpZiAodGhpcy5zeW5jTW9kZSkgewogICAgICAgICAgICAgIGZpcmVSZXNvdXJjZVNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBhY3Rpb24gPSAic2NhZmZvbGQiOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChyZXNvdXJjZS5ldmVudFR5cGUgPT0gIm1vdXNlZW50ZXIiKSB7CiAgICAgICAgICByZXN1bHQuZXZlbnRUeXBlID0gImhpZ2hsaWdodGVkIjsKICAgICAgICAgIGZpcmVSZXNvdXJjZVNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiU2NhZmZvbGQiKSB7CiAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlWzBdKSB7CiAgICAgICAgICByZXN1bHQuaW50ZXJuYWxOYW1lID0gcmVzb3VyY2VbMF0uZGF0YS5pZDsKICAgICAgICAgIC8vIEZhY2V0IHNlYXJjaCBpZiBtYXJrZXIgaXMgY2xpY2tlZAogICAgICAgICAgaWYgKHJlc291cmNlWzBdLmRhdGEubGFzdEFjdGlvbk9uTWFya2VyID09PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybmVkQWN0aW9uID0gewogICAgICAgICAgICAgIHR5cGU6ICJGYWNldCIsCiAgICAgICAgICAgICAgZmFjZXQ6IGNhcGl0YWxpc2UocmVzb3VyY2VbMF0uZGF0YS5pZCksCiAgICAgICAgICAgICAgZmFjZXRQcm9wUGF0aDogImFuYXRvbXkub3JnYW4uY2F0ZWdvcnkubmFtZSIsCiAgICAgICAgICAgICAgdGVybTogIkFuYXRvbWljYWwgc3RydWN0dXJlIgogICAgICAgICAgICB9OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXN1bHQuZXZlbnRUeXBlID0gInNlbGVjdGVkIjsKICAgICAgICBmaXJlUmVzb3VyY2VTZWxlY3RlZCA9IHRydWU7CiAgICAgICAgYWN0aW9uID0gInNlYXJjaCI7CiAgICAgIH0KICAgICAgaWYgKHJldHVybmVkQWN0aW9uID09PSB1bmRlZmluZWQpIHJldHVybmVkQWN0aW9uID0gZ2V0SW50ZXJhY3RpdmVBY3Rpb24ocmVzdWx0LCBhY3Rpb24pOwogICAgICBpZiAocmV0dXJuZWRBY3Rpb24pIEV2ZW50QnVzLiRlbWl0KCJQb3BvdmVyQWN0aW9uQ2xpY2siLCByZXR1cm5lZEFjdGlvbik7CiAgICAgIGlmIChmaXJlUmVzb3VyY2VTZWxlY3RlZCkgdGhpcy4kZW1pdCgicmVzb3VyY2Utc2VsZWN0ZWQiLCByZXN1bHQpOwogICAgfSwKICAgIHJlc291cmNlSGFzQWN0aW9uOiBmdW5jdGlvbiByZXNvdXJjZUhhc0FjdGlvbihyZXNvdXJjZSkgewogICAgICByZXR1cm4gcmVzb3VyY2UudHlwZSA9PT0gIlVSTCIgfHwgcmVzb3VyY2UudHlwZSA9PT0gIlNlYXJjaCIgfHwgcmVzb3VyY2UudHlwZSA9PT0gIk5ldXJvbiBTZWFyY2giIHx8IHJlc291cmNlLnR5cGUgPT0gIkZhY2V0IiB8fCByZXNvdXJjZS50eXBlID09ICJGYWNldHMiOwogICAgfSwKICAgIC8qKgogICAgICogQ2hlY2sgaWYgdGhpcyB2aWV3ZXIgaXMgY3VycmVudGx5IHZpc2libGUKICAgICAqLwogICAgaXNWaXNpYmxlOiBmdW5jdGlvbiBpc1Zpc2libGUoKSB7CiAgICAgIHZhciBwYW5lTmFtZSA9IHN0b3JlLmdldHRlcnNbInNwbGl0Rmxvdy9nZXRQYW5lTmFtZUJ5SWQiXSh0aGlzLmVudHJ5LmlkKTsKICAgICAgcmV0dXJuIHBhbmVOYW1lICE9PSB1bmRlZmluZWQ7CiAgICB9LAogICAgZGlzcGxheVRvb2x0aXA6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwKCkgewogICAgICByZXR1cm47CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIHRlcm0gdG8gem9vbS9oaWdobGlnaHQgaW4gYSBzeW5jaHJvbmlzYXRpb24gZXZlbnQsCiAgICAgKiBpZiBpdCBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIG1hcCwgaXQgd2lsbCBwZXJmb3JtIHNldmVyYWwKICAgICAqIGNhbGxzIHRvIHRyeSB0byBnZSBhIHZhbGlkIG5hbWUvaWQuCiAgICAgKi8KICAgIGdldE5hbWVBbmRJZEZyb21TeW5jRGF0YTogZnVuY3Rpb24gKCkgewogICAgICB2YXIgX2dldE5hbWVBbmRJZEZyb21TeW5jRGF0YSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShkYXRhKSB7CiAgICAgICAgdmFyIG5hbWUsIGlkLCBvYmplY3RzLCBtYXRjaGVkLCBfbWF0Y2hlZDsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBuYW1lID0gZGF0YS5pbnRlcm5hbE5hbWU7CiAgICAgICAgICAgICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCAmJiBkYXRhLnJlc291cmNlKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gZGF0YS5yZXNvdXJjZS5sYWJlbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgaWYgKGRhdGEucmVzb3VyY2UgJiYgZGF0YS5yZXNvdXJjZS5yZXNvdXJjZSkgewogICAgICAgICAgICAgICAgaWQgPSBkYXRhLnJlc291cmNlLnJlc291cmNlWzBdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoISh0aGlzLmVudHJ5LnR5cGUgPT09ICJTY2FmZm9sZCIpKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTg7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgb2JqZWN0cyA9IHRoaXMuJHJlZnMuc2NhZmZvbGQuZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lKG5hbWUpOyAvLyBJZiBhIHJlZ2lvbiBpcyBub3QgZm91bmQgdXNlIGEgaGFyZGNvZGVkIGxpc3QgdG8gZGV0ZXJtaW5lCiAgICAgICAgICAgICAgLy8gaXRzIHBhcmVudHMgcmVnaW9uIGZpcnN0CiAgICAgICAgICAgICAgaWYgKCEob2JqZWN0cy5sZW5ndGggPT09IDApKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTY7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKCEoZGF0YS5yZXNvdXJjZSAmJiBkYXRhLnJlc291cmNlLmZlYXR1cmUpKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbWF0Y2hlZCA9IGdldE5lcnZlTmFtZXMoZGF0YS5yZXNvdXJjZS5mZWF0dXJlLm1vZGVscyk7CiAgICAgICAgICAgICAgaWYgKCEobWF0Y2hlZC5sZW5ndGggPiAwKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIsIG1hdGNoZWQpOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIG1hdGNoZWQgPSBnZXRQYXJlbnRzUmVnaW9uKG5hbWUpOwogICAgICAgICAgICAgIGlmICghbWF0Y2hlZCkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE0OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIsIG1hdGNoZWQpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgIGlmICghKGlkICYmIGRhdGEuZXZlbnRUeXBlID09PSAic2VsZWN0ZWQiKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE2OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIsIGZldGNoKCIiLmNvbmNhdCh0aGlzLmFwaUxvY2F0aW9uLCAiZ2V0LXJlbGF0ZWQtdGVybXMvIikuY29uY2F0KGlkKSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7CiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICAgICAgaWYgKGRhdGEudWJlcm9uLmFycmF5Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgbmFtZSA9IGRhdGEudWJlcm9uLmFycmF5WzBdLm5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBkYXRhLnViZXJvbi5hcnJheVswXS5uYW1lLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgICBpZCA9IGRhdGEudWJlcm9uLmFycmF5WzBdLmlkLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE5OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE4OgogICAgICAgICAgICAgIGlmICh0aGlzLmVudHJ5LnR5cGUgPT09ICJNdWx0aUZsYXRtYXAiKSB7CiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gIkJsYWRkZXIiKSB7CiAgICAgICAgICAgICAgICAgIG5hbWUgPSAiVXJpbmFyeSBCbGFkZGVyIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF9tYXRjaGVkID0gZ2V0TmVydmVOYW1lcyhuYW1lKTsKICAgICAgICAgICAgICAgICAgaWYgKF9tYXRjaGVkLmxlbmd0aCA+IDApIG5hbWUgPSBfbWF0Y2hlZFswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIiwgewogICAgICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICAgICAgbmFtZTogbmFtZQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDIwOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgZnVuY3Rpb24gZ2V0TmFtZUFuZElkRnJvbVN5bmNEYXRhKF94KSB7CiAgICAgICAgcmV0dXJuIF9nZXROYW1lQW5kSWRGcm9tU3luY0RhdGEuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfQogICAgICByZXR1cm4gZ2V0TmFtZUFuZElkRnJvbVN5bmNEYXRhOwogICAgfSgpLAogICAgZ2V0RGF0YXNldEFuYXRvbXlJbmZvOiBmdW5jdGlvbiBnZXREYXRhc2V0QW5hdG9teUluZm8oaWRlbnRpZmllcikgewogICAgICBmZXRjaCgiIi5jb25jYXQodGhpcy5hcGlMb2NhdGlvbiwgImRhdGFzZXRfaW5mby9hbmF0b215P2lkZW50aWZpZXI9IikuY29uY2F0KGlkZW50aWZpZXIpKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICB2YXIgcmVzdWx0UGF5bG9hZCA9IGRhdGEucmVzdWx0WzBdOwogICAgICAgIHZhciBtYXJrZXJDdXJpZTsKICAgICAgICB0cnkgewogICAgICAgICAgbWFya2VyQ3VyaWUgPSByZXN1bHRQYXlsb2FkLmFuYXRvbXkub3JnYW5bMF0uY3VyaWU7CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgIG1hcmtlckN1cmllID0gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICB2YXIgbWFya2VyRG9pOwogICAgICAgIHRyeSB7CiAgICAgICAgICBtYXJrZXJEb2kgPSByZXN1bHRQYXlsb2FkLml0ZW0uY3VyaWU7CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgIG1hcmtlckRvaSA9IHVuZGVmaW5lZDsKICAgICAgICB9CiAgICAgICAgdmFyIG1hcmtlclNwZWNpZXM7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBpbmRleCA9IDA7CiAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKICAgICAgICAgIHdoaWxlICghZm91bmQgJiYgaW5kZXggPCByZXN1bHRQYXlsb2FkLm9yZ2FuaXNtcy5zdWJqZWN0Lmxlbmd0aCkgewogICAgICAgICAgICB2YXIgZW50cnkgPSByZXN1bHRQYXlsb2FkLm9yZ2FuaXNtcy5zdWJqZWN0W2luZGV4XTsKICAgICAgICAgICAgaWYgKGVudHJ5LnNwZWNpZXMpIHsKICAgICAgICAgICAgICBtYXJrZXJTcGVjaWVzID0gZW50cnkuc3BlY2llcy5uYW1lOwogICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbmRleCArPSAxOwogICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICBtYXJrZXJTcGVjaWVzID0gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICBzdG9yZS5jb21taXQoInNldHRpbmdzL3VwZGF0ZUZlYXR1cmVkTWFya2VyIiwgewogICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllciwKICAgICAgICAgIG1hcmtlcjogbWFya2VyQ3VyaWUsCiAgICAgICAgICBkb2k6IG1hcmtlckRvaSwKICAgICAgICAgIHNwZWNpZXM6IG1hcmtlclNwZWNpZXMKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgYSBsaXN0IG9mIGZlYXR1cmVkIGRhdGFzZXRzIHRvIGRpc3BsYXkuCiAgICAgKi8KICAgIGdldEZlYXR1cmVkRGF0YXNldHM6IGZ1bmN0aW9uIGdldEZlYXR1cmVkRGF0YXNldHMoKSB7CiAgICAgIHZhciBsb2NhbF90aGlzID0gdGhpczsKICAgICAgZmV0Y2goIiIuY29uY2F0KHRoaXMuYXBpTG9jYXRpb24sICJnZXRfZmVhdHVyZWRfZGF0YXNldHNfaWRlbnRpZmllcnMiKSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgc3RvcmUuY29tbWl0KCJzZXR0aW5ncy91cGRhdGVGZWF0dXJlZCIsIGRhdGEuaWRlbnRpZmllcnMpOwogICAgICAgIGRhdGEuaWRlbnRpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgbG9jYWxfdGhpcy5nZXREYXRhc2V0QW5hdG9teUluZm8oZWxlbWVudCk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIHpvb21Ub0ZlYXR1cmVzOiBmdW5jdGlvbiB6b29tVG9GZWF0dXJlcygpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIGhhbmRsZVN5bmNNb3VzZUV2ZW50OiBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfaGFuZGxlU3luY01vdXNlRXZlbnQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKGRhdGEpIHsKICAgICAgICB2YXIgaW5mbzsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5hbWVBbmRJZEZyb21TeW5jRGF0YShkYXRhKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIGluZm8gPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICJoaWdobGlnaHRlZCIpIHsKICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0RmVhdHVyZXMoaW5mbyk7CiAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLmV2ZW50VHlwZSA9PT0gInNlbGVjdGVkIikgewogICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VG9vbHRpcChpbmZvKTsKICAgICAgICAgICAgICAgIC8vdGhpcy56b29tVG9GZWF0dXJlcyhpbmZvLCB0cnVlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgZnVuY3Rpb24gaGFuZGxlU3luY01vdXNlRXZlbnQoX3gyKSB7CiAgICAgICAgcmV0dXJuIF9oYW5kbGVTeW5jTW91c2VFdmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9CiAgICAgIHJldHVybiBoYW5kbGVTeW5jTW91c2VFdmVudDsKICAgIH0oKSwKICAgIC8qKgogICAgICogSGFuZGxlIHN5bmMgcGFuIHpvb20gZXZlbnQKICAgICAqLwogICAgaGFuZGxlU3luY1Bhblpvb21FdmVudDogZnVuY3Rpb24gaGFuZGxlU3luY1Bhblpvb21FdmVudCgpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIGhpZ2hsaWdodEZlYXR1cmVzOiBmdW5jdGlvbiBoaWdobGlnaHRGZWF0dXJlcygpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIHJlY2VpdmVTeW5jaHJvbmlzZWRFdmVudDogZnVuY3Rpb24gKCkgewogICAgICB2YXIgX3JlY2VpdmVTeW5jaHJvbmlzZWRFdmVudCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoZGF0YSkgewogICAgICAgIHZhciBpbmZvOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZiAoIShkYXRhLnBhbmVJbmRleCAhPT0gdGhpcy5lbnRyeS5pZCkpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gInBhblpvb20iKSB7CiAgICAgICAgICAgICAgICAvL3RoaXMuaGFuZGxlU3luY1Bhblpvb21FdmVudChkYXRhKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTeW5jTW91c2VFdmVudChkYXRhKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA5OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgaWYgKCEoZGF0YS5ldmVudFR5cGUgPT0gInNlbGVjdGVkIikpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gOTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDc7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZUFuZElkRnJvbVN5bmNEYXRhKGRhdGEpOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgaW5mbyA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgIHRoaXMuem9vbVRvRmVhdHVyZXMoaW5mbywgZmFsc2UpOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIHRoaXMpOwogICAgICB9KSk7CiAgICAgIGZ1bmN0aW9uIHJlY2VpdmVTeW5jaHJvbmlzZWRFdmVudChfeDMpIHsKICAgICAgICByZXR1cm4gX3JlY2VpdmVTeW5jaHJvbmlzZWRFdmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9CiAgICAgIHJldHVybiByZWNlaXZlU3luY2hyb25pc2VkRXZlbnQ7CiAgICB9KCksCiAgICByZXF1ZXN0U3luY2hyb25pc2VkRXZlbnQ6IGZ1bmN0aW9uIHJlcXVlc3RTeW5jaHJvbmlzZWRFdmVudCgpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIGdldEF2YWlsYWJsZVRlcm1zOiBmdW5jdGlvbiBnZXRBdmFpbGFibGVUZXJtcygpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIC8vVXNlIHRoZSBkZWZhdWx0IGxpc3Qgb2YgdWJlcm9ucyBiZWZvcmUgd2UgZ2V0IHRoZSBsaXN0IGZyb20KICAgICAgLy90aGUgYXBpCiAgICAgIHZhciB0ZXJtcyA9IGdldEF2YWlsYWJsZVRlcm1zRm9yU3BlY2llcygpOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlcm1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdGhpcy5pZE5hbWVQYWlyW3Rlcm1zW2ldLmlkXSA9IHRlcm1zW2ldLm5hbWU7CiAgICAgIH0KICAgICAgaWYgKHRoaXMuYXBpTG9jYXRpb24pIHsKICAgICAgICBpZiAodGhpcy5fY29udHJvbGxlcikgdGhpcy5fY29udHJvbGxlci5hYm9ydCgpOwogICAgICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7CiAgICAgICAgdmFyIHNpZ25hbCA9IHRoaXMuX2NvbnRyb2xsZXIuc2lnbmFsOwogICAgICAgIGZldGNoKCIiLmNvbmNhdCh0aGlzLmFwaUxvY2F0aW9uLCAiZ2V0LW9yZ2FuLWN1cmllcyIpLCB7CiAgICAgICAgICBzaWduYWw6IHNpZ25hbAogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgIF90aGlzMi5fY29udHJvbGxlciA9IHVuZGVmaW5lZDsKICAgICAgICAgIGRhdGEudWJlcm9uLmFycmF5LmZvckVhY2goZnVuY3Rpb24gKHBhaXIpIHsKICAgICAgICAgICAgX3RoaXMyLmlkTmFtZVBhaXJbcGFpci5pZC50b1VwcGVyQ2FzZSgpXSA9IHBhaXIubmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBhaXIubmFtZS5zbGljZSgxKTsKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgZmxhdG1hcE1hcmtlclpvb21VcGRhdGU6IGZ1bmN0aW9uIGZsYXRtYXBNYXJrZXJab29tVXBkYXRlKCkgewogICAgICByZXR1cm47CiAgICB9LAogICAgb25SZXNpemU6IGZ1bmN0aW9uIG9uUmVzaXplKCkgewogICAgICByZXR1cm47CiAgICB9LAogICAgc3RhcnRIZWxwOiBmdW5jdGlvbiBzdGFydEhlbHAoKSB7CiAgICAgIGlmICh0aGlzLmlzSW5IZWxwID09PSBmYWxzZSkgewogICAgICAgIHRoaXMuaGVscE1vZGUgPSB0cnVlOwogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLmVuZEhlbHApOwogICAgICAgIHRoaXMuaXNJbkhlbHAgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgZW5kSGVscDogZnVuY3Rpb24gZW5kSGVscCgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLmVuZEhlbHApOwogICAgICB0aGlzLmhlbHBNb2RlID0gZmFsc2U7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMy5pc0luSGVscCA9IGZhbHNlOwogICAgICB9LCAyMDApOwogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGFwaUxvY2F0aW9uOiBwcm9jZXNzLmVudi5WVUVfQVBQX0FQSV9MT0NBVElPTiwKICAgICAgYWN0aXZlU3BlY2llczogIlJhdCIsCiAgICAgIHNjYWZmb2xkQ2FtZXJhOiB1bmRlZmluZWQsCiAgICAgIG1haW5TdHlsZTogewogICAgICAgIGhlaWdodDogdGhpcy5lbnRyeS5kYXRhc2V0VGl0bGUgPyAiY2FsYygxMDAlIC0gMzBweCkiIDogIjEwMCUiLAogICAgICAgIHdpZHRoOiAiMTAwJSIsCiAgICAgICAgYm90dG9tOiAiMHB4IgogICAgICB9LAogICAgICBoZWxwTW9kZTogZmFsc2UsCiAgICAgIGlkTmFtZVBhaXI6IHt9LAogICAgICBzY2FmZm9sZExvYWRlZDogZmFsc2UsCiAgICAgIGlzSW5IZWxwOiBmYWxzZQogICAgfTsKICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB0aGlzLmZsYXRtYXBBUEkgPSB1bmRlZmluZWQ7CiAgICB0aGlzLmFwaUxvY2F0aW9uID0gdW5kZWZpbmVkOwogICAgaWYgKHN0b3JlLnN0YXRlLnNldHRpbmdzLmZsYXRtYXBBUEkpIHRoaXMuZmxhdG1hcEFQSSA9IHN0b3JlLnN0YXRlLnNldHRpbmdzLmZsYXRtYXBBUEk7CiAgICBpZiAoc3RvcmUuc3RhdGUuc2V0dGluZ3Muc3BhcmNBcGkpIHRoaXMuYXBpTG9jYXRpb24gPSBzdG9yZS5zdGF0ZS5zZXR0aW5ncy5zcGFyY0FwaTsKICB9Cn07"},{"version":3,"names":["getAvailableTermsForSpecies","getInteractiveAction","getNerveNames","getParentsRegion","EventBus","markerZoomLevels","store","capitalise","text","toUpperCase","substring","props","entry","Object","visible","type","Boolean","default","mouseHovered","computed","syncMode","state","splitFlow","mounted","_this","$on","startHelp","methods","toggleSyncMode","getState","undefined","openMap","$emit","updateWithViewUrl","search","searchSuggestions","resourceSelected","resource","resourceHasAction","returnedAction","action","fireResourceSelected","result","paneIndex","id","internalName","eventType","idNamePair","feature","models","label","hardcodedAnnotation","filter","mz","getters","term","h","keyword","length","replace","facet","facetPropPath","flatmap","$refs","multiflatmap","getCurrentFlatmap","mapImp","clearSearchResults","data","lastActionOnMarker","isVisible","paneName","displayTooltip","getNameAndIdFromSyncData","_getNameAndIdFromSyncData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","name","objects","matched","_matched","wrap","_callee$","_context","prev","next","scaffold","findObjectsWithGroupName","abrupt","fetch","concat","apiLocation","then","response","json","uberon","array","charAt","slice","stop","_x","apply","arguments","getDatasetAnatomyInfo","identifier","resultPayload","markerCurie","anatomy","organ","curie","error","markerDoi","item","markerSpecies","index","found","organisms","subject","species","commit","marker","doi","getFeaturedDatasets","local_this","identifiers","forEach","element","zoomToFeatures","handleSyncMouseEvent","_handleSyncMouseEvent","_callee2","info","_callee2$","_context2","sent","highlightFeatures","_x2","handleSyncPanZoomEvent","receiveSynchronisedEvent","_receiveSynchronisedEvent","_callee3","_callee3$","_context3","_x3","requestSynchronisedEvent","getAvailableTerms","_this2","terms","i","_controller","abort","AbortController","signal","pair","flatmapMarkerZoomUpdate","onResize","isInHelp","helpMode","window","addEventListener","endHelp","_this3","removeEventListener","setTimeout","process","env","VUE_APP_API_LOCATION","activeSpecies","scaffoldCamera","mainStyle","height","datasetTitle","width","bottom","scaffoldLoaded","created","flatmapAPI","settings","sparcApi"],"sources":["/home/cmiss/Jenkins/workspace/mapintegratedvuer/src/mixins/ContentMixin.js"],"sourcesContent":["import {\n getAvailableTermsForSpecies,\n getInteractiveAction,\n getNerveNames,\n getParentsRegion,\n} from \"../components/SimulatedData.js\";\nimport EventBus from \"../components/EventBus\";\nimport markerZoomLevels from \"../components/markerZoomLevelsHardCoded.js\";\nimport store from \"../store\";\n\nfunction capitalise(text) {\n return text[0].toUpperCase() + text.substring(1)\n}\n\n/* eslint-disable no-alert, no-console */\nexport default {\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n visible: {\n type: Boolean,\n default: true,\n },\n mouseHovered: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n syncMode() {\n return store.state.splitFlow.syncMode;\n },\n },\n mounted: function () {\n EventBus.$on(\"startHelp\", () => {\n this.startHelp();\n });\n },\n methods: {\n toggleSyncMode: function () {\n return;\n },\n getState: function () {\n return undefined;\n },\n openMap: function (type) {\n if (type === \"SYNC\") {\n this.toggleSyncMode();\n } else {\n EventBus.$emit(\"OpenNewMap\", type);\n }\n },\n updateWithViewUrl: function() {\n return;\n },\n /**\n * Perform a local search on this contentvuer\n */\n search: function () {\n return false;\n },\n /**\n * Get a list of search suggestions on this contentvuer\n */\n searchSuggestions: function () {\n return;\n },\n /**\n * Callback when the vuers emit a selected event.\n */\n resourceSelected: function (type, resource) {\n // Skip processing if resources already has actions\n if (this.resourceHasAction(resource)) {\n EventBus.$emit(\"PopoverActionClick\", resource);\n return;\n }\n\n let returnedAction = undefined;\n let action = \"none\";\n let fireResourceSelected = false;\n const result = {\n paneIndex: this.entry.id,\n type: type,\n resource: resource,\n internalName: undefined,\n eventType: undefined,\n };\n\n if (type == \"MultiFlatmap\" || type == \"Flatmap\") {\n result.internalName = this.idNamePair[resource.feature.models];\n if (resource.eventType == \"click\") {\n result.eventType = \"selected\";\n if (resource.feature.type == \"marker\") {\n let label = this.idNamePair[resource.feature.models];\n let hardcodedAnnotation = markerZoomLevels.filter(\n mz => mz.id === resource.feature.models\n );\n\n if (\n store.getters[\"settings/isFeaturedMarkerIdentifier\"](\n resource.feature.id\n )\n ) {\n // It is a featured dataset search for DOI.\n returnedAction = {\n type: \"Search\",\n term: store.getters[\"settings/featuredMarkerDoi\"](\n resource.feature.id\n ),\n };\n } else if (hardcodedAnnotation.filter(h => h.keyword).length > 0) {\n // if it matches our stored keywords, it is a keyword search\n // Keyword searches do not contain labels, so switch to keyword search if no label exists\n returnedAction = {\n type: \"Search\",\n term:\n \"http://purl.obolibrary.org/obo/\" +\n resource.feature.models.replace(\":\", \"_\"),\n };\n } else {\n // Facet search on anatomy if it is not a keyword search\n returnedAction = {\n type: \"Facet\",\n facet: label,\n facetPropPath: \"anatomy.organ.category.name\",\n term: \"Anatomical structure\",\n };\n }\n\n fireResourceSelected = true;\n if (type == \"MultiFlatmap\") {\n const flatmap =\n this.$refs.multiflatmap.getCurrentFlatmap().mapImp;\n flatmap.clearSearchResults();\n }\n } else if (resource.feature.type == \"feature\") {\n // Do no open scaffold in sync map\n if (this.syncMode) {\n fireResourceSelected = true;\n } else {\n action = \"scaffold\";\n }\n }\n } else if (resource.eventType == \"mouseenter\") {\n result.eventType = \"highlighted\";\n fireResourceSelected = true;\n }\n } else if (type == \"Scaffold\") {\n if (resource && resource[0]) {\n result.internalName = resource[0].data.id;\n // Facet search if marker is clicked\n if (resource[0].data.lastActionOnMarker === true) {\n returnedAction = {\n type: \"Facet\",\n facet: capitalise(resource[0].data.id),\n facetPropPath: \"anatomy.organ.category.name\",\n term: \"Anatomical structure\",\n };\n }\n }\n result.eventType = \"selected\";\n fireResourceSelected = true;\n action = \"search\";\n }\n if (returnedAction === undefined)\n returnedAction = getInteractiveAction(result, action);\n if (returnedAction) EventBus.$emit(\"PopoverActionClick\", returnedAction);\n if (fireResourceSelected) this.$emit(\"resource-selected\", result);\n },\n resourceHasAction: function (resource) {\n return (\n resource.type === \"URL\" ||\n resource.type === \"Search\" ||\n resource.type === \"Neuron Search\" ||\n resource.type == \"Facet\" ||\n resource.type == \"Facets\"\n );\n },\n /**\n * Check if this viewer is currently visible\n */\n isVisible: function() {\n const paneName = store.getters[\"splitFlow/getPaneNameById\"](this.entry.id);\n return paneName !== undefined;\n },\n displayTooltip: function() {\n return;\n },\n /**\n * Get the term to zoom/highlight in a synchronisation event,\n * if it cannot be found in the map, it will perform several\n * calls to try to ge a valid name/id.\n */\n getNameAndIdFromSyncData: async function (data) {\n let name = data.internalName;\n if (name === undefined && data.resource) {\n name = data.resource.label;\n }\n let id = undefined;\n if (data.resource && data.resource.resource) {\n id = data.resource.resource[0];\n }\n if (this.entry.type === \"Scaffold\") {\n const objects = this.$refs.scaffold.findObjectsWithGroupName(name);\n // If a region is not found use a hardcoded list to determine\n // its parents region first\n if (objects.length === 0) {\n //Use nerve mapping\n if (data.resource && data.resource.feature) {\n matched = getNerveNames(data.resource.feature.models);\n if (matched.length > 0) return matched;\n }\n let matched = getParentsRegion(name);\n if (matched) {\n return matched;\n }\n // Hardcoded list failed - use an endpoint to find its parents\n if (id && data.eventType === \"selected\") {\n return fetch(`${this.apiLocation}get-related-terms/${id}`)\n .then(response => response.json())\n .then(data => {\n if (data.uberon.array.length > 0) {\n name =\n data.uberon.array[0].name.charAt(0).toUpperCase() +\n data.uberon.array[0].name.slice(1);\n id = data.uberon.array[0].id.toUpperCase();\n return { id, name };\n }\n });\n }\n }\n } else if (this.entry.type === \"MultiFlatmap\") {\n if (name === \"Bladder\") {\n name = \"Urinary Bladder\";\n } else {\n const matched = getNerveNames(name);\n if (matched.length > 0) name = matched[0];\n }\n }\n return { id, name };\n },\n getDatasetAnatomyInfo: function (identifier) {\n fetch(`${this.apiLocation}dataset_info/anatomy?identifier=${identifier}`)\n .then(response => response.json())\n .then(data => {\n const resultPayload = data.result[0];\n let markerCurie;\n try {\n markerCurie = resultPayload.anatomy.organ[0].curie;\n } catch (error) {\n markerCurie = undefined;\n }\n let markerDoi;\n try {\n markerDoi = resultPayload.item.curie;\n } catch (error) {\n markerDoi = undefined;\n }\n let markerSpecies;\n try {\n let index = 0;\n let found = false;\n while (!found && index < resultPayload.organisms.subject.length) {\n const entry = resultPayload.organisms.subject[index];\n if (entry.species) {\n markerSpecies = entry.species.name;\n found = true;\n }\n index += 1;\n }\n } catch (error) {\n markerSpecies = undefined;\n }\n store.commit(\"settings/updateFeaturedMarker\", {\n identifier,\n marker: markerCurie,\n doi: markerDoi,\n species: markerSpecies,\n });\n });\n },\n /**\n * Get a list of featured datasets to display.\n */\n getFeaturedDatasets: function () {\n const local_this = this;\n fetch(`${this.apiLocation}get_featured_datasets_identifiers`)\n .then(response => response.json())\n .then(data => {\n store.commit(\"settings/updateFeatured\", data.identifiers);\n data.identifiers.forEach(element => {\n local_this.getDatasetAnatomyInfo(element);\n });\n });\n },\n zoomToFeatures: function () {\n return;\n },\n handleSyncMouseEvent: async function (data) {\n let info = await this.getNameAndIdFromSyncData(data);\n if (data.eventType === \"highlighted\") {\n this.highlightFeatures(info);\n } else if (data.eventType === \"selected\") {\n this.displayTooltip(info);\n //this.zoomToFeatures(info, true);\n }\n },\n /**\n * Handle sync pan zoom event\n */\n handleSyncPanZoomEvent: function () {\n return;\n },\n highlightFeatures: function () {\n return;\n },\n receiveSynchronisedEvent: async function (data) {\n if (data.paneIndex !== this.entry.id) {\n if (data.eventType == \"panZoom\") {\n //this.handleSyncPanZoomEvent(data);\n } else {\n this.handleSyncMouseEvent(data);\n }\n } else {\n if (data.eventType == \"selected\") {\n let info = await this.getNameAndIdFromSyncData(data);\n this.zoomToFeatures(info, false);\n }\n }\n },\n requestSynchronisedEvent: function () {\n return;\n },\n getAvailableTerms: function () {\n //Use the default list of uberons before we get the list from\n //the api\n let terms = getAvailableTermsForSpecies();\n for (let i = 0; i < terms.length; i++) {\n this.idNamePair[terms[i].id] = terms[i].name;\n }\n if (this.apiLocation) {\n if (this._controller) this._controller.abort();\n this._controller = new AbortController();\n let signal = this._controller.signal;\n fetch(`${this.apiLocation}get-organ-curies`, {\n signal,\n })\n .then(response => response.json())\n .then(data => {\n this._controller = undefined;\n data.uberon.array.forEach(pair => {\n this.idNamePair[pair.id.toUpperCase()] =\n pair.name.charAt(0).toUpperCase() + pair.name.slice(1);\n });\n return;\n });\n }\n },\n flatmapMarkerZoomUpdate() {\n return;\n },\n onResize: function () {\n return;\n },\n startHelp: function () {\n if (this.isInHelp === false) {\n this.helpMode = true;\n window.addEventListener(\"mousedown\", this.endHelp);\n this.isInHelp = true;\n }\n },\n endHelp: function () {\n window.removeEventListener(\"mousedown\", this.endHelp);\n this.helpMode = false;\n setTimeout(() => {\n this.isInHelp = false;\n }, 200);\n },\n },\n data: function () {\n return {\n apiLocation: process.env.VUE_APP_API_LOCATION,\n activeSpecies: \"Rat\",\n scaffoldCamera: undefined,\n mainStyle: {\n height: this.entry.datasetTitle ? \"calc(100% - 30px)\" : \"100%\",\n width: \"100%\",\n bottom: \"0px\",\n },\n helpMode: false,\n idNamePair: {},\n scaffoldLoaded: false,\n isInHelp: false,\n };\n },\n created: function () {\n this.flatmapAPI = undefined;\n this.apiLocation = undefined;\n if (store.state.settings.flatmapAPI)\n this.flatmapAPI = store.state.settings.flatmapAPI;\n if (store.state.settings.sparcApi)\n this.apiLocation = store.state.settings.sparcApi;\n },\n};\n"],"mappings":"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"}]}