surveyjs-widgets
Version:
Custom widgets for the SurveyJS library
182 lines (171 loc) • 15.2 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define("widgets/easy-autocomplete", [], factory);
else if(typeof exports === 'object')
exports["widgets/easy-autocomplete"] = factory();
else
root["widgets/easy-autocomplete"] = factory();
})(self, () => {
return /******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ // The require scope
/******/ var __webpack_require__ = {};
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
/*!**********************************!*\
!*** ./src/easy-autocomplete.js ***!
\**********************************/
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
function init(Survey, $) {
$ = $ || window.$;
var widget = {
name: "autocomplete",
widgetIsLoaded: function () {
return typeof $ == "function" && !!$.fn.easyAutocomplete;
},
isFit: function (question) {
return question.getType() === "text";
},
isDefaultRender: true,
activatedByChanged: function (activatedBy) {
if (!!Survey.Serializer.findProperty("text", "choices") || !!Survey.Serializer.findProperty("text", "choicesByUrl")) return;
Survey.Serializer.addProperty("text", {
name: "choices:itemvalues",
category: "choices",
categoryIndex: 1,
});
Survey.Serializer.addProperty("text", {
name: "choicesByUrl:restfull",
className: "ChoicesRestfull",
category: "choicesByUrl",
visible: false,
categoryIndex: 2,
});
Survey.Serializer.addProperty("text", {
name: "config",
category: "general",
visible: false,
});
},
afterRender: function (question, el) {
var $el = $(el).is("input") ? $(el) : $(el).find("input");
var getCssSelectorFromClassesString = function (classesString) {
if (!classesString) return "";
var cssSelector = classesString.replace(/(^\s*)|(\s+)/g, "."); // replace whitespaces with '.'
return cssSelector;
};
var questionRootClasses = getCssSelectorFromClassesString(
question.cssRoot
);
var questionRoot = $el.parents(questionRootClasses)[0];
if (!!questionRootClasses && !!questionRoot) {
questionRoot.style.overflow = "visible";
}
var config = question.config;
var options =
config && typeof config == "string" ? JSON.parse(config) : config;
if (!options) options = {};
options.data = (question.choices || []).map(function (item) {
return item.text;
});
if (options.adjustWidth === undefined) {
options.adjustWidth = false;
}
if (!options.list) {
options.list = {
sort: {
enabled: true,
method: (aStr, bStr) => {
const inputStr = $el.val().toLowerCase();
const aIndex = aStr.toLowerCase().indexOf(inputStr);
const bIndex = bStr.toLowerCase().indexOf(inputStr);
return aIndex - bIndex;
}
},
match: {
enabled: true,
},
onChooseEvent: function () {
var selectedData = $el.getSelectedItemData();
if(!!selectedData && typeof selectedData === "object"
&& !!question.choicesByUrl && !!question.choicesByUrl.valueName) {
selectedData = selectedData[question.choicesByUrl.valueName];
}
question.value = selectedData;
},
};
}
if (!options.placeholder) {
options.placeholder = question.placeholder;
}
if (!!question.choicesByUrl) {
options.url = function (phrase) {
return question.choicesByUrl.url;
};
options.getValue = question.choicesByUrl.valueName;
// options.ajaxSettings = {
// dataType: "jsonp"
// };
}
$el.easyAutocomplete(options);
$el[0].oninput = function () {
question.customWidgetData.isNeedRender = true;
};
var updateHandler = function () {
$el[0].value =
typeof question.value === "undefined" ? "" : question.value;
};
question.valueChangedCallback = updateHandler;
updateHandler();
},
willUnmount: function (question, el) {
// var $el = $(el).find("input");
// $el.autocomplete("destroy");
},
};
Survey.CustomWidgetCollection.Instance.addCustomWidget(widget);
}
if (typeof Survey !== "undefined") {
init(Survey, window.jQuery);
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (init);
/******/ return __webpack_exports__;
/******/ })()
;
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy9lYXN5LWF1dG9jb21wbGV0ZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTzs7VUNWQTtVQUNBOzs7OztXQ0RBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVFQUF1RTtBQUN2RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3N1cnZleWpzLXdpZGdldHMvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL3N1cnZleWpzLXdpZGdldHMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vc3VydmV5anMtd2lkZ2V0cy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vc3VydmV5anMtd2lkZ2V0cy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3N1cnZleWpzLXdpZGdldHMvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9zdXJ2ZXlqcy13aWRnZXRzLy4vc3JjL2Vhc3ktYXV0b2NvbXBsZXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwid2lkZ2V0cy9lYXN5LWF1dG9jb21wbGV0ZVwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ3aWRnZXRzL2Vhc3ktYXV0b2NvbXBsZXRlXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIndpZGdldHMvZWFzeS1hdXRvY29tcGxldGVcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLy8gVGhlIHJlcXVpcmUgc2NvcGVcbnZhciBfX3dlYnBhY2tfcmVxdWlyZV9fID0ge307XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJmdW5jdGlvbiBpbml0KFN1cnZleSwgJCkge1xuICAkID0gJCB8fCB3aW5kb3cuJDtcbiAgdmFyIHdpZGdldCA9IHtcbiAgICBuYW1lOiBcImF1dG9jb21wbGV0ZVwiLFxuICAgIHdpZGdldElzTG9hZGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHlwZW9mICQgPT0gXCJmdW5jdGlvblwiICYmICEhJC5mbi5lYXN5QXV0b2NvbXBsZXRlO1xuICAgIH0sXG4gICAgaXNGaXQ6IGZ1bmN0aW9uIChxdWVzdGlvbikge1xuICAgICAgcmV0dXJuIHF1ZXN0aW9uLmdldFR5cGUoKSA9PT0gXCJ0ZXh0XCI7XG4gICAgfSxcbiAgICBpc0RlZmF1bHRSZW5kZXI6IHRydWUsXG4gICAgYWN0aXZhdGVkQnlDaGFuZ2VkOiBmdW5jdGlvbiAoYWN0aXZhdGVkQnkpIHtcbiAgICAgIGlmICghIVN1cnZleS5TZXJpYWxpemVyLmZpbmRQcm9wZXJ0eShcInRleHRcIiwgXCJjaG9pY2VzXCIpIHx8ICEhU3VydmV5LlNlcmlhbGl6ZXIuZmluZFByb3BlcnR5KFwidGV4dFwiLCBcImNob2ljZXNCeVVybFwiKSkgcmV0dXJuO1xuICAgICAgU3VydmV5LlNlcmlhbGl6ZXIuYWRkUHJvcGVydHkoXCJ0ZXh0XCIsIHtcbiAgICAgICAgbmFtZTogXCJjaG9pY2VzOml0ZW12YWx1ZXNcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiY2hvaWNlc1wiLFxuICAgICAgICBjYXRlZ29yeUluZGV4OiAxLFxuICAgICAgfSk7XG4gICAgICBTdXJ2ZXkuU2VyaWFsaXplci5hZGRQcm9wZXJ0eShcInRleHRcIiwge1xuICAgICAgICBuYW1lOiBcImNob2ljZXNCeVVybDpyZXN0ZnVsbFwiLFxuICAgICAgICBjbGFzc05hbWU6IFwiQ2hvaWNlc1Jlc3RmdWxsXCIsXG4gICAgICAgIGNhdGVnb3J5OiBcImNob2ljZXNCeVVybFwiLFxuICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgY2F0ZWdvcnlJbmRleDogMixcbiAgICAgIH0pO1xuICAgICAgU3VydmV5LlNlcmlhbGl6ZXIuYWRkUHJvcGVydHkoXCJ0ZXh0XCIsIHtcbiAgICAgICAgbmFtZTogXCJjb25maWdcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiZ2VuZXJhbFwiLFxuICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYWZ0ZXJSZW5kZXI6IGZ1bmN0aW9uIChxdWVzdGlvbiwgZWwpIHtcbiAgICAgIHZhciAkZWwgPSAkKGVsKS5pcyhcImlucHV0XCIpID8gJChlbCkgOiAkKGVsKS5maW5kKFwiaW5wdXRcIik7XG5cbiAgICAgIHZhciBnZXRDc3NTZWxlY3RvckZyb21DbGFzc2VzU3RyaW5nID0gZnVuY3Rpb24gKGNsYXNzZXNTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFjbGFzc2VzU3RyaW5nKSByZXR1cm4gXCJcIjtcbiAgICAgICAgdmFyIGNzc1NlbGVjdG9yID0gY2xhc3Nlc1N0cmluZy5yZXBsYWNlKC8oXlxccyopfChcXHMrKS9nLCBcIi5cIik7IC8vIHJlcGxhY2Ugd2hpdGVzcGFjZXMgd2l0aCAnLidcbiAgICAgICAgcmV0dXJuIGNzc1NlbGVjdG9yO1xuICAgICAgfTtcblxuICAgICAgdmFyIHF1ZXN0aW9uUm9vdENsYXNzZXMgPSBnZXRDc3NTZWxlY3RvckZyb21DbGFzc2VzU3RyaW5nKFxuICAgICAgICBxdWVzdGlvbi5jc3NSb290XG4gICAgICApO1xuXG4gICAgICB2YXIgcXVlc3Rpb25Sb290ID0gJGVsLnBhcmVudHMocXVlc3Rpb25Sb290Q2xhc3NlcylbMF07XG4gICAgICBpZiAoISFxdWVzdGlvblJvb3RDbGFzc2VzICYmICEhcXVlc3Rpb25Sb290KSB7XG4gICAgICAgIHF1ZXN0aW9uUm9vdC5zdHlsZS5vdmVyZmxvdyA9IFwidmlzaWJsZVwiO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29uZmlnID0gcXVlc3Rpb24uY29uZmlnO1xuICAgICAgdmFyIG9wdGlvbnMgPVxuICAgICAgICBjb25maWcgJiYgdHlwZW9mIGNvbmZpZyA9PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShjb25maWcpIDogY29uZmlnO1xuICAgICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IChxdWVzdGlvbi5jaG9pY2VzIHx8IFtdKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udGV4dDtcbiAgICAgIH0pO1xuICAgICAgaWYgKG9wdGlvbnMuYWRqdXN0V2lkdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcHRpb25zLmFkanVzdFdpZHRoID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIW9wdGlvbnMubGlzdCkge1xuICAgICAgICBvcHRpb25zLmxpc3QgPSB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIG1ldGhvZDogKGFTdHIsIGJTdHIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW5wdXRTdHIgPSAkZWwudmFsKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgY29uc3QgYUluZGV4ID0gYVN0ci50b0xvd2VyQ2FzZSgpLmluZGV4T2YoaW5wdXRTdHIpO1xuICAgICAgICAgICAgICBjb25zdCBiSW5kZXggPSBiU3RyLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpbnB1dFN0cik7XG4gICAgICAgICAgICAgIHJldHVybiBhSW5kZXggLSBiSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYXRjaDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2hvb3NlRXZlbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZERhdGEgPSAkZWwuZ2V0U2VsZWN0ZWRJdGVtRGF0YSgpO1xuICAgICAgICAgICAgaWYoISFzZWxlY3RlZERhdGEgJiYgdHlwZW9mIHNlbGVjdGVkRGF0YSA9PT0gXCJvYmplY3RcIiBcbiAgICAgICAgICAgICAgJiYgISFxdWVzdGlvbi5jaG9pY2VzQnlVcmwgJiYgISFxdWVzdGlvbi5jaG9pY2VzQnlVcmwudmFsdWVOYW1lKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkRGF0YSA9IHNlbGVjdGVkRGF0YVtxdWVzdGlvbi5jaG9pY2VzQnlVcmwudmFsdWVOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1ZXN0aW9uLnZhbHVlID0gc2VsZWN0ZWREYXRhO1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAoIW9wdGlvbnMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgb3B0aW9ucy5wbGFjZWhvbGRlciA9IHF1ZXN0aW9uLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoISFxdWVzdGlvbi5jaG9pY2VzQnlVcmwpIHtcbiAgICAgICAgb3B0aW9ucy51cmwgPSBmdW5jdGlvbiAocGhyYXNlKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXN0aW9uLmNob2ljZXNCeVVybC51cmw7XG4gICAgICAgIH07XG4gICAgICAgIG9wdGlvbnMuZ2V0VmFsdWUgPSBxdWVzdGlvbi5jaG9pY2VzQnlVcmwudmFsdWVOYW1lO1xuICAgICAgICAvLyBvcHRpb25zLmFqYXhTZXR0aW5ncyA9IHtcbiAgICAgICAgLy8gICBkYXRhVHlwZTogXCJqc29ucFwiXG4gICAgICAgIC8vIH07XG4gICAgICB9XG4gICAgICAkZWwuZWFzeUF1dG9jb21wbGV0ZShvcHRpb25zKTtcblxuICAgICAgJGVsWzBdLm9uaW5wdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHF1ZXN0aW9uLmN1c3RvbVdpZGdldERhdGEuaXNOZWVkUmVuZGVyID0gdHJ1ZTtcbiAgICAgIH07XG4gICAgICB2YXIgdXBkYXRlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJGVsWzBdLnZhbHVlID1cbiAgICAgICAgICB0eXBlb2YgcXVlc3Rpb24udmFsdWUgPT09IFwidW5kZWZpbmVkXCIgPyBcIlwiIDogcXVlc3Rpb24udmFsdWU7XG4gICAgICB9O1xuICAgICAgcXVlc3Rpb24udmFsdWVDaGFuZ2VkQ2FsbGJhY2sgPSB1cGRhdGVIYW5kbGVyO1xuICAgICAgdXBkYXRlSGFuZGxlcigpO1xuICAgIH0sXG4gICAgd2lsbFVubW91bnQ6IGZ1bmN0aW9uIChxdWVzdGlvbiwgZWwpIHtcbiAgICAgIC8vIHZhciAkZWwgPSAkKGVsKS5maW5kKFwiaW5wdXRcIik7XG4gICAgICAvLyAkZWwuYXV0b2NvbXBsZXRlKFwiZGVzdHJveVwiKTtcbiAgICB9LFxuICB9O1xuXG4gIFN1cnZleS5DdXN0b21XaWRnZXRDb2xsZWN0aW9uLkluc3RhbmNlLmFkZEN1c3RvbVdpZGdldCh3aWRnZXQpO1xufVxuXG5pZiAodHlwZW9mIFN1cnZleSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICBpbml0KFN1cnZleSwgd2luZG93LmpRdWVyeSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGluaXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=