sdc_client 0.57.9 → 0.57.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/workspace.xml +50 -39
- package/.tool-versions +1 -1
- package/SimpleDomControlClient.iml +2 -0
- package/dist/index.js +6 -6
- package/dist/ugly.index.js +1 -1
- package/package.json +3 -1
- package/src/index.js +2 -2
- package/src/simpleDomControl/AbstractSDC.js +4 -0
- package/src/simpleDomControl/sdc_controller.js +17 -1
- package/src/simpleDomControl/sdc_main.js +43 -20
- package/src/simpleDomControl/sdc_test_utils.js +38 -16
- package/src/simpleDomControl/sdc_view.js +68 -12
package/dist/index.js
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
\**********************/
|
15
15
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
16
16
|
|
17
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* reexport safe */ _simpleDomControl_AbstractSDC_js__WEBPACK_IMPORTED_MODULE_1__.AbstractSDC),\n/* harmony export */ allOff: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.allOff),\n/* harmony export */ app: () => (/* reexport safe */ _simpleDomControl_sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app),\n/* harmony export */ checkIfParamNumberBoolOrString: () => (/* reexport safe */ _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.checkIfParamNumberBoolOrString),\n/* harmony export */ clearErrorsInForm: () => (/* reexport safe */ _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.clearErrorsInForm),\n/* harmony export */ controllerFactory: () => (/* reexport safe */ _simpleDomControl_sdc_controller_js__WEBPACK_IMPORTED_MODULE_4__.controllerFactory),\n/* harmony export */ on: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.on),\n/* harmony export */ runControlFlowFunctions: () => (/* reexport safe */ _simpleDomControl_sdc_controller_js__WEBPACK_IMPORTED_MODULE_4__.runControlFlowFunctions),\n/* harmony export */ setErrorsInForm: () => (/* reexport safe */ _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.setErrorsInForm),\n/* harmony export */ setEvent: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.setEvent),\n/* harmony export */ socketReconnect: () => (/* binding */ socketReconnect),\n/* harmony export */ test_utils: () => (/* binding */ test_utils),\n/* harmony export */ trigger: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.trigger)\n/* harmony export */ });\n/* harmony import */ var _simpleDomControl_sdc_main_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./simpleDomControl/sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _simpleDomControl_AbstractSDC_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./simpleDomControl/AbstractSDC.js */ \"./src/simpleDomControl/AbstractSDC.js\");\n/* harmony import */ var _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./simpleDomControl/sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./simpleDomControl/sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _simpleDomControl_sdc_controller_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./simpleDomControl/sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _simpleDomControl_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./simpleDomControl/sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _simpleDomControl_sdc_test_utils_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./simpleDomControl/sdc_test_utils.js */ \"./src/simpleDomControl/sdc_test_utils.js\");\n\n\n\n\n\n\n\nconst socketReconnect = _simpleDomControl_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_5__.close;\nconst test_utils = {\n get_controller: _simpleDomControl_sdc_test_utils_js__WEBPACK_IMPORTED_MODULE_6__.get_controller,\n getCsrfToken: _simpleDomControl_sdc_test_utils_js__WEBPACK_IMPORTED_MODULE_6__.getCsrfToken\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
17
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* reexport safe */ _simpleDomControl_AbstractSDC_js__WEBPACK_IMPORTED_MODULE_1__.AbstractSDC),\n/* harmony export */ allOff: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.allOff),\n/* harmony export */ app: () => (/* reexport safe */ _simpleDomControl_sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app),\n/* harmony export */ checkIfParamNumberBoolOrString: () => (/* reexport safe */ _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.checkIfParamNumberBoolOrString),\n/* harmony export */ clearErrorsInForm: () => (/* reexport safe */ _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.clearErrorsInForm),\n/* harmony export */ controllerFactory: () => (/* reexport safe */ _simpleDomControl_sdc_controller_js__WEBPACK_IMPORTED_MODULE_4__.controllerFactory),\n/* harmony export */ on: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.on),\n/* harmony export */ runControlFlowFunctions: () => (/* reexport safe */ _simpleDomControl_sdc_controller_js__WEBPACK_IMPORTED_MODULE_4__.runControlFlowFunctions),\n/* harmony export */ setErrorsInForm: () => (/* reexport safe */ _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.setErrorsInForm),\n/* harmony export */ setEvent: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.setEvent),\n/* harmony export */ socketReconnect: () => (/* binding */ socketReconnect),\n/* harmony export */ test_utils: () => (/* binding */ test_utils),\n/* harmony export */ trigger: () => (/* reexport safe */ _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__.trigger)\n/* harmony export */ });\n/* harmony import */ var _simpleDomControl_sdc_main_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./simpleDomControl/sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _simpleDomControl_AbstractSDC_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./simpleDomControl/AbstractSDC.js */ \"./src/simpleDomControl/AbstractSDC.js\");\n/* harmony import */ var _simpleDomControl_sdc_events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./simpleDomControl/sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _simpleDomControl_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./simpleDomControl/sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _simpleDomControl_sdc_controller_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./simpleDomControl/sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _simpleDomControl_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./simpleDomControl/sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _simpleDomControl_sdc_test_utils_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./simpleDomControl/sdc_test_utils.js */ \"./src/simpleDomControl/sdc_test_utils.js\");\n\n\n\n\n\n\n\nconst socketReconnect = _simpleDomControl_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_5__.close;\nconst test_utils = {\n get_controller: _simpleDomControl_sdc_test_utils_js__WEBPACK_IMPORTED_MODULE_6__.get_controller,\n getCsrfToken: _simpleDomControl_sdc_test_utils_js__WEBPACK_IMPORTED_MODULE_6__.getCsrfToken,\n controllerFromTestHtml: _simpleDomControl_sdc_test_utils_js__WEBPACK_IMPORTED_MODULE_6__.controllerFromTestHtml\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDVztBQUNpQjtBQUNvQztBQUNuQjtBQUNyQztBQUM4QztBQUV6RyxNQUFNZSxlQUFlLEdBQUdKLHVFQUFLO0FBQzdCLE1BQU1LLFVBQVUsR0FBRztFQUFDSixjQUFjO0VBQUVDLFlBQVk7RUFBRUMsc0JBQXNCQSx5RkFBQUE7QUFBQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9pbmRleC5qcz9iNjM1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwfSBmcm9tICcuL3NpbXBsZURvbUNvbnRyb2wvc2RjX21haW4uanMnO1xuaW1wb3J0IHtBYnN0cmFjdFNEQ30gZnJvbSAnLi9zaW1wbGVEb21Db250cm9sL0Fic3RyYWN0U0RDLmpzJztcbmltcG9ydCB7b24sIHRyaWdnZXIsIGFsbE9mZiwgc2V0RXZlbnR9IGZyb20gJy4vc2ltcGxlRG9tQ29udHJvbC9zZGNfZXZlbnRzLmpzJztcbmltcG9ydCB7Y2xlYXJFcnJvcnNJbkZvcm0sIHNldEVycm9yc0luRm9ybSwgY2hlY2tJZlBhcmFtTnVtYmVyQm9vbE9yU3RyaW5nfSBmcm9tICcuL3NpbXBsZURvbUNvbnRyb2wvc2RjX3V0aWxzLmpzJztcbmltcG9ydCB7Y29udHJvbGxlckZhY3RvcnksIHJ1bkNvbnRyb2xGbG93RnVuY3Rpb25zfSBmcm9tICcuL3NpbXBsZURvbUNvbnRyb2wvc2RjX2NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtjbG9zZX0gZnJvbSAnLi9zaW1wbGVEb21Db250cm9sL3NkY19zZXJ2ZXJfY2FsbC5qcydcbmltcG9ydCB7Z2V0X2NvbnRyb2xsZXIsIGdldENzcmZUb2tlbiwgY29udHJvbGxlckZyb21UZXN0SHRtbH0gZnJvbSAnLi9zaW1wbGVEb21Db250cm9sL3NkY190ZXN0X3V0aWxzLmpzJ1xuXG5jb25zdCBzb2NrZXRSZWNvbm5lY3QgPSBjbG9zZVxuY29uc3QgdGVzdF91dGlscyA9IHtnZXRfY29udHJvbGxlciwgZ2V0Q3NyZlRva2VuLCBjb250cm9sbGVyRnJvbVRlc3RIdG1sfTtcblxuZXhwb3J0IHtcbiAgICBhcHAsIEFic3RyYWN0U0RDLCBvbiwgdHJpZ2dlciwgYWxsT2ZmLCBzZXRFdmVudCwgY2xlYXJFcnJvcnNJbkZvcm0sIHNldEVycm9yc0luRm9ybSwgY2hlY2tJZlBhcmFtTnVtYmVyQm9vbE9yU3RyaW5nLFxuICAgIGNvbnRyb2xsZXJGYWN0b3J5LCBydW5Db250cm9sRmxvd0Z1bmN0aW9ucywgc29ja2V0UmVjb25uZWN0LCB0ZXN0X3V0aWxzXG59XG4iXSwibmFtZXMiOlsiYXBwIiwiQWJzdHJhY3RTREMiLCJvbiIsInRyaWdnZXIiLCJhbGxPZmYiLCJzZXRFdmVudCIsImNsZWFyRXJyb3JzSW5Gb3JtIiwic2V0RXJyb3JzSW5Gb3JtIiwiY2hlY2tJZlBhcmFtTnVtYmVyQm9vbE9yU3RyaW5nIiwiY29udHJvbGxlckZhY3RvcnkiLCJydW5Db250cm9sRmxvd0Z1bmN0aW9ucyIsImNsb3NlIiwiZ2V0X2NvbnRyb2xsZXIiLCJnZXRDc3JmVG9rZW4iLCJjb250cm9sbGVyRnJvbVRlc3RIdG1sIiwic29ja2V0UmVjb25uZWN0IiwidGVzdF91dGlscyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/index.js\n");
|
18
18
|
|
19
19
|
/***/ }),
|
20
20
|
|
@@ -24,7 +24,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
24
24
|
\*********************************************/
|
25
25
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
26
26
|
|
27
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* binding */ AbstractSDC)\n/* harmony export */ });\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_socket.js */ \"./src/simpleDomControl/sdc_socket.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.uuidv4)();\n this.contentUrl = '';\n this.contentReload = false;\n this.events = [];\n this.load_async = false;\n this._isEventsSet = false;\n this._allEvents = null;\n this._urlParams = [];\n this._models = [];\n\n // ------------------ Old deprecated properties ----------------------\n this._cssUrls = [];\n this.afterShow = () => {\n console.warn('afterShow is deprecated!!');\n };\n // -------------- End old deprecated properties ----------------------\n\n /**\n *\n * @type {{string: AbstractSDC}}\n */\n this._mixins = {};\n\n /**\n * @type {string}\n */\n this._tagName = '';\n\n /**\n * @type {{string:AbstractSDC}}\n */\n this._childController = {};\n\n /**\n * @type {AbstractSDC}\n */\n this._parentController = null;\n\n /**\n * @type {boolean}\n */\n this._onLoadDone = false;\n\n /**\n * @type {jquery}\n */\n this.$container = null;\n\n /**\n *\n * @type {boolean}\n */\n this._isMixin = false;\n }\n\n /**\n *\n * @param {string} method must be in {}\n * @param {Array} args in arguments of\n *\n */\n _runLifecycle(method, args) {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG) {\n console.debug(method, this._tagName);\n }\n let returnPromisses = [];\n if (this._isMixin) {\n return;\n }\n this._isMixin = true;\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (typeof mixin[method] === 'function') {\n returnPromisses.push(mixin[method].apply(this, args));\n }\n }\n return Promise.all(returnPromisses).then(() => {\n this._isMixin = false;\n });\n }\n onInit() {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG) {\n console.DEBUG(Array.apply(null, arguments), this._tagName);\n }\n }\n get parentController() {\n return this._parentController;\n }\n get childController() {\n return this._childController;\n }\n onLoad() {\n return this._runLifecycle('onLoad', arguments);\n }\n willShow() {\n return this._runLifecycle('willShow', arguments);\n }\n onRefresh() {\n return this._runLifecycle('onRefresh', arguments);\n }\n onRemove() {\n this._runLifecycle('onRemove', arguments);\n return true;\n }\n remove() {\n for (const model of this._models) {\n model.close();\n }\n let _childController = this._childController;\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n if (!cc.remove()) {\n return false;\n }\n }\n }\n }\n if (!this.onRemove || this.onRemove()) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_0__.allOff)(this);\n const c_name = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToCamelCase)(this._tagName);\n if (this._parentController._childController[c_name]) {\n let arr = this._parentController._childController[c_name];\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === this) {\n arr.splice(i, 1);\n }\n }\n }\n this.$container.remove();\n delete this;\n return true;\n }\n return false;\n }\n controller_name() {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToReadableName)(this._tagName);\n }\n addEvent(event, selector, handler) {\n this.getEvents();\n this._allEvents[event] = this._allEvents[event] || {};\n this._allEvents[event][selector] = handler;\n }\n getEvents() {\n if (this._allEvents) return this._allEvents;\n let allEvents = [];\n allEvents = allEvents.concat(this.events);\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (Array.isArray(mixin.events)) {\n allEvents = allEvents.concat(mixin.events);\n }\n }\n return this._allEvents = _.merge(...allEvents);\n }\n post(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.post(this, url, args);\n }\n get(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.get(this, url, args);\n }\n submitForm(form, url, method) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.submitFormAndUpdateView(this, form, url, method);\n }\n serverCall(methode, args) {\n let re = /sdc_view\\/([^/]+)/i;\n let app = this.contentUrl.match(re);\n if (!app || app.length < 2) {\n console.error('To use the serverCall function the contentUrl must be set: ' + this.name);\n return;\n }\n return (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__.callServer)(app[1], this._tagName, this.parsedContentUrl, methode, args);\n }\n\n /**\n *\n * @param model_name {string | Number}\n * @param model_query {Object}\n * @constructor\n */\n newModel(model_name, model_query = {}) {\n if (model_name instanceof Number && model_name.hasOwnProperty('load')) {\n return model_name.load(this);\n }\n const model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n this._models.push(model);\n return model;\n }\n\n /**\n *\n * @param model_name {string}\n * @param model_query {Object}\n * @param values {Object}\n * @constructor\n */\n updateModel(model_name, model_query = {}, values) {\n let model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n return model.load().then(() => {\n model.values |= values;\n model.save().then(() => {\n model.close();\n return model.values;\n });\n });\n }\n\n /**\n * Adapter to this.$container.find\n * @param {string} domSelector\n */\n find(domSelector) {\n return this.$container.find(domSelector);\n }\n refresh() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.refresh(this.$container, this);\n }\n reload() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reloadController(this);\n }\n submitModelFormDistributor($form, e) {\n if (typeof this._submitModelForm === 'function') {\n return this._submitModelForm($form, e);\n }\n if (typeof this.submitModelForm === 'function') {\n return this.submitModelForm($form, e);\n }\n return this.defaultSubmitModelForm($form, e);\n }\n iterateAllChildren() {\n let _childController = this._childController;\n let res = [];\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n res.push(cc);\n res.push(...cc.iterateAllChildren());\n }\n }\n }\n return res;\n }\n\n /**\n * Model Form Events\n */\n defaultSubmitModelForm($form, e) {\n let p_list = [];\n if (!this._isMixin) {\n e.stopPropagation();\n e.preventDefault();\n let model = $form.data('model');\n const values = model.syncForm($form);\n for (let instance_value of values) {\n p_list.push(new Promise((resolve, reject) => {\n let prom;\n if (instance_value.pk !== null && instance_value.pk >= 0) {\n prom = model.save(instance_value.pk);\n } else {\n prom = model.create(instance_value);\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.clearErrorsInForm)($form);\n this.submit_model_form_success && this.submit_model_form_success(res[0]);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_success && controller.submit_model_form_success(res[0]);\n }\n resolve(res);\n }).catch(data => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.setErrorsInForm)($form, $(data.html));\n this.submit_model_form_error && this.submit_model_form_error(data);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_error && controller.submit_model_form_error(data);\n }\n reject(data);\n });\n }));\n }\n }\n return Promise.all(p_list).then(res => {\n return Object.assign({}, ...res.flat());\n });\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RG9tQ29udHJvbC9BYnN0cmFjdFNEQy5qcz9kN2Y3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWxsT2ZmfSBmcm9tIFwiLi9zZGNfZXZlbnRzLmpzXCI7XG5pbXBvcnQge2FwcH0gZnJvbSBcIi4vc2RjX21haW4uanNcIjtcbmltcG9ydCB7TW9kZWx9IGZyb20gXCIuL3NkY19zb2NrZXQuanNcIjtcbmltcG9ydCB7Y2FsbFNlcnZlcn0gZnJvbSBcIi4vc2RjX3NlcnZlcl9jYWxsLmpzXCI7XG5pbXBvcnQge3V1aWR2NCwgc2V0RXJyb3JzSW5Gb3JtLCBjbGVhckVycm9yc0luRm9ybSwgdGFnTmFtZVRvQ2FtZWxDYXNlLCB0YWdOYW1lVG9SZWFkYWJsZU5hbWV9IGZyb20gXCIuL3NkY191dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RTREMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl91dWlkID0gdXVpZHY0KCk7XG4gICAgICAgIHRoaXMuY29udGVudFVybCA9ICcnO1xuICAgICAgICB0aGlzLmNvbnRlbnRSZWxvYWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2FkX2FzeW5jID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzRXZlbnRzU2V0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2FsbEV2ZW50cyA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fdXJsUGFyYW1zID0gW107XG4gICAgICAgIHRoaXMuX21vZGVscyA9IFtdO1xuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLSBPbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgdGhpcy5fY3NzVXJscyA9IFtdO1xuICAgICAgICB0aGlzLmFmdGVyU2hvdyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignYWZ0ZXJTaG93IGlzIGRlcHJlY2F0ZWQhIScpXG4gICAgICAgIH07XG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tIEVuZCBvbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKlxuICAgICAgICAgKiBAdHlwZSB7e3N0cmluZzogQWJzdHJhY3RTREN9fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fbWl4aW5zID0ge307XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl90YWdOYW1lID0gJyc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHt7c3RyaW5nOkFic3RyYWN0U0RDfX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2NoaWxkQ29udHJvbGxlciA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7QWJzdHJhY3RTREN9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9wYXJlbnRDb250cm9sbGVyID0gbnVsbDtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9vbkxvYWREb25lID0gZmFsc2U7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtqcXVlcnl9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLiRjb250YWluZXIgPSBudWxsO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKlxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2lzTWl4aW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgbXVzdCBiZSBpbiB7fVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgaW4gYXJndW1lbnRzIG9mXG4gICAgICpcbiAgICAgKi9cbiAgICBfcnVuTGlmZWN5Y2xlKG1ldGhvZCwgYXJncykge1xuICAgICAgICBpZiAoYXBwLkRFQlVHKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKG1ldGhvZCwgdGhpcy5fdGFnTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmV0dXJuUHJvbWlzc2VzID0gW107XG4gICAgICAgIGlmICh0aGlzLl9pc01peGluKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNNaXhpbiA9IHRydWU7XG4gICAgICAgIGZvciAobGV0IG1peGluS2V5IGluIHRoaXMuX21peGlucykge1xuICAgICAgICAgICAgbGV0IG1peGluID0gdGhpcy5fbWl4aW5zW21peGluS2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWl4aW5bbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuUHJvbWlzc2VzLnB1c2gobWl4aW5bbWV0aG9kXS5hcHBseSh0aGlzLCBhcmdzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocmV0dXJuUHJvbWlzc2VzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2lzTWl4aW4gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Jbml0KCkge1xuICAgICAgICBpZiAoYXBwLkRFQlVHKSB7XG4gICAgICAgICAgICBjb25zb2xlLkRFQlVHKEFycmF5LmFwcGx5KG51bGwsIGFyZ3VtZW50cyksIHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHBhcmVudENvbnRyb2xsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRDb250cm9sbGVyO1xuICAgIH1cblxuICAgIGdldCBjaGlsZENvbnRyb2xsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZENvbnRyb2xsZXI7XG4gICAgfVxuXG4gICAgb25Mb2FkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKCdvbkxvYWQnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHdpbGxTaG93KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKCd3aWxsU2hvdycsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgb25SZWZyZXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKCdvblJlZnJlc2gnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIG9uUmVtb3ZlKCkge1xuICAgICAgICB0aGlzLl9ydW5MaWZlY3ljbGUoJ29uUmVtb3ZlJywgYXJndW1lbnRzKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1vdmUoKSB7XG4gICAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgdGhpcy5fbW9kZWxzKSB7XG4gICAgICAgICAgICBtb2RlbC5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBfY2hpbGRDb250cm9sbGVyID0gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgICAgICBmb3IgKGxldCBpIGluIF9jaGlsZENvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChfY2hpbGRDb250cm9sbGVyLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNjLnJlbW92ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub25SZW1vdmUgfHwgdGhpcy5vblJlbW92ZSgpKSB7XG4gICAgICAgICAgICBhbGxPZmYodGhpcyk7XG4gICAgICAgICAgICBjb25zdCBjX25hbWUgPSB0YWdOYW1lVG9DYW1lbENhc2UodGhpcy5fdGFnTmFtZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5fcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NfbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsZXQgYXJyID0gdGhpcy5fcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NfbmFtZV07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy4kY29udGFpbmVyLnJlbW92ZSgpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb250cm9sbGVyX25hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWdOYW1lVG9SZWFkYWJsZU5hbWUodGhpcy5fdGFnTmFtZSk7XG4gICAgfVxuXG4gICAgYWRkRXZlbnQoZXZlbnQsIHNlbGVjdG9yLCBoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICAgIHRoaXMuX2FsbEV2ZW50c1tldmVudF0gPSB0aGlzLl9hbGxFdmVudHNbZXZlbnRdIHx8IHt9O1xuICAgICAgICB0aGlzLl9hbGxFdmVudHNbZXZlbnRdW3NlbGVjdG9yXSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgZ2V0RXZlbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5fYWxsRXZlbnRzKSByZXR1cm4gdGhpcy5fYWxsRXZlbnRzO1xuICAgICAgICBsZXQgYWxsRXZlbnRzID0gW107XG4gICAgICAgIGFsbEV2ZW50cyA9IGFsbEV2ZW50cy5jb25jYXQodGhpcy5ldmVudHMpO1xuICAgICAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgICAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtaXhpbi5ldmVudHMpKSB7XG4gICAgICAgICAgICAgICAgYWxsRXZlbnRzID0gYWxsRXZlbnRzLmNvbmNhdChtaXhpbi5ldmVudHMpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiAodGhpcy5fYWxsRXZlbnRzID0gXy5tZXJnZSguLi5hbGxFdmVudHMpKTtcbiAgICB9XG5cbiAgICBwb3N0KHVybCwgYXJncykge1xuICAgICAgICByZXR1cm4gYXBwLnBvc3QodGhpcywgdXJsLCBhcmdzKTtcbiAgICB9XG5cbiAgICBnZXQodXJsLCBhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcHAuZ2V0KHRoaXMsIHVybCwgYXJncyk7XG4gICAgfVxuXG4gICAgc3VibWl0Rm9ybShmb3JtLCB1cmwsIG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gYXBwLnN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3KHRoaXMsIGZvcm0sIHVybCwgbWV0aG9kKTtcbiAgICB9XG5cbiAgICBzZXJ2ZXJDYWxsKG1ldGhvZGUsIGFyZ3MpIHtcbiAgICAgICAgbGV0IHJlID0gL3NkY192aWV3XFwvKFteL10rKS9pO1xuICAgICAgICBsZXQgYXBwID0gdGhpcy5jb250ZW50VXJsLm1hdGNoKHJlKTtcbiAgICAgICAgaWYgKCFhcHAgfHwgYXBwLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RvIHVzZSB0aGUgc2VydmVyQ2FsbCBmdW5jdGlvbiB0aGUgY29udGVudFVybCBtdXN0IGJlIHNldDogJyArIHRoaXMubmFtZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FsbFNlcnZlcihhcHBbMV0sIHRoaXMuX3RhZ05hbWUsIHRoaXMucGFyc2VkQ29udGVudFVybCwgbWV0aG9kZSwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kZWxfbmFtZSB7c3RyaW5nIHwgTnVtYmVyfVxuICAgICAqIEBwYXJhbSBtb2RlbF9xdWVyeSB7T2JqZWN0fVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIG5ld01vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5ID0ge30pIHtcbiAgICAgICAgaWYobW9kZWxfbmFtZSBpbnN0YW5jZW9mIE51bWJlciAmJiBtb2RlbF9uYW1lLmhhc093blByb3BlcnR5KCdsb2FkJykpIHtcbiAgICAgICAgICAgIHJldHVybiBtb2RlbF9uYW1lLmxvYWQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSk7XG4gICAgICAgIHRoaXMuX21vZGVscy5wdXNoKG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIG1vZGVsX25hbWUge3N0cmluZ31cbiAgICAgKiBAcGFyYW0gbW9kZWxfcXVlcnkge09iamVjdH1cbiAgICAgKiBAcGFyYW0gdmFsdWVzIHtPYmplY3R9XG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgdXBkYXRlTW9kZWwobW9kZWxfbmFtZSwgbW9kZWxfcXVlcnkgPSB7fSwgdmFsdWVzKSB7XG4gICAgICAgIGxldCBtb2RlbCA9IG5ldyBNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSk7XG4gICAgICAgIHJldHVybiBtb2RlbC5sb2FkKCkudGhlbigoKT0+e1xuICAgICAgICAgICAgbW9kZWwudmFsdWVzIHw9IHZhbHVlcztcbiAgICAgICAgICAgIG1vZGVsLnNhdmUoKS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgICAgIG1vZGVsLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsLnZhbHVlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkYXB0ZXIgdG8gdGhpcy4kY29udGFpbmVyLmZpbmRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZG9tU2VsZWN0b3JcbiAgICAgKi9cbiAgICBmaW5kKGRvbVNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRjb250YWluZXIuZmluZChkb21TZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5yZWZyZXNoKHRoaXMuJGNvbnRhaW5lciwgdGhpcyk7XG4gICAgfVxuXG4gICAgcmVsb2FkKCkge1xuICAgICAgICByZXR1cm4gYXBwLnJlbG9hZENvbnRyb2xsZXIodGhpcyk7XG4gICAgfVxuXG4gICAgc3VibWl0TW9kZWxGb3JtRGlzdHJpYnV0b3IoJGZvcm0sIGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJtaXRNb2RlbEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgfVxuXG4gICAgaXRlcmF0ZUFsbENoaWxkcmVuKCkge1xuICAgICAgICBsZXQgX2NoaWxkQ29udHJvbGxlciA9IHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgICAgICAgbGV0IHJlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpIGluIF9jaGlsZENvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChfY2hpbGRDb250cm9sbGVyLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChjYyk7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKC4uLmNjLml0ZXJhdGVBbGxDaGlsZHJlbigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb2RlbCBGb3JtIEV2ZW50c1xuICAgICAqL1xuICAgIGRlZmF1bHRTdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpIHtcbiAgICAgICAgbGV0IHBfbGlzdCA9IFtdO1xuICAgICAgICBpZiAoIXRoaXMuX2lzTWl4aW4pIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBsZXQgbW9kZWwgPSAkZm9ybS5kYXRhKCdtb2RlbCcpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gbW9kZWwuc3luY0Zvcm0oJGZvcm0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5zdGFuY2VfdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcF9saXN0LnB1c2gobmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvbTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlX3ZhbHVlLnBrICE9PSBudWxsICYmIGluc3RhbmNlX3ZhbHVlLnBrID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb20gPSBtb2RlbC5zYXZlKGluc3RhbmNlX3ZhbHVlLnBrKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb20gPSBtb2RlbC5jcmVhdGUoaW5zdGFuY2VfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcHJvbS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyRXJyb3JzSW5Gb3JtKCRmb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyAmJiB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MocmVzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBjb250cm9sbGVyIG9mIHRoaXMuaXRlcmF0ZUFsbENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MgJiYgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzKHJlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcnNJbkZvcm0oJGZvcm0sICQoZGF0YS5odG1sKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yICYmIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IoY29uc3QgY29udHJvbGxlciBvZiB0aGlzLml0ZXJhdGVBbGxDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvciAmJiBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocF9saXN0KS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCAuLi5yZXMuZmxhdCgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdLCJuYW1lcyI6WyJhbGxPZmYiLCJhcHAiLCJNb2RlbCIsImNhbGxTZXJ2ZXIiLCJ1dWlkdjQiLCJzZXRFcnJvcnNJbkZvcm0iLCJjbGVhckVycm9yc0luRm9ybSIsInRhZ05hbWVUb0NhbWVsQ2FzZSIsInRhZ05hbWVUb1JlYWRhYmxlTmFtZSIsIkFic3RyYWN0U0RDIiwiY29uc3RydWN0b3IiLCJfdXVpZCIsImNvbnRlbnRVcmwiLCJjb250ZW50UmVsb2FkIiwiZXZlbnRzIiwibG9hZF9hc3luYyIsIl9pc0V2ZW50c1NldCIsIl9hbGxFdmVudHMiLCJfdXJsUGFyYW1zIiwiX21vZGVscyIsIl9jc3NVcmxzIiwiYWZ0ZXJTaG93IiwiY29uc29sZSIsIndhcm4iLCJfbWl4aW5zIiwiX3RhZ05hbWUiLCJfY2hpbGRDb250cm9sbGVyIiwiX3BhcmVudENvbnRyb2xsZXIiLCJfb25Mb2FkRG9uZSIsIiRjb250YWluZXIiLCJfaXNNaXhpbiIsIl9ydW5MaWZlY3ljbGUiLCJtZXRob2QiLCJhcmdzIiwiREVCVUciLCJkZWJ1ZyIsInJldHVyblByb21pc3NlcyIsIm1peGluS2V5IiwibWl4aW4iLCJwdXNoIiwiYXBwbHkiLCJQcm9taXNlIiwiYWxsIiwidGhlbiIsIm9uSW5pdCIsIkFycmF5IiwiYXJndW1lbnRzIiwicGFyZW50Q29udHJvbGxlciIsImNoaWxkQ29udHJvbGxlciIsIm9uTG9hZCIsIndpbGxTaG93Iiwib25SZWZyZXNoIiwib25SZW1vdmUiLCJyZW1vdmUiLCJtb2RlbCIsImNsb3NlIiwiaSIsImhhc093blByb3BlcnR5IiwiY2MiLCJjX25hbWUiLCJhcnIiLCJsZW5ndGgiLCJzcGxpY2UiLCJjb250cm9sbGVyX25hbWUiLCJhZGRFdmVudCIsImV2ZW50Iiwic2VsZWN0b3IiLCJoYW5kbGVyIiwiZ2V0RXZlbnRzIiwiYWxsRXZlbnRzIiwiY29uY2F0IiwiaXNBcnJheSIsIl8iLCJtZXJnZSIsInBvc3QiLCJ1cmwiLCJnZXQiLCJzdWJtaXRGb3JtIiwiZm9ybSIsInN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3Iiwic2VydmVyQ2FsbCIsIm1ldGhvZGUiLCJyZSIsIm1hdGNoIiwiZXJyb3IiLCJuYW1lIiwicGFyc2VkQ29udGVudFVybCIsIm5ld01vZGVsIiwibW9kZWxfbmFtZSIsIm1vZGVsX3F1ZXJ5IiwiTnVtYmVyIiwibG9hZCIsInVwZGF0ZU1vZGVsIiwidmFsdWVzIiwic2F2ZSIsImZpbmQiLCJkb21TZWxlY3RvciIsInJlZnJlc2giLCJyZWxvYWQiLCJyZWxvYWRDb250cm9sbGVyIiwic3VibWl0TW9kZWxGb3JtRGlzdHJpYnV0b3IiLCIkZm9ybSIsImUiLCJfc3VibWl0TW9kZWxGb3JtIiwic3VibWl0TW9kZWxGb3JtIiwiZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSIsIml0ZXJhdGVBbGxDaGlsZHJlbiIsInJlcyIsInBfbGlzdCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiZGF0YSIsInN5bmNGb3JtIiwiaW5zdGFuY2VfdmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbSIsInBrIiwiY3JlYXRlIiwic3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyIsImNvbnRyb2xsZXIiLCJjYXRjaCIsIiQiLCJodG1sIiwic3VibWl0X21vZGVsX2Zvcm1fZXJyb3IiLCJPYmplY3QiLCJhc3NpZ24iLCJmbGF0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\n");
|
27
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* binding */ AbstractSDC)\n/* harmony export */ });\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_socket.js */ \"./src/simpleDomControl/sdc_socket.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.uuidv4)();\n this.contentUrl = '';\n this.contentReload = false;\n this.events = [];\n this.load_async = false;\n this._isEventsSet = false;\n this._allEvents = null;\n this._urlParams = [];\n this._models = [];\n\n // ------------------ Old deprecated properties ----------------------\n this._cssUrls = [];\n this.afterShow = () => {\n console.warn('afterShow is deprecated!!');\n };\n // -------------- End old deprecated properties ----------------------\n\n /**\n *\n * @type {{string: AbstractSDC}}\n */\n this._mixins = {};\n\n /**\n * @type {string}\n */\n this._tagName = '';\n\n /**\n * @type {{string:AbstractSDC}}\n */\n this._childController = {};\n\n /**\n * @type {AbstractSDC}\n */\n this._parentController = null;\n\n /**\n * @type {boolean}\n */\n this._onLoadDone = false;\n\n /**\n * @type {jquery}\n */\n this.$container = null;\n\n /**\n *\n * @type {boolean}\n */\n this._isMixin = false;\n }\n\n /**\n *\n * @param {string} method must be in {}\n * @param {Array} args in arguments of\n *\n */\n _runLifecycle(method, args) {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG) {\n console.debug(method, this._tagName);\n }\n let returnPromisses = [];\n if (this._isMixin) {\n return;\n }\n this._isMixin = true;\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (typeof mixin[method] === 'function') {\n returnPromisses.push(mixin[method].apply(this, args));\n }\n }\n return Promise.all(returnPromisses).then(() => {\n this._isMixin = false;\n });\n }\n onInit() {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG) {\n console.DEBUG(Array.apply(null, arguments), this._tagName);\n }\n }\n get parentController() {\n return this._parentController;\n }\n get childController() {\n return this._childController;\n }\n onLoad() {\n return this._runLifecycle('onLoad', arguments);\n }\n willShow() {\n return this._runLifecycle('willShow', arguments);\n }\n onRefresh() {\n return this._runLifecycle('onRefresh', arguments);\n }\n onRemove() {\n this._runLifecycle('onRemove', arguments);\n return true;\n }\n remove() {\n for (const model of this._models) {\n model.close();\n }\n let _childController = this._childController;\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n if (!cc.remove()) {\n return false;\n }\n }\n }\n }\n if (!this.onRemove || this.onRemove()) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_0__.allOff)(this);\n const c_name = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToCamelCase)(this._tagName);\n if (this._parentController._childController[c_name]) {\n let arr = this._parentController._childController[c_name];\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === this) {\n arr.splice(i, 1);\n }\n }\n }\n this.$container.remove();\n delete this;\n return true;\n }\n return false;\n }\n controller_name() {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToReadableName)(this._tagName);\n }\n addEvent(event, selector, handler) {\n this.getEvents();\n this._allEvents[event] = this._allEvents[event] || {};\n this._allEvents[event][selector] = handler;\n }\n getEvents() {\n if (this._allEvents) return this._allEvents;\n let allEvents = [];\n allEvents = allEvents.concat(this.events);\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (Array.isArray(mixin.events)) {\n allEvents = allEvents.concat(mixin.events);\n }\n }\n return this._allEvents = _.merge(...allEvents);\n }\n post(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.post(this, url, args);\n }\n get(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.get(this, url, args);\n }\n submitForm(form, url, method) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.submitFormAndUpdateView(this, form, url, method);\n }\n serverCall(methode, args) {\n let re = /sdc_view\\/([^/]+)/i;\n let app = this.contentUrl.match(re);\n if (!app || app.length < 2) {\n console.error('To use the serverCall function the contentUrl must be set: ' + this.name);\n return;\n }\n return (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__.callServer)(app[1], this._tagName, this.parsedContentUrl, methode, args);\n }\n\n /**\n *\n * @param model_name {string | Number}\n * @param model_query {Object}\n * @constructor\n */\n newModel(model_name, model_query = {}) {\n if (model_name instanceof Number && model_name.hasOwnProperty('load')) {\n return model_name.load(this);\n }\n const model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n this._models.push(model);\n return model;\n }\n\n /**\n *\n * @param model_name {string}\n * @param model_query {Object}\n * @param values {Object}\n * @constructor\n */\n updateModel(model_name, model_query = {}, values) {\n let model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n return model.load().then(() => {\n model.values |= values;\n model.save().then(() => {\n model.close();\n return model.values;\n });\n });\n }\n\n /**\n * Adapter to this.$container.find\n * @param {string} domSelector\n */\n find(domSelector) {\n return this.$container.find(domSelector);\n }\n refresh() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.refresh(this.$container, this);\n }\n reload() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reloadController(this);\n }\n reconcile($virtualNode, $realNode = null) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reconcile(this, $virtualNode, $realNode);\n }\n submitModelFormDistributor($form, e) {\n if (typeof this._submitModelForm === 'function') {\n return this._submitModelForm($form, e);\n }\n if (typeof this.submitModelForm === 'function') {\n return this.submitModelForm($form, e);\n }\n return this.defaultSubmitModelForm($form, e);\n }\n iterateAllChildren() {\n let _childController = this._childController;\n let res = [];\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n res.push(cc);\n res.push(...cc.iterateAllChildren());\n }\n }\n }\n return res;\n }\n\n /**\n * Model Form Events\n */\n defaultSubmitModelForm($form, e) {\n let p_list = [];\n if (!this._isMixin) {\n e.stopPropagation();\n e.preventDefault();\n let model = $form.data('model');\n const values = model.syncForm($form);\n for (let instance_value of values) {\n p_list.push(new Promise((resolve, reject) => {\n let prom;\n if (instance_value.pk !== null && instance_value.pk >= 0) {\n prom = model.save(instance_value.pk);\n } else {\n prom = model.create(instance_value);\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.clearErrorsInForm)($form);\n this.submit_model_form_success && this.submit_model_form_success(res[0]);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_success && controller.submit_model_form_success(res[0]);\n }\n resolve(res);\n }).catch(data => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.setErrorsInForm)($form, $(data.html));\n this.submit_model_form_error && this.submit_model_form_error(data);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_error && controller.submit_model_form_error(data);\n }\n reject(data);\n });\n }));\n }\n }\n return Promise.all(p_list).then(res => {\n return Object.assign({}, ...res.flat());\n });\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9BYnN0cmFjdFNEQy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBdUM7QUFDTDtBQUNJO0FBQ1U7QUFDcUU7QUFFOUcsTUFBTVMsV0FBVyxDQUFDO0VBQ3JCQyxXQUFXQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLEtBQUssR0FBR1AscURBQU0sQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQ1EsVUFBVSxHQUFHLEVBQUU7SUFDcEIsSUFBSSxDQUFDQyxhQUFhLEdBQUcsS0FBSztJQUMxQixJQUFJLENBQUNDLE1BQU0sR0FBRyxFQUFFO0lBQ2hCLElBQUksQ0FBQ0MsVUFBVSxHQUFHLEtBQUs7SUFDdkIsSUFBSSxDQUFDQyxZQUFZLEdBQUcsS0FBSztJQUN6QixJQUFJLENBQUNDLFVBQVUsR0FBRyxJQUFJO0lBRXRCLElBQUksQ0FBQ0MsVUFBVSxHQUFHLEVBQUU7SUFDcEIsSUFBSSxDQUFDQyxPQUFPLEdBQUcsRUFBRTs7SUFFakI7SUFDQSxJQUFJLENBQUNDLFFBQVEsR0FBRyxFQUFFO0lBQ2xCLElBQUksQ0FBQ0MsU0FBUyxHQUFHLE1BQU07TUFDbkJDLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQzdDLENBQUM7SUFDRDs7SUFHQTtBQUNSO0FBQ0E7QUFDQTtJQUNRLElBQUksQ0FBQ0MsT0FBTyxHQUFHLENBQUMsQ0FBQzs7SUFFakI7QUFDUjtBQUNBO0lBQ1EsSUFBSSxDQUFDQyxRQUFRLEdBQUcsRUFBRTs7SUFFbEI7QUFDUjtBQUNBO0lBQ1EsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7O0lBRTFCO0FBQ1I7QUFDQTtJQUNRLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUcsSUFBSTs7SUFFN0I7QUFDUjtBQUNBO0lBQ1EsSUFBSSxDQUFDQyxXQUFXLEdBQUcsS0FBSzs7SUFFeEI7QUFDUjtBQUNBO0lBQ1EsSUFBSSxDQUFDQyxVQUFVLEdBQUcsSUFBSTs7SUFFdEI7QUFDUjtBQUNBO0FBQ0E7SUFDUSxJQUFJLENBQUNDLFFBQVEsR0FBRyxLQUFLO0VBQ3pCOztFQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNJQyxhQUFhQSxDQUFDQyxNQUFNLEVBQUVDLElBQUksRUFBRTtJQUN4QixJQUFJaEMsNkNBQUcsQ0FBQ2lDLEtBQUssRUFBRTtNQUNYWixPQUFPLENBQUNhLEtBQUssQ0FBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQ1AsUUFBUSxDQUFDO0lBQ3hDO0lBRUEsSUFBSVcsZUFBZSxHQUFHLEVBQUU7SUFDeEIsSUFBSSxJQUFJLENBQUNOLFFBQVEsRUFBRTtNQUNmO0lBQ0o7SUFDQSxJQUFJLENBQUNBLFFBQVEsR0FBRyxJQUFJO0lBQ3BCLEtBQUssSUFBSU8sUUFBUSxJQUFJLElBQUksQ0FBQ2IsT0FBTyxFQUFFO01BQy9CLElBQUljLEtBQUssR0FBRyxJQUFJLENBQUNkLE9BQU8sQ0FBQ2EsUUFBUSxDQUFDO01BQ2xDLElBQUksT0FBT0MsS0FBSyxDQUFDTixNQUFNLENBQUMsS0FBSyxVQUFVLEVBQUU7UUFFckNJLGVBQWUsQ0FBQ0csSUFBSSxDQUFDRCxLQUFLLENBQUNOLE1BQU0sQ0FBQyxDQUFDUSxLQUFLLENBQUMsSUFBSSxFQUFFUCxJQUFJLENBQUMsQ0FBQztNQUN6RDtJQUNKO0lBRUEsT0FBT1EsT0FBTyxDQUFDQyxHQUFHLENBQUNOLGVBQWUsQ0FBQyxDQUFDTyxJQUFJLENBQUMsTUFBTTtNQUMzQyxJQUFJLENBQUNiLFFBQVEsR0FBRyxLQUFLO0lBQ3pCLENBQUMsQ0FBQztFQUNOO0VBRUFjLE1BQU1BLENBQUEsRUFBRztJQUNMLElBQUkzQyw2Q0FBRyxDQUFDaUMsS0FBSyxFQUFFO01BQ1haLE9BQU8sQ0FBQ1ksS0FBSyxDQUFDVyxLQUFLLENBQUNMLEtBQUssQ0FBQyxJQUFJLEVBQUVNLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQ3JCLFFBQVEsQ0FBQztJQUM5RDtFQUNKO0VBRUEsSUFBSXNCLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ25CLE9BQU8sSUFBSSxDQUFDcEIsaUJBQWlCO0VBQ2pDO0VBRUEsSUFBSXFCLGVBQWVBLENBQUEsRUFBRztJQUNsQixPQUFPLElBQUksQ0FBQ3RCLGdCQUFnQjtFQUNoQztFQUVBdUIsTUFBTUEsQ0FBQSxFQUFHO0lBQ0wsT0FBTyxJQUFJLENBQUNsQixhQUFhLENBQUMsUUFBUSxFQUFFZSxTQUFTLENBQUM7RUFDbEQ7RUFFQUksUUFBUUEsQ0FBQSxFQUFHO0lBQ1AsT0FBTyxJQUFJLENBQUNuQixhQUFhLENBQUMsVUFBVSxFQUFFZSxTQUFTLENBQUM7RUFDcEQ7RUFFQUssU0FBU0EsQ0FBQSxFQUFHO0lBQ1IsT0FBTyxJQUFJLENBQUNwQixhQUFhLENBQUMsV0FBVyxFQUFFZSxTQUFTLENBQUM7RUFDckQ7RUFFQU0sUUFBUUEsQ0FBQSxFQUFHO0lBQ1AsSUFBSSxDQUFDckIsYUFBYSxDQUFDLFVBQVUsRUFBRWUsU0FBUyxDQUFDO0lBQ3pDLE9BQU8sSUFBSTtFQUNmO0VBRUFPLE1BQU1BLENBQUEsRUFBRztJQUNMLEtBQUssTUFBTUMsS0FBSyxJQUFJLElBQUksQ0FBQ25DLE9BQU8sRUFBRTtNQUM5Qm1DLEtBQUssQ0FBQ0MsS0FBSyxDQUFDLENBQUM7SUFDakI7SUFDQSxJQUFJN0IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDQSxnQkFBZ0I7SUFDNUMsS0FBSyxJQUFJOEIsQ0FBQyxJQUFJOUIsZ0JBQWdCLEVBQUU7TUFDNUIsSUFBSUEsZ0JBQWdCLENBQUMrQixjQUFjLENBQUNELENBQUMsQ0FBQyxFQUFFO1FBQ3BDLEtBQUssSUFBSUUsRUFBRSxJQUFJaEMsZ0JBQWdCLENBQUM4QixDQUFDLENBQUMsRUFBRTtVQUNoQyxJQUFJLENBQUNFLEVBQUUsQ0FBQ0wsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUNkLE9BQU8sS0FBSztVQUNoQjtRQUNKO01BQ0o7SUFDSjtJQUVBLElBQUksQ0FBQyxJQUFJLENBQUNELFFBQVEsSUFBSSxJQUFJLENBQUNBLFFBQVEsQ0FBQyxDQUFDLEVBQUU7TUFDbkNwRCxzREFBTSxDQUFDLElBQUksQ0FBQztNQUNaLE1BQU0yRCxNQUFNLEdBQUdwRCxpRUFBa0IsQ0FBQyxJQUFJLENBQUNrQixRQUFRLENBQUM7TUFDaEQsSUFBSSxJQUFJLENBQUNFLGlCQUFpQixDQUFDRCxnQkFBZ0IsQ0FBQ2lDLE1BQU0sQ0FBQyxFQUFFO1FBQ2pELElBQUlDLEdBQUcsR0FBRyxJQUFJLENBQUNqQyxpQkFBaUIsQ0FBQ0QsZ0JBQWdCLENBQUNpQyxNQUFNLENBQUM7UUFDekQsS0FBSyxJQUFJSCxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdJLEdBQUcsQ0FBQ0MsTUFBTSxFQUFFTCxDQUFDLEVBQUUsRUFBRTtVQUNqQyxJQUFJSSxHQUFHLENBQUNKLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNqQkksR0FBRyxDQUFDRSxNQUFNLENBQUNOLENBQUMsRUFBRSxDQUFDLENBQUM7VUFDcEI7UUFDSjtNQUNKO01BRUEsSUFBSSxDQUFDM0IsVUFBVSxDQUFDd0IsTUFBTSxDQUFDLENBQUM7TUFDeEIsT0FBTyxJQUFJO01BQ1gsT0FBTyxJQUFJO0lBQ2Y7SUFFQSxPQUFPLEtBQUs7RUFDaEI7RUFFQVUsZUFBZUEsQ0FBQSxFQUFHO0lBQ2QsT0FBT3ZELG9FQUFxQixDQUFDLElBQUksQ0FBQ2lCLFFBQVEsQ0FBQztFQUMvQztFQUVBdUMsUUFBUUEsQ0FBQ0MsS0FBSyxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRTtJQUMvQixJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hCLElBQUksQ0FBQ25ELFVBQVUsQ0FBQ2dELEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ2hELFVBQVUsQ0FBQ2dELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUNoRCxVQUFVLENBQUNnRCxLQUFLLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLEdBQUdDLE9BQU87RUFDOUM7RUFFQUMsU0FBU0EsQ0FBQSxFQUFHO0lBQ1IsSUFBSSxJQUFJLENBQUNuRCxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUNBLFVBQVU7SUFDM0MsSUFBSW9ELFNBQVMsR0FBRyxFQUFFO0lBQ2xCQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQ3hELE1BQU0sQ0FBQztJQUN6QyxLQUFLLElBQUl1QixRQUFRLElBQUksSUFBSSxDQUFDYixPQUFPLEVBQUU7TUFDL0IsSUFBSWMsS0FBSyxHQUFHLElBQUksQ0FBQ2QsT0FBTyxDQUFDYSxRQUFRLENBQUM7TUFDbEMsSUFBSVEsS0FBSyxDQUFDMEIsT0FBTyxDQUFDakMsS0FBSyxDQUFDeEIsTUFBTSxDQUFDLEVBQUU7UUFDN0J1RCxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDaEMsS0FBSyxDQUFDeEIsTUFBTSxDQUFDO01BQzlDO0lBQ0o7SUFHQSxPQUFRLElBQUksQ0FBQ0csVUFBVSxHQUFHdUQsQ0FBQyxDQUFDQyxLQUFLLENBQUMsR0FBR0osU0FBUyxDQUFDO0VBQ25EO0VBRUFLLElBQUlBLENBQUNDLEdBQUcsRUFBRTFDLElBQUksRUFBRTtJQUNaLE9BQU9oQyw2Q0FBRyxDQUFDeUUsSUFBSSxDQUFDLElBQUksRUFBRUMsR0FBRyxFQUFFMUMsSUFBSSxDQUFDO0VBQ3BDO0VBRUEyQyxHQUFHQSxDQUFDRCxHQUFHLEVBQUUxQyxJQUFJLEVBQUU7SUFDWCxPQUFPaEMsNkNBQUcsQ0FBQzJFLEdBQUcsQ0FBQyxJQUFJLEVBQUVELEdBQUcsRUFBRTFDLElBQUksQ0FBQztFQUNuQztFQUVBNEMsVUFBVUEsQ0FBQ0MsSUFBSSxFQUFFSCxHQUFHLEVBQUUzQyxNQUFNLEVBQUU7SUFDMUIsT0FBTy9CLDZDQUFHLENBQUM4RSx1QkFBdUIsQ0FBQyxJQUFJLEVBQUVELElBQUksRUFBRUgsR0FBRyxFQUFFM0MsTUFBTSxDQUFDO0VBQy9EO0VBRUFnRCxVQUFVQSxDQUFDQyxPQUFPLEVBQUVoRCxJQUFJLEVBQUU7SUFDdEIsSUFBSWlELEVBQUUsR0FBRyxvQkFBb0I7SUFDN0IsSUFBSWpGLEdBQUcsR0FBRyxJQUFJLENBQUNXLFVBQVUsQ0FBQ3VFLEtBQUssQ0FBQ0QsRUFBRSxDQUFDO0lBQ25DLElBQUksQ0FBQ2pGLEdBQUcsSUFBSUEsR0FBRyxDQUFDNEQsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUN4QnZDLE9BQU8sQ0FBQzhELEtBQUssQ0FBQyw2REFBNkQsR0FBRyxJQUFJLENBQUNDLElBQUksQ0FBQztNQUN4RjtJQUNKO0lBRUEsT0FBT2xGLCtEQUFVLENBQUNGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUN3QixRQUFRLEVBQUUsSUFBSSxDQUFDNkQsZ0JBQWdCLEVBQUVMLE9BQU8sRUFBRWhELElBQUksQ0FBQztFQUNsRjs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSXNELFFBQVFBLENBQUNDLFVBQVUsRUFBRUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ25DLElBQUdELFVBQVUsWUFBWUUsTUFBTSxJQUFJRixVQUFVLENBQUMvQixjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7TUFDbEUsT0FBTytCLFVBQVUsQ0FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQztJQUVBLE1BQU1yQyxLQUFLLEdBQUcsSUFBSXBELGlEQUFLLENBQUNzRixVQUFVLEVBQUVDLFdBQVcsQ0FBQztJQUNoRCxJQUFJLENBQUN0RSxPQUFPLENBQUNvQixJQUFJLENBQUNlLEtBQUssQ0FBQztJQUN4QixPQUFPQSxLQUFLO0VBQ2hCOztFQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0lzQyxXQUFXQSxDQUFDSixVQUFVLEVBQUVDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRUksTUFBTSxFQUFFO0lBQzlDLElBQUl2QyxLQUFLLEdBQUcsSUFBSXBELGlEQUFLLENBQUNzRixVQUFVLEVBQUVDLFdBQVcsQ0FBQztJQUM5QyxPQUFPbkMsS0FBSyxDQUFDcUMsSUFBSSxDQUFDLENBQUMsQ0FBQ2hELElBQUksQ0FBQyxNQUFJO01BQ3pCVyxLQUFLLENBQUN1QyxNQUFNLElBQUlBLE1BQU07TUFDdEJ2QyxLQUFLLENBQUN3QyxJQUFJLENBQUMsQ0FBQyxDQUFDbkQsSUFBSSxDQUFDLE1BQUs7UUFDbkJXLEtBQUssQ0FBQ0MsS0FBSyxDQUFDLENBQUM7UUFDYixPQUFPRCxLQUFLLENBQUN1QyxNQUFNO01BQ3ZCLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztFQUNOOztFQUVBO0FBQ0o7QUFDQTtBQUNBO0VBQ0lFLElBQUlBLENBQUNDLFdBQVcsRUFBRTtJQUNkLE9BQU8sSUFBSSxDQUFDbkUsVUFBVSxDQUFDa0UsSUFBSSxDQUFDQyxXQUFXLENBQUM7RUFDNUM7RUFFQUMsT0FBT0EsQ0FBQSxFQUFHO0lBQ04sT0FBT2hHLDZDQUFHLENBQUNnRyxPQUFPLENBQUMsSUFBSSxDQUFDcEUsVUFBVSxFQUFFLElBQUksQ0FBQztFQUM3QztFQUVBcUUsTUFBTUEsQ0FBQSxFQUFHO0lBQ0wsT0FBT2pHLDZDQUFHLENBQUNrRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7RUFDckM7RUFFQUMsU0FBU0EsQ0FBQ0MsWUFBWSxFQUFFQyxTQUFTLEdBQUcsSUFBSSxFQUFFO0lBQ3RDLE9BQU9yRyw2Q0FBRyxDQUFDbUcsU0FBUyxDQUFDLElBQUksRUFBRUMsWUFBWSxFQUFFQyxTQUFTLENBQUM7RUFDdkQ7RUFFQUMsMEJBQTBCQSxDQUFDQyxLQUFLLEVBQUVDLENBQUMsRUFBRTtJQUNqQyxJQUFJLE9BQU8sSUFBSSxDQUFDQyxnQkFBZ0IsS0FBSyxVQUFVLEVBQUU7TUFDN0MsT0FBTyxJQUFJLENBQUNBLGdCQUFnQixDQUFDRixLQUFLLEVBQUVDLENBQUMsQ0FBQztJQUMxQztJQUNBLElBQUksT0FBTyxJQUFJLENBQUNFLGVBQWUsS0FBSyxVQUFVLEVBQUU7TUFDNUMsT0FBTyxJQUFJLENBQUNBLGVBQWUsQ0FBQ0gsS0FBSyxFQUFFQyxDQUFDLENBQUM7SUFDekM7SUFDQSxPQUFPLElBQUksQ0FBQ0csc0JBQXNCLENBQUNKLEtBQUssRUFBRUMsQ0FBQyxDQUFDO0VBQ2hEO0VBRUFJLGtCQUFrQkEsQ0FBQSxFQUFHO0lBQ2pCLElBQUluRixnQkFBZ0IsR0FBRyxJQUFJLENBQUNBLGdCQUFnQjtJQUM1QyxJQUFJb0YsR0FBRyxHQUFHLEVBQUU7SUFDWixLQUFLLElBQUl0RCxDQUFDLElBQUk5QixnQkFBZ0IsRUFBRTtNQUM1QixJQUFJQSxnQkFBZ0IsQ0FBQytCLGNBQWMsQ0FBQ0QsQ0FBQyxDQUFDLEVBQUU7UUFDcEMsS0FBSyxJQUFJRSxFQUFFLElBQUloQyxnQkFBZ0IsQ0FBQzhCLENBQUMsQ0FBQyxFQUFFO1VBQ2hDc0QsR0FBRyxDQUFDdkUsSUFBSSxDQUFDbUIsRUFBRSxDQUFDO1VBQ1pvRCxHQUFHLENBQUN2RSxJQUFJLENBQUMsR0FBR21CLEVBQUUsQ0FBQ21ELGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUN4QztNQUNKO0lBQ0o7SUFDQSxPQUFPQyxHQUFHO0VBQ2Q7O0VBRUE7QUFDSjtBQUNBO0VBQ0lGLHNCQUFzQkEsQ0FBQ0osS0FBSyxFQUFFQyxDQUFDLEVBQUU7SUFDN0IsSUFBSU0sTUFBTSxHQUFHLEVBQUU7SUFDZixJQUFJLENBQUMsSUFBSSxDQUFDakYsUUFBUSxFQUFFO01BQ2hCMkUsQ0FBQyxDQUFDTyxlQUFlLENBQUMsQ0FBQztNQUNuQlAsQ0FBQyxDQUFDUSxjQUFjLENBQUMsQ0FBQztNQUNsQixJQUFJM0QsS0FBSyxHQUFHa0QsS0FBSyxDQUFDVSxJQUFJLENBQUMsT0FBTyxDQUFDO01BQy9CLE1BQU1yQixNQUFNLEdBQUd2QyxLQUFLLENBQUM2RCxRQUFRLENBQUNYLEtBQUssQ0FBQztNQUNwQyxLQUFLLElBQUlZLGNBQWMsSUFBSXZCLE1BQU0sRUFBRTtRQUMvQmtCLE1BQU0sQ0FBQ3hFLElBQUksQ0FBQyxJQUFJRSxPQUFPLENBQUMsQ0FBQzRFLE9BQU8sRUFBRUMsTUFBTSxLQUFLO1VBQ3pDLElBQUlDLElBQUk7VUFDUixJQUFJSCxjQUFjLENBQUNJLEVBQUUsS0FBSyxJQUFJLElBQUlKLGNBQWMsQ0FBQ0ksRUFBRSxJQUFJLENBQUMsRUFBRTtZQUN0REQsSUFBSSxHQUFHakUsS0FBSyxDQUFDd0MsSUFBSSxDQUFDc0IsY0FBYyxDQUFDSSxFQUFFLENBQUM7VUFDeEMsQ0FBQyxNQUFNO1lBQ0hELElBQUksR0FBR2pFLEtBQUssQ0FBQ21FLE1BQU0sQ0FBQ0wsY0FBYyxDQUFDO1VBQ3ZDO1VBRUFHLElBQUksQ0FBQzVFLElBQUksQ0FBRW1FLEdBQUcsSUFBSztZQUNmeEcsZ0VBQWlCLENBQUNrRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDa0IseUJBQXlCLElBQUksSUFBSSxDQUFDQSx5QkFBeUIsQ0FBQ1osR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLEtBQUksTUFBTWEsVUFBVSxJQUFJLElBQUksQ0FBQ2Qsa0JBQWtCLENBQUMsQ0FBQyxFQUFFO2NBQy9DYyxVQUFVLENBQUNELHlCQUF5QixJQUFJQyxVQUFVLENBQUNELHlCQUF5QixDQUFDWixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEY7WUFDQU8sT0FBTyxDQUFDUCxHQUFHLENBQUM7VUFDaEIsQ0FBQyxDQUFDLENBQUNjLEtBQUssQ0FBRVYsSUFBSSxJQUFLO1lBQ2Y3Ryw4REFBZSxDQUFDbUcsS0FBSyxFQUFFcUIsQ0FBQyxDQUFDWCxJQUFJLENBQUNZLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQ0MsdUJBQXVCLElBQUksSUFBSSxDQUFDQSx1QkFBdUIsQ0FBQ2IsSUFBSSxDQUFDO1lBQ2xFLEtBQUksTUFBTVMsVUFBVSxJQUFJLElBQUksQ0FBQ2Qsa0JBQWtCLENBQUMsQ0FBQyxFQUFFO2NBQy9DYyxVQUFVLENBQUNJLHVCQUF1QixJQUFJSixVQUFVLENBQUNJLHVCQUF1QixDQUFDYixJQUFJLENBQUM7WUFDbEY7WUFDQUksTUFBTSxDQUFDSixJQUFJLENBQUM7VUFDaEIsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7TUFDUDtJQUNKO0lBRUEsT0FBT3pFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDcUUsTUFBTSxDQUFDLENBQUNwRSxJQUFJLENBQUVtRSxHQUFHLElBQUs7TUFDckMsT0FBT2tCLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUduQixHQUFHLENBQUNvQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztFQUNOO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zZGNfY2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvQWJzdHJhY3RTREMuanM/ZDdmNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FsbE9mZn0gZnJvbSBcIi4vc2RjX2V2ZW50cy5qc1wiO1xuaW1wb3J0IHthcHB9IGZyb20gXCIuL3NkY19tYWluLmpzXCI7XG5pbXBvcnQge01vZGVsfSBmcm9tIFwiLi9zZGNfc29ja2V0LmpzXCI7XG5pbXBvcnQge2NhbGxTZXJ2ZXJ9IGZyb20gXCIuL3NkY19zZXJ2ZXJfY2FsbC5qc1wiO1xuaW1wb3J0IHt1dWlkdjQsIHNldEVycm9yc0luRm9ybSwgY2xlYXJFcnJvcnNJbkZvcm0sIHRhZ05hbWVUb0NhbWVsQ2FzZSwgdGFnTmFtZVRvUmVhZGFibGVOYW1lfSBmcm9tIFwiLi9zZGNfdXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0U0RDIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fdXVpZCA9IHV1aWR2NCgpO1xuICAgICAgICB0aGlzLmNvbnRlbnRVcmwgPSAnJztcbiAgICAgICAgdGhpcy5jb250ZW50UmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgICAgIHRoaXMubG9hZF9hc3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc0V2ZW50c1NldCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9hbGxFdmVudHMgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX3VybFBhcmFtcyA9IFtdO1xuICAgICAgICB0aGlzLl9tb2RlbHMgPSBbXTtcblxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0gT2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIHRoaXMuX2Nzc1VybHMgPSBbXTtcbiAgICAgICAgdGhpcy5hZnRlclNob3cgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2FmdGVyU2hvdyBpcyBkZXByZWNhdGVkISEnKVxuICAgICAgICB9O1xuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLSBFbmQgb2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge3tzdHJpbmc6IEFic3RyYWN0U0RDfX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX21peGlucyA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fdGFnTmFtZSA9ICcnO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7e3N0cmluZzpBYnN0cmFjdFNEQ319XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9jaGlsZENvbnRyb2xsZXIgPSB7fTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge0Fic3RyYWN0U0RDfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fcGFyZW50Q29udHJvbGxlciA9IG51bGw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fb25Mb2FkRG9uZSA9IGZhbHNlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7anF1ZXJ5fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy4kY29udGFpbmVyID0gbnVsbDtcblxuICAgICAgICAvKipcbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIG11c3QgYmUgaW4ge31cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIGluIGFyZ3VtZW50cyBvZlxuICAgICAqXG4gICAgICovXG4gICAgX3J1bkxpZmVjeWNsZShtZXRob2QsIGFyZ3MpIHtcbiAgICAgICAgaWYgKGFwcC5ERUJVRykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhtZXRob2QsIHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJldHVyblByb21pc3NlcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5faXNNaXhpbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzTWl4aW4gPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgICAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1peGluW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcblxuICAgICAgICAgICAgICAgIHJldHVyblByb21pc3Nlcy5wdXNoKG1peGluW21ldGhvZF0uYXBwbHkodGhpcywgYXJncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJldHVyblByb21pc3NlcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSW5pdCgpIHtcbiAgICAgICAgaWYgKGFwcC5ERUJVRykge1xuICAgICAgICAgICAgY29uc29sZS5ERUJVRyhBcnJheS5hcHBseShudWxsLCBhcmd1bWVudHMpLCB0aGlzLl90YWdOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBwYXJlbnRDb250cm9sbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udHJvbGxlcjtcbiAgICB9XG5cbiAgICBnZXQgY2hpbGRDb250cm9sbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgIH1cblxuICAgIG9uTG9hZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnb25Mb2FkJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICB3aWxsU2hvdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnd2lsbFNob3cnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIG9uUmVmcmVzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnb25SZWZyZXNoJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBvblJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5fcnVuTGlmZWN5Y2xlKCdvblJlbW92ZScsIGFyZ3VtZW50cylcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMuX21vZGVscykge1xuICAgICAgICAgICAgbW9kZWwuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgX2NoaWxkQ29udHJvbGxlciA9IHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgICAgICAgZm9yIChsZXQgaSBpbiBfY2hpbGRDb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpZiAoX2NoaWxkQ29udHJvbGxlci5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNjIG9mIF9jaGlsZENvbnRyb2xsZXJbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYy5yZW1vdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9uUmVtb3ZlIHx8IHRoaXMub25SZW1vdmUoKSkge1xuICAgICAgICAgICAgYWxsT2ZmKHRoaXMpO1xuICAgICAgICAgICAgY29uc3QgY19uYW1lID0gdGFnTmFtZVRvQ2FtZWxDYXNlKHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFyciA9IHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnJbaV0gPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29udHJvbGxlcl9uYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFnTmFtZVRvUmVhZGFibGVOYW1lKHRoaXMuX3RhZ05hbWUpO1xuICAgIH1cblxuICAgIGFkZEV2ZW50KGV2ZW50LCBzZWxlY3RvciwgaGFuZGxlcikge1xuICAgICAgICB0aGlzLmdldEV2ZW50cygpO1xuICAgICAgICB0aGlzLl9hbGxFdmVudHNbZXZlbnRdID0gdGhpcy5fYWxsRXZlbnRzW2V2ZW50XSB8fCB7fTtcbiAgICAgICAgdGhpcy5fYWxsRXZlbnRzW2V2ZW50XVtzZWxlY3Rvcl0gPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGdldEV2ZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FsbEV2ZW50cykgcmV0dXJuIHRoaXMuX2FsbEV2ZW50cztcbiAgICAgICAgbGV0IGFsbEV2ZW50cyA9IFtdO1xuICAgICAgICBhbGxFdmVudHMgPSBhbGxFdmVudHMuY29uY2F0KHRoaXMuZXZlbnRzKTtcbiAgICAgICAgZm9yIChsZXQgbWl4aW5LZXkgaW4gdGhpcy5fbWl4aW5zKSB7XG4gICAgICAgICAgICBsZXQgbWl4aW4gPSB0aGlzLl9taXhpbnNbbWl4aW5LZXldO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWl4aW4uZXZlbnRzKSkge1xuICAgICAgICAgICAgICAgIGFsbEV2ZW50cyA9IGFsbEV2ZW50cy5jb25jYXQobWl4aW4uZXZlbnRzKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKHRoaXMuX2FsbEV2ZW50cyA9IF8ubWVyZ2UoLi4uYWxsRXZlbnRzKSk7XG4gICAgfVxuXG4gICAgcG9zdCh1cmwsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5wb3N0KHRoaXMsIHVybCwgYXJncyk7XG4gICAgfVxuXG4gICAgZ2V0KHVybCwgYXJncykge1xuICAgICAgICByZXR1cm4gYXBwLmdldCh0aGlzLCB1cmwsIGFyZ3MpO1xuICAgIH1cblxuICAgIHN1Ym1pdEZvcm0oZm9ybSwgdXJsLCBtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5zdWJtaXRGb3JtQW5kVXBkYXRlVmlldyh0aGlzLCBmb3JtLCB1cmwsIG1ldGhvZCk7XG4gICAgfVxuXG4gICAgc2VydmVyQ2FsbChtZXRob2RlLCBhcmdzKSB7XG4gICAgICAgIGxldCByZSA9IC9zZGNfdmlld1xcLyhbXi9dKykvaTtcbiAgICAgICAgbGV0IGFwcCA9IHRoaXMuY29udGVudFVybC5tYXRjaChyZSk7XG4gICAgICAgIGlmICghYXBwIHx8IGFwcC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUbyB1c2UgdGhlIHNlcnZlckNhbGwgZnVuY3Rpb24gdGhlIGNvbnRlbnRVcmwgbXVzdCBiZSBzZXQ6ICcgKyB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbGxTZXJ2ZXIoYXBwWzFdLCB0aGlzLl90YWdOYW1lLCB0aGlzLnBhcnNlZENvbnRlbnRVcmwsIG1ldGhvZGUsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIG1vZGVsX25hbWUge3N0cmluZyB8IE51bWJlcn1cbiAgICAgKiBAcGFyYW0gbW9kZWxfcXVlcnkge09iamVjdH1cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBuZXdNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSA9IHt9KSB7XG4gICAgICAgIGlmKG1vZGVsX25hbWUgaW5zdGFuY2VvZiBOdW1iZXIgJiYgbW9kZWxfbmFtZS5oYXNPd25Qcm9wZXJ0eSgnbG9hZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kZWxfbmFtZS5sb2FkKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWwobW9kZWxfbmFtZSwgbW9kZWxfcXVlcnkpO1xuICAgICAgICB0aGlzLl9tb2RlbHMucHVzaChtb2RlbCk7XG4gICAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtb2RlbF9uYW1lIHtzdHJpbmd9XG4gICAgICogQHBhcmFtIG1vZGVsX3F1ZXJ5IHtPYmplY3R9XG4gICAgICogQHBhcmFtIHZhbHVlcyB7T2JqZWN0fVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIHVwZGF0ZU1vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5ID0ge30sIHZhbHVlcykge1xuICAgICAgICBsZXQgbW9kZWwgPSBuZXcgTW9kZWwobW9kZWxfbmFtZSwgbW9kZWxfcXVlcnkpO1xuICAgICAgICByZXR1cm4gbW9kZWwubG9hZCgpLnRoZW4oKCk9PntcbiAgICAgICAgICAgIG1vZGVsLnZhbHVlcyB8PSB2YWx1ZXM7XG4gICAgICAgICAgICBtb2RlbC5zYXZlKCkudGhlbigoKT0+IHtcbiAgICAgICAgICAgICAgICBtb2RlbC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlbC52YWx1ZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGFwdGVyIHRvIHRoaXMuJGNvbnRhaW5lci5maW5kXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRvbVNlbGVjdG9yXG4gICAgICovXG4gICAgZmluZChkb21TZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyLmZpbmQoZG9tU2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHJlZnJlc2goKSB7XG4gICAgICAgIHJldHVybiBhcHAucmVmcmVzaCh0aGlzLiRjb250YWluZXIsIHRoaXMpO1xuICAgIH1cblxuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5yZWxvYWRDb250cm9sbGVyKHRoaXMpO1xuICAgIH1cblxuICAgIHJlY29uY2lsZSgkdmlydHVhbE5vZGUsICRyZWFsTm9kZSA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5yZWNvbmNpbGUodGhpcywgJHZpcnR1YWxOb2RlLCAkcmVhbE5vZGUpO1xuICAgIH1cblxuICAgIHN1Ym1pdE1vZGVsRm9ybURpc3RyaWJ1dG9yKCRmb3JtLCBlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fc3VibWl0TW9kZWxGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0TW9kZWxGb3JtKCRmb3JtLCBlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3VibWl0TW9kZWxGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRTdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpO1xuICAgIH1cblxuICAgIGl0ZXJhdGVBbGxDaGlsZHJlbigpIHtcbiAgICAgICAgbGV0IF9jaGlsZENvbnRyb2xsZXIgPSB0aGlzLl9jaGlsZENvbnRyb2xsZXI7XG4gICAgICAgIGxldCByZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSBpbiBfY2hpbGRDb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpZiAoX2NoaWxkQ29udHJvbGxlci5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNjIG9mIF9jaGlsZENvbnRyb2xsZXJbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goY2MpO1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaCguLi5jYy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW9kZWwgRm9ybSBFdmVudHNcbiAgICAgKi9cbiAgICBkZWZhdWx0U3VibWl0TW9kZWxGb3JtKCRmb3JtLCBlKSB7XG4gICAgICAgIGxldCBwX2xpc3QgPSBbXTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc01peGluKSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IG1vZGVsID0gJGZvcm0uZGF0YSgnbW9kZWwnKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IG1vZGVsLnN5bmNGb3JtKCRmb3JtKTtcbiAgICAgICAgICAgIGZvciAobGV0IGluc3RhbmNlX3ZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgICAgIHBfbGlzdC5wdXNoKG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb207XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZV92YWx1ZS5wayAhPT0gbnVsbCAmJiBpbnN0YW5jZV92YWx1ZS5wayA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tID0gbW9kZWwuc2F2ZShpbnN0YW5jZV92YWx1ZS5wayk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tID0gbW9kZWwuY3JlYXRlKGluc3RhbmNlX3ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByb20udGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yc0luRm9ybSgkZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MgJiYgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzKHJlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IoY29uc3QgY29udHJvbGxlciBvZiB0aGlzLml0ZXJhdGVBbGxDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzICYmIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyhyZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JzSW5Gb3JtKCRmb3JtLCAkKGRhdGEuaHRtbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvciAmJiB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGNvbnRyb2xsZXIgb2YgdGhpcy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IgJiYgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBfbGlzdCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgLi4ucmVzLmZsYXQoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXSwibmFtZXMiOlsiYWxsT2ZmIiwiYXBwIiwiTW9kZWwiLCJjYWxsU2VydmVyIiwidXVpZHY0Iiwic2V0RXJyb3JzSW5Gb3JtIiwiY2xlYXJFcnJvcnNJbkZvcm0iLCJ0YWdOYW1lVG9DYW1lbENhc2UiLCJ0YWdOYW1lVG9SZWFkYWJsZU5hbWUiLCJBYnN0cmFjdFNEQyIsImNvbnN0cnVjdG9yIiwiX3V1aWQiLCJjb250ZW50VXJsIiwiY29udGVudFJlbG9hZCIsImV2ZW50cyIsImxvYWRfYXN5bmMiLCJfaXNFdmVudHNTZXQiLCJfYWxsRXZlbnRzIiwiX3VybFBhcmFtcyIsIl9tb2RlbHMiLCJfY3NzVXJscyIsImFmdGVyU2hvdyIsImNvbnNvbGUiLCJ3YXJuIiwiX21peGlucyIsIl90YWdOYW1lIiwiX2NoaWxkQ29udHJvbGxlciIsIl9wYXJlbnRDb250cm9sbGVyIiwiX29uTG9hZERvbmUiLCIkY29udGFpbmVyIiwiX2lzTWl4aW4iLCJfcnVuTGlmZWN5Y2xlIiwibWV0aG9kIiwiYXJncyIsIkRFQlVHIiwiZGVidWciLCJyZXR1cm5Qcm9taXNzZXMiLCJtaXhpbktleSIsIm1peGluIiwicHVzaCIsImFwcGx5IiwiUHJvbWlzZSIsImFsbCIsInRoZW4iLCJvbkluaXQiLCJBcnJheSIsImFyZ3VtZW50cyIsInBhcmVudENvbnRyb2xsZXIiLCJjaGlsZENvbnRyb2xsZXIiLCJvbkxvYWQiLCJ3aWxsU2hvdyIsIm9uUmVmcmVzaCIsIm9uUmVtb3ZlIiwicmVtb3ZlIiwibW9kZWwiLCJjbG9zZSIsImkiLCJoYXNPd25Qcm9wZXJ0eSIsImNjIiwiY19uYW1lIiwiYXJyIiwibGVuZ3RoIiwic3BsaWNlIiwiY29udHJvbGxlcl9uYW1lIiwiYWRkRXZlbnQiLCJldmVudCIsInNlbGVjdG9yIiwiaGFuZGxlciIsImdldEV2ZW50cyIsImFsbEV2ZW50cyIsImNvbmNhdCIsImlzQXJyYXkiLCJfIiwibWVyZ2UiLCJwb3N0IiwidXJsIiwiZ2V0Iiwic3VibWl0Rm9ybSIsImZvcm0iLCJzdWJtaXRGb3JtQW5kVXBkYXRlVmlldyIsInNlcnZlckNhbGwiLCJtZXRob2RlIiwicmUiLCJtYXRjaCIsImVycm9yIiwibmFtZSIsInBhcnNlZENvbnRlbnRVcmwiLCJuZXdNb2RlbCIsIm1vZGVsX25hbWUiLCJtb2RlbF9xdWVyeSIsIk51bWJlciIsImxvYWQiLCJ1cGRhdGVNb2RlbCIsInZhbHVlcyIsInNhdmUiLCJmaW5kIiwiZG9tU2VsZWN0b3IiLCJyZWZyZXNoIiwicmVsb2FkIiwicmVsb2FkQ29udHJvbGxlciIsInJlY29uY2lsZSIsIiR2aXJ0dWFsTm9kZSIsIiRyZWFsTm9kZSIsInN1Ym1pdE1vZGVsRm9ybURpc3RyaWJ1dG9yIiwiJGZvcm0iLCJlIiwiX3N1Ym1pdE1vZGVsRm9ybSIsInN1Ym1pdE1vZGVsRm9ybSIsImRlZmF1bHRTdWJtaXRNb2RlbEZvcm0iLCJpdGVyYXRlQWxsQ2hpbGRyZW4iLCJyZXMiLCJwX2xpc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImRhdGEiLCJzeW5jRm9ybSIsImluc3RhbmNlX3ZhbHVlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb20iLCJwayIsImNyZWF0ZSIsInN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MiLCJjb250cm9sbGVyIiwiY2F0Y2giLCIkIiwiaHRtbCIsInN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yIiwiT2JqZWN0IiwiYXNzaWduIiwiZmxhdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\n");
|
28
28
|
|
29
29
|
/***/ }),
|
30
30
|
|
@@ -34,7 +34,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
34
34
|
\************************************************/
|
35
35
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
36
36
|
|
37
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Global: () => (/* binding */ Global),\n/* harmony export */ controllerFactory: () => (/* binding */ controllerFactory),\n/* harmony export */ controllerList: () => (/* binding */ controllerList),\n/* harmony export */ runControlFlowFunctions: () => (/* binding */ runControlFlowFunctions),\n/* harmony export */ runRefresh: () => (/* binding */ runRefresh),\n/* harmony export */ tagList: () => (/* binding */ tagList)\n/* harmony export */ });\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n/* harmony import */ var _sdc_params_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_params.js */ \"./src/simpleDomControl/sdc_params.js\");\n\n\n\nlet Global = {};\nlet controllerList = {};\nfunction tagList() {\n return Object.keys(controllerList);\n}\nfunction prepareMixins(superTagNameList, tagName) {\n superTagNameList = superTagNameList.concat(controllerList[tagName][1]);\n superTagNameList = superTagNameList.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n let hasAdded = true;\n while (hasAdded) {\n hasAdded = false;\n for (let tag of superTagNameList) {\n for (let newTag of controllerList[tag][1]) {\n if (!superTagNameList.includes(newTag)) {\n superTagNameList.push(newTag);\n hasAdded = true;\n }\n }\n }\n }\n return superTagNameList;\n}\n\n/**\n * setParentController sets the parent controller as property: 'parentController'\n * to the child controller. Also, it adds the child controller to the property list:\n * 'parentController' to the parent controller\n *\n * @param {AbstractSDC} parentController - js controller instance, controller of the parent DOM of the controllers DOM\n * @param {AbstractSDC} controller - js controller instance\n * @return {AbstractSDC} - parentController\n */\nfunction setParentController(parentController, controller) {\n if (parentController) {\n let controllerName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(controller._tagName);\n if (!parentController._childController[controllerName]) {\n parentController._childController[controllerName] = [];\n }\n parentController._childController[controllerName].push(controller);\n }\n return controller._parentController = parentController;\n}\n\n/**\n * controllerFactoryInstance it generates a controller instance\n * depending if the controller is registered as a global controller. It sets the\n * $container object to the jQuery representation of the tag.\n *\n * It handles the init parameter by the data values of the DOM.\n *\n * It handles the super extensions.\n *\n * @param {AbstractSDC} parentController - Controller of the parent DOM\n * @param {jquery} $element - The current DOM jQuery\n * @param {string} tagName - the registered tag name of the current DOM\n * @param {string} superTagNameList - tag names of super controller\n * @return {AbstractSDC} - new Controller\n */\nfunction controllerFactoryInstance(parentController, $element, tagName, superTagNameList) {\n let mixinControllerClass = [];\n superTagNameList = prepareMixins(superTagNameList, tagName);\n for (let superTagName of superTagNameList) {\n mixinControllerClass.push(controllerList[superTagName][0]);\n }\n let controllerClass = controllerList[tagName][0];\n let controller = new ((0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.agileAggregation)(controllerClass, ...mixinControllerClass))();\n controller._tagName = tagName;\n setParentController(parentController, controller);\n controller.$container = $element;\n (0,_sdc_params_js__WEBPACK_IMPORTED_MODULE_2__.runOnInitWithParameter)($element, controller);\n return controller;\n}\n\n/**\n * controllerFactory it either generates a controller or takes a globe instance\n * depending if the controller is registered as a global controller. It sets the\n * $container object to the jQuery representation of the tag.\n *\n * Remember Global controller can not have a super controller!\n *\n * @param {AbstractSDC} parentController - Controller of the parent DOM\n * @param {jquery} $element - The current DOM jQuery\n * @param {string} tagName - the registered tag name of the current DOM\n * @param {string} superTagNameList - tag names of super controller\n * @return {AbstractSDC} - new Controller\n */\nfunction controllerFactory(parentController, $element, tagName, superTagNameList) {\n let gTagName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName);\n if (Global[gTagName]) {\n let controller = Global[gTagName];\n setParentController(parentController, controller);\n controller.$container = $element;\n return controller;\n }\n return controllerFactoryInstance(parentController, $element, tagName, superTagNameList);\n}\n\n/**\n * runControllerShow first runs onLoad and fill content for all sub\n * controller. Only if all the sub controller are loaded the willShow\n * control flow function gets called.\n *\n * @param {AbstractSDC} controller - js controller instance\n * @param {jquery} $html - jQuery loaded content\n * @return {Promise<*>} - return of the onLoad function\n */\nfunction runControllerShow(controller, $html) {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.runControllerFillContent)(controller, $html).then(function (args) {\n args = args || true;\n if (controller.willShow) {\n let loadPromiseOrContent = controller.willShow();\n if (loadPromiseOrContent instanceof Promise) {\n return loadPromiseOrContent.then(function () {\n return args;\n });\n }\n }\n return args;\n });\n}\n\n/**\n * runControllerLoad Calls the onLoad function of the controller.\n * This function is called before the HTML is set to the page.\n * The parameter is a list of children of the tag and the registered tag.\n *\n * @param {AbstractSDC} controller - js controller instance\n * @return {Promise<*>} - return of the onLoad function\n */\nfunction runControllerLoad(controller) {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.loadFilesFromController)(controller).then(html => {\n if (!controller.onLoad || controller._onLoadDone) {\n return html;\n }\n controller._onLoadDone = true;\n let loadPromise = controller.onLoad(html);\n return (loadPromise || (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.promiseDummyFactory)()).then(() => {\n return html;\n });\n });\n}\n\n/**\n * runControlFlowFunctions runs the control flow functions:\n * 1. onLoad()\n * 2. fill content\n * 3. willShow(dom parameter)\n * 4. refresh()\n *\n * @param controller\n */\nfunction runControlFlowFunctions(controller) {\n const prom_controller = runControllerLoad(controller).then(function ($html) {\n return runControllerShow(controller, $html);\n }).then(() => {\n return runRefresh(controller);\n }).catch(function ($html) {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.runControllerFillContent)(controller, $html);\n });\n if (controller.load_async) {\n return Promise.resolve();\n }\n return prom_controller;\n}\n\n/**\n *\n * @param {AbstractSDC} controller\n */\nfunction runRefresh(controller) {\n return controller.refresh && controller.refresh();\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFLLENBQUMsVUFBVWQsS0FBSyxFQUFFO0lBQ3RCLE9BQU9yQyxzRUFBd0IsQ0FBQ3VCLFVBQVUsRUFBRWMsS0FBSyxDQUFDO0VBQ3RELENBQUMsQ0FBQztFQUVOLElBQUlkLFVBQVUsQ0FBQzZCLFVBQVUsRUFBRTtJQUN2QixPQUFPVixPQUFPLENBQUNXLE9BQU8sQ0FBQyxDQUFDO0VBQzVCO0VBRUEsT0FBT0osZUFBZTtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLFVBQVVBLENBQUMzQixVQUFVLEVBQUU7RUFDbkMsT0FBT0EsVUFBVSxDQUFDK0IsT0FBTyxJQUFJL0IsVUFBVSxDQUFDK0IsT0FBTyxDQUFDLENBQUM7QUFDckQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zZGNfY2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvc2RjX2NvbnRyb2xsZXIuanM/OGEzMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Byb21pc2VEdW1teUZhY3RvcnksIHRhZ05hbWVUb0NhbWVsQ2FzZSwgYWdpbGVBZ2dyZWdhdGlvbn0gZnJvbSBcIi4vc2RjX3V0aWxzLmpzXCI7XG5pbXBvcnQge2xvYWRGaWxlc0Zyb21Db250cm9sbGVyLCBydW5Db250cm9sbGVyRmlsbENvbnRlbnR9IGZyb20gXCIuL3NkY192aWV3LmpzXCI7XG5cbmltcG9ydCB7cnVuT25Jbml0V2l0aFBhcmFtZXRlcn0gZnJvbSBcIi4vc2RjX3BhcmFtcy5qc1wiO1xuXG5leHBvcnQgbGV0IEdsb2JhbCA9IHt9O1xuZXhwb3J0IGxldCBjb250cm9sbGVyTGlzdCA9IHt9O1xuZXhwb3J0IGZ1bmN0aW9uIHRhZ0xpc3QoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbnRyb2xsZXJMaXN0KTtcbn1cblxuXG5mdW5jdGlvbiBwcmVwYXJlTWl4aW5zKHN1cGVyVGFnTmFtZUxpc3QsIHRhZ05hbWUpIHtcbiAgICBzdXBlclRhZ05hbWVMaXN0ID0gc3VwZXJUYWdOYW1lTGlzdC5jb25jYXQoY29udHJvbGxlckxpc3RbdGFnTmFtZV1bMV0pO1xuICAgIHN1cGVyVGFnTmFtZUxpc3QgPSBzdXBlclRhZ05hbWVMaXN0LmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiB7XG4gICAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KTtcbiAgICBsZXQgaGFzQWRkZWQgPSB0cnVlO1xuICAgIHdoaWxlIChoYXNBZGRlZCkge1xuICAgICAgICBoYXNBZGRlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCB0YWcgb2Ygc3VwZXJUYWdOYW1lTGlzdCkge1xuICAgICAgICAgICAgZm9yIChsZXQgbmV3VGFnIG9mIGNvbnRyb2xsZXJMaXN0W3RhZ11bMV0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN1cGVyVGFnTmFtZUxpc3QuaW5jbHVkZXMobmV3VGFnKSkge1xuICAgICAgICAgICAgICAgICAgICBzdXBlclRhZ05hbWVMaXN0LnB1c2gobmV3VGFnKTtcbiAgICAgICAgICAgICAgICAgICAgaGFzQWRkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXJUYWdOYW1lTGlzdDtcbn1cblxuLyoqXG4gKiBzZXRQYXJlbnRDb250cm9sbGVyIHNldHMgdGhlIHBhcmVudCBjb250cm9sbGVyIGFzIHByb3BlcnR5OiAncGFyZW50Q29udHJvbGxlcidcbiAqIHRvIHRoZSBjaGlsZCBjb250cm9sbGVyLiBBbHNvLCBpdCBhZGRzIHRoZSBjaGlsZCBjb250cm9sbGVyIHRvIHRoZSBwcm9wZXJ0eSBsaXN0OlxuICogJ3BhcmVudENvbnRyb2xsZXInIHRvIHRoZSBwYXJlbnQgY29udHJvbGxlclxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IHBhcmVudENvbnRyb2xsZXIgLSBqcyBjb250cm9sbGVyIGluc3RhbmNlLCBjb250cm9sbGVyIG9mIHRoZSBwYXJlbnQgRE9NIG9mIHRoZSBjb250cm9sbGVycyBET01cbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXIgLSBqcyBjb250cm9sbGVyIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBYnN0cmFjdFNEQ30gLSBwYXJlbnRDb250cm9sbGVyXG4gKi9cbmZ1bmN0aW9uIHNldFBhcmVudENvbnRyb2xsZXIocGFyZW50Q29udHJvbGxlciwgY29udHJvbGxlcikge1xuICAgIGlmIChwYXJlbnRDb250cm9sbGVyKSB7XG4gICAgICAgIGxldCBjb250cm9sbGVyTmFtZSA9IHRhZ05hbWVUb0NhbWVsQ2FzZShjb250cm9sbGVyLl90YWdOYW1lKTtcbiAgICAgICAgaWYgKCFwYXJlbnRDb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXJbY29udHJvbGxlck5hbWVdKSB7XG4gICAgICAgICAgICBwYXJlbnRDb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXJbY29udHJvbGxlck5hbWVdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBwYXJlbnRDb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXJbY29udHJvbGxlck5hbWVdLnB1c2goY29udHJvbGxlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIChjb250cm9sbGVyLl9wYXJlbnRDb250cm9sbGVyID0gcGFyZW50Q29udHJvbGxlcilcbn1cblxuLyoqXG4gKiBjb250cm9sbGVyRmFjdG9yeUluc3RhbmNlIGl0IGdlbmVyYXRlcyBhIGNvbnRyb2xsZXIgaW5zdGFuY2VcbiAqIGRlcGVuZGluZyBpZiB0aGUgY29udHJvbGxlciBpcyByZWdpc3RlcmVkIGFzIGEgZ2xvYmFsIGNvbnRyb2xsZXIuIEl0IHNldHMgdGhlXG4gKiAkY29udGFpbmVyIG9iamVjdCB0byB0aGUgalF1ZXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0YWcuXG4gKlxuICogSXQgaGFuZGxlcyB0aGUgaW5pdCBwYXJhbWV0ZXIgYnkgdGhlIGRhdGEgdmFsdWVzIG9mIHRoZSBET00uXG4gKlxuICogSXQgaGFuZGxlcyB0aGUgc3VwZXIgZXh0ZW5zaW9ucy5cbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyIC0gQ29udHJvbGxlciBvZiB0aGUgcGFyZW50IERPTVxuICogQHBhcmFtIHtqcXVlcnl9ICRlbGVtZW50IC0gVGhlIGN1cnJlbnQgRE9NIGpRdWVyeVxuICogQHBhcmFtIHtzdHJpbmd9IHRhZ05hbWUgLSB0aGUgcmVnaXN0ZXJlZCB0YWcgbmFtZSBvZiB0aGUgY3VycmVudCBET01cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdXBlclRhZ05hbWVMaXN0IC0gdGFnIG5hbWVzIG9mIHN1cGVyIGNvbnRyb2xsZXJcbiAqIEByZXR1cm4ge0Fic3RyYWN0U0RDfSAtICBuZXcgQ29udHJvbGxlclxuICovXG5mdW5jdGlvbiBjb250cm9sbGVyRmFjdG9yeUluc3RhbmNlKHBhcmVudENvbnRyb2xsZXIsICRlbGVtZW50LCB0YWdOYW1lLCBzdXBlclRhZ05hbWVMaXN0KSB7XG5cbiAgICBsZXQgbWl4aW5Db250cm9sbGVyQ2xhc3MgPSBbXTtcbiAgICBzdXBlclRhZ05hbWVMaXN0ID0gcHJlcGFyZU1peGlucyhzdXBlclRhZ05hbWVMaXN0LCB0YWdOYW1lKTtcbiAgICBmb3IgKGxldCBzdXBlclRhZ05hbWUgb2Ygc3VwZXJUYWdOYW1lTGlzdCkge1xuICAgICAgICBtaXhpbkNvbnRyb2xsZXJDbGFzcy5wdXNoKGNvbnRyb2xsZXJMaXN0W3N1cGVyVGFnTmFtZV1bMF0pO1xuICAgIH1cblxuICAgIGxldCBjb250cm9sbGVyQ2xhc3MgPSBjb250cm9sbGVyTGlzdFt0YWdOYW1lXVswXTtcbiAgICBsZXQgY29udHJvbGxlciA9IG5ldyAoYWdpbGVBZ2dyZWdhdGlvbihjb250cm9sbGVyQ2xhc3MsIC4uLm1peGluQ29udHJvbGxlckNsYXNzKSkoKTtcbiAgICBjb250cm9sbGVyLl90YWdOYW1lID0gdGFnTmFtZTtcblxuICAgIHNldFBhcmVudENvbnRyb2xsZXIocGFyZW50Q29udHJvbGxlciwgY29udHJvbGxlcik7XG4gICAgY29udHJvbGxlci4kY29udGFpbmVyID0gJGVsZW1lbnQ7XG4gICAgcnVuT25Jbml0V2l0aFBhcmFtZXRlcigkZWxlbWVudCwgY29udHJvbGxlcik7XG5cblxuICAgIHJldHVybiBjb250cm9sbGVyO1xufVxuXG4vKipcbiAqIGNvbnRyb2xsZXJGYWN0b3J5IGl0IGVpdGhlciBnZW5lcmF0ZXMgYSBjb250cm9sbGVyIG9yIHRha2VzIGEgZ2xvYmUgaW5zdGFuY2VcbiAqIGRlcGVuZGluZyBpZiB0aGUgY29udHJvbGxlciBpcyByZWdpc3RlcmVkIGFzIGEgZ2xvYmFsIGNvbnRyb2xsZXIuIEl0IHNldHMgdGhlXG4gKiAkY29udGFpbmVyIG9iamVjdCB0byB0aGUgalF1ZXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0YWcuXG4gKlxuICogUmVtZW1iZXIgR2xvYmFsIGNvbnRyb2xsZXIgY2FuIG5vdCBoYXZlIGEgc3VwZXIgY29udHJvbGxlciFcbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyIC0gQ29udHJvbGxlciBvZiB0aGUgcGFyZW50IERPTVxuICogQHBhcmFtIHtqcXVlcnl9ICRlbGVtZW50IC0gVGhlIGN1cnJlbnQgRE9NIGpRdWVyeVxuICogQHBhcmFtIHtzdHJpbmd9IHRhZ05hbWUgLSB0aGUgcmVnaXN0ZXJlZCB0YWcgbmFtZSBvZiB0aGUgY3VycmVudCBET01cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdXBlclRhZ05hbWVMaXN0IC0gdGFnIG5hbWVzIG9mIHN1cGVyIGNvbnRyb2xsZXJcbiAqIEByZXR1cm4ge0Fic3RyYWN0U0RDfSAtICBuZXcgQ29udHJvbGxlclxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udHJvbGxlckZhY3RvcnkocGFyZW50Q29udHJvbGxlciwgJGVsZW1lbnQsIHRhZ05hbWUsIHN1cGVyVGFnTmFtZUxpc3QpIHtcbiAgICBsZXQgZ1RhZ05hbWUgPSB0YWdOYW1lVG9DYW1lbENhc2UodGFnTmFtZSk7XG4gICAgaWYgKEdsb2JhbFtnVGFnTmFtZV0pIHtcbiAgICAgICAgbGV0IGNvbnRyb2xsZXIgPSBHbG9iYWxbZ1RhZ05hbWVdO1xuICAgICAgICBzZXRQYXJlbnRDb250cm9sbGVyKHBhcmVudENvbnRyb2xsZXIsIGNvbnRyb2xsZXIpO1xuICAgICAgICBjb250cm9sbGVyLiRjb250YWluZXIgPSAkZWxlbWVudDtcblxuICAgICAgICByZXR1cm4gY29udHJvbGxlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udHJvbGxlckZhY3RvcnlJbnN0YW5jZShwYXJlbnRDb250cm9sbGVyLCAkZWxlbWVudCwgdGFnTmFtZSwgc3VwZXJUYWdOYW1lTGlzdCk7XG59XG5cbi8qKlxuICogcnVuQ29udHJvbGxlclNob3cgZmlyc3QgcnVucyBvbkxvYWQgYW5kIGZpbGwgY29udGVudCBmb3IgYWxsIHN1YlxuICogY29udHJvbGxlci4gT25seSBpZiBhbGwgdGhlIHN1YiBjb250cm9sbGVyIGFyZSBsb2FkZWQgdGhlIHdpbGxTaG93XG4gKiBjb250cm9sIGZsb3cgZnVuY3Rpb24gZ2V0cyBjYWxsZWQuXG4gKlxuICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlciAtIGpzIGNvbnRyb2xsZXIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkaHRtbCAtIGpRdWVyeSBsb2FkZWQgY29udGVudFxuICogQHJldHVybiB7UHJvbWlzZTwqPn0gLSByZXR1cm4gb2YgdGhlIG9uTG9hZCBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBydW5Db250cm9sbGVyU2hvdyhjb250cm9sbGVyLCAkaHRtbCkge1xuICAgIHJldHVybiBydW5Db250cm9sbGVyRmlsbENvbnRlbnQoY29udHJvbGxlciwgJGh0bWwpLnRoZW4oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgYXJncyA9IGFyZ3MgfHwgdHJ1ZTtcbiAgICAgICAgaWYgKGNvbnRyb2xsZXIud2lsbFNob3cpIHtcbiAgICAgICAgICAgIGxldCBsb2FkUHJvbWlzZU9yQ29udGVudCA9IGNvbnRyb2xsZXIud2lsbFNob3coKTtcbiAgICAgICAgICAgIGlmIChsb2FkUHJvbWlzZU9yQ29udGVudCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9hZFByb21pc2VPckNvbnRlbnQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfSk7XG59XG5cblxuLyoqXG4gKiBydW5Db250cm9sbGVyTG9hZCBDYWxscyB0aGUgb25Mb2FkIGZ1bmN0aW9uIG9mIHRoZSBjb250cm9sbGVyLlxuICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIHRoZSBIVE1MIGlzIHNldCB0byB0aGUgcGFnZS5cbiAqIFRoZSBwYXJhbWV0ZXIgaXMgYSBsaXN0IG9mIGNoaWxkcmVuIG9mIHRoZSB0YWcgYW5kIHRoZSByZWdpc3RlcmVkIHRhZy5cbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyIC0ganMgY29udHJvbGxlciBpbnN0YW5jZVxuICogQHJldHVybiB7UHJvbWlzZTwqPn0gLSByZXR1cm4gb2YgdGhlIG9uTG9hZCBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBydW5Db250cm9sbGVyTG9hZChjb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGxvYWRGaWxlc0Zyb21Db250cm9sbGVyKGNvbnRyb2xsZXIpLnRoZW4oKGh0bWwpID0+IHtcbiAgICAgICAgaWYgKCFjb250cm9sbGVyLm9uTG9hZCB8fCBjb250cm9sbGVyLl9vbkxvYWREb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRyb2xsZXIuX29uTG9hZERvbmUgPSB0cnVlO1xuICAgICAgICBsZXQgbG9hZFByb21pc2UgPSBjb250cm9sbGVyLm9uTG9hZChodG1sKTtcbiAgICAgICAgcmV0dXJuIChsb2FkUHJvbWlzZSB8fCBwcm9taXNlRHVtbXlGYWN0b3J5KCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIHJ1bkNvbnRyb2xGbG93RnVuY3Rpb25zIHJ1bnMgdGhlIGNvbnRyb2wgZmxvdyBmdW5jdGlvbnM6XG4gKiAxLiBvbkxvYWQoKVxuICogMi4gZmlsbCBjb250ZW50XG4gKiAzLiB3aWxsU2hvdyhkb20gcGFyYW1ldGVyKVxuICogNC4gcmVmcmVzaCgpXG4gKlxuICogQHBhcmFtIGNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkNvbnRyb2xGbG93RnVuY3Rpb25zKGNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBwcm9tX2NvbnRyb2xsZXIgPSBydW5Db250cm9sbGVyTG9hZChjb250cm9sbGVyKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAoJGh0bWwpIHtcbiAgICAgICAgICAgIHJldHVybiBydW5Db250cm9sbGVyU2hvdyhjb250cm9sbGVyLCAkaHRtbCk7XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJ1blJlZnJlc2goY29udHJvbGxlcik7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgkaHRtbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bkNvbnRyb2xsZXJGaWxsQ29udGVudChjb250cm9sbGVyLCAkaHRtbCk7XG4gICAgICAgIH0pO1xuXG4gICAgaWYgKGNvbnRyb2xsZXIubG9hZF9hc3luYykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21fY29udHJvbGxlcjtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuUmVmcmVzaChjb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGNvbnRyb2xsZXIucmVmcmVzaCAmJiBjb250cm9sbGVyLnJlZnJlc2goKTtcbn0iXSwibmFtZXMiOlsicHJvbWlzZUR1bW15RmFjdG9yeSIsInRhZ05hbWVUb0NhbWVsQ2FzZSIsImFnaWxlQWdncmVnYXRpb24iLCJsb2FkRmlsZXNGcm9tQ29udHJvbGxlciIsInJ1bkNvbnRyb2xsZXJGaWxsQ29udGVudCIsInJ1bk9uSW5pdFdpdGhQYXJhbWV0ZXIiLCJHbG9iYWwiLCJjb250cm9sbGVyTGlzdCIsInRhZ0xpc3QiLCJPYmplY3QiLCJrZXlzIiwicHJlcGFyZU1peGlucyIsInN1cGVyVGFnTmFtZUxpc3QiLCJ0YWdOYW1lIiwiY29uY2F0IiwiZmlsdGVyIiwidmFsdWUiLCJpbmRleCIsInNlbGYiLCJpbmRleE9mIiwiaGFzQWRkZWQiLCJ0YWciLCJuZXdUYWciLCJpbmNsdWRlcyIsInB1c2giLCJzZXRQYXJlbnRDb250cm9sbGVyIiwicGFyZW50Q29udHJvbGxlciIsImNvbnRyb2xsZXIiLCJjb250cm9sbGVyTmFtZSIsIl90YWdOYW1lIiwiX2NoaWxkQ29udHJvbGxlciIsIl9wYXJlbnRDb250cm9sbGVyIiwiY29udHJvbGxlckZhY3RvcnlJbnN0YW5jZSIsIiRlbGVtZW50IiwibWl4aW5Db250cm9sbGVyQ2xhc3MiLCJzdXBlclRhZ05hbWUiLCJjb250cm9sbGVyQ2xhc3MiLCIkY29udGFpbmVyIiwiY29udHJvbGxlckZhY3RvcnkiLCJnVGFnTmFtZSIsInJ1bkNvbnRyb2xsZXJTaG93IiwiJGh0bWwiLCJ0aGVuIiwiYXJncyIsIndpbGxTaG93IiwibG9hZFByb21pc2VPckNvbnRlbnQiLCJQcm9taXNlIiwicnVuQ29udHJvbGxlckxvYWQiLCJodG1sIiwib25Mb2FkIiwiX29uTG9hZERvbmUiLCJsb2FkUHJvbWlzZSIsInJ1bkNvbnRyb2xGbG93RnVuY3Rpb25zIiwicHJvbV9jb250cm9sbGVyIiwicnVuUmVmcmVzaCIsImNhdGNoIiwibG9hZF9hc3luYyIsInJlc29sdmUiLCJyZWZyZXNoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_controller.js\n");
|
37
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Global: () => (/* binding */ Global),\n/* harmony export */ controllerFactory: () => (/* binding */ controllerFactory),\n/* harmony export */ controllerList: () => (/* binding */ controllerList),\n/* harmony export */ resetChildren: () => (/* binding */ resetChildren),\n/* harmony export */ runControlFlowFunctions: () => (/* binding */ runControlFlowFunctions),\n/* harmony export */ runRefresh: () => (/* binding */ runRefresh),\n/* harmony export */ tagList: () => (/* binding */ tagList)\n/* harmony export */ });\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n/* harmony import */ var _sdc_params_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_params.js */ \"./src/simpleDomControl/sdc_params.js\");\n\n\n\nlet Global = {};\nlet controllerList = {};\nfunction tagList() {\n return Object.keys(controllerList);\n}\nfunction prepareMixins(superTagNameList, tagName) {\n superTagNameList = superTagNameList.concat(controllerList[tagName][1]);\n superTagNameList = superTagNameList.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n let hasAdded = true;\n while (hasAdded) {\n hasAdded = false;\n for (let tag of superTagNameList) {\n for (let newTag of controllerList[tag][1]) {\n if (!superTagNameList.includes(newTag)) {\n superTagNameList.push(newTag);\n hasAdded = true;\n }\n }\n }\n }\n return superTagNameList;\n}\n\n/**\n * setParentController sets the parent controller as property: 'parentController'\n * to the child controller. Also, it adds the child controller to the property list:\n * 'parentController' to the parent controller\n *\n * @param {AbstractSDC} parentController - js controller instance, controller of the parent DOM of the controllers DOM\n * @param {AbstractSDC} controller - js controller instance\n * @return {AbstractSDC} - parentController\n */\nfunction setParentController(parentController, controller) {\n if (parentController) {\n let controllerName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(controller._tagName);\n if (!parentController._childController[controllerName]) {\n parentController._childController[controllerName] = [];\n }\n parentController._childController[controllerName].push(controller);\n }\n return controller._parentController = parentController;\n}\n\n/**\n * resetChildren resets all children of a controller.\n *\n * @param {AbstractSDC} parentController\n */\nfunction resetChildren(parentController) {\n parentController._childController = {};\n parentController.find(`.${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.CONTROLLER_CLASS}`).each(function () {\n const $this = $(this);\n const cController = (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.getController)($this);\n if (cController === parentController) {\n setParentController(parentController, cController);\n }\n });\n}\n\n/**\n * controllerFactoryInstance it generates a controller instance\n * depending if the controller is registered as a global controller. It sets the\n * $container object to the jQuery representation of the tag.\n *\n * It handles the init parameter by the data values of the DOM.\n *\n * It handles the super extensions.\n *\n * @param {AbstractSDC} parentController - Controller of the parent DOM\n * @param {jquery} $element - The current DOM jQuery\n * @param {string} tagName - the registered tag name of the current DOM\n * @param {string} superTagNameList - tag names of super controller\n * @return {AbstractSDC} - new Controller\n */\nfunction controllerFactoryInstance(parentController, $element, tagName, superTagNameList) {\n let mixinControllerClass = [];\n superTagNameList = prepareMixins(superTagNameList, tagName);\n for (let superTagName of superTagNameList) {\n mixinControllerClass.push(controllerList[superTagName][0]);\n }\n let controllerClass = controllerList[tagName][0];\n let controller = new ((0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.agileAggregation)(controllerClass, ...mixinControllerClass))();\n controller._tagName = tagName;\n setParentController(parentController, controller);\n controller.$container = $element;\n (0,_sdc_params_js__WEBPACK_IMPORTED_MODULE_2__.runOnInitWithParameter)($element, controller);\n return controller;\n}\n\n/**\n * controllerFactory it either generates a controller or takes a globe instance\n * depending if the controller is registered as a global controller. It sets the\n * $container object to the jQuery representation of the tag.\n *\n * Remember Global controller can not have a super controller!\n *\n * @param {AbstractSDC} parentController - Controller of the parent DOM\n * @param {jquery} $element - The current DOM jQuery\n * @param {string} tagName - the registered tag name of the current DOM\n * @param {string} superTagNameList - tag names of super controller\n * @return {AbstractSDC} - new Controller\n */\nfunction controllerFactory(parentController, $element, tagName, superTagNameList) {\n let gTagName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName);\n if (Global[gTagName]) {\n let controller = Global[gTagName];\n setParentController(parentController, controller);\n controller.$container = $element;\n return controller;\n }\n return controllerFactoryInstance(parentController, $element, tagName, superTagNameList);\n}\n\n/**\n * runControllerShow first runs onLoad and fill content for all sub\n * controller. Only if all the sub controller are loaded the willShow\n * control flow function gets called.\n *\n * @param {AbstractSDC} controller - js controller instance\n * @param {jquery} $html - jQuery loaded content\n * @return {Promise<*>} - return of the onLoad function\n */\nfunction runControllerShow(controller, $html) {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.runControllerFillContent)(controller, $html).then(function (args) {\n args = args || true;\n if (controller.willShow) {\n let loadPromiseOrContent = controller.willShow();\n if (loadPromiseOrContent instanceof Promise) {\n return loadPromiseOrContent.then(function () {\n return args;\n });\n }\n }\n return args;\n });\n}\n\n/**\n * runControllerLoad Calls the onLoad function of the controller.\n * This function is called before the HTML is set to the page.\n * The parameter is a list of children of the tag and the registered tag.\n *\n * @param {AbstractSDC} controller - js controller instance\n * @return {Promise<*>} - return of the onLoad function\n */\nfunction runControllerLoad(controller) {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.loadFilesFromController)(controller).then(html => {\n if (!controller.onLoad || controller._onLoadDone) {\n return html;\n }\n controller._onLoadDone = true;\n let loadPromise = controller.onLoad(html);\n return (loadPromise || (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.promiseDummyFactory)()).then(() => {\n return html;\n });\n });\n}\n\n/**\n * runControlFlowFunctions runs the control flow functions:\n * 1. onLoad()\n * 2. fill content\n * 3. willShow(dom parameter)\n * 4. refresh()\n *\n * @param controller\n */\nfunction runControlFlowFunctions(controller) {\n const prom_controller = runControllerLoad(controller).then(function ($html) {\n return runControllerShow(controller, $html);\n }).then(() => {\n return runRefresh(controller);\n }).catch(function ($html) {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.runControllerFillContent)(controller, $html);\n });\n if (controller.load_async) {\n return Promise.resolve();\n }\n return prom_controller;\n}\n\n/**\n *\n * @param {AbstractSDC} controller\n */\nfunction runRefresh(controller) {\n return controller.refresh && controller.refresh();\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9zZGNfY29udHJvbGxlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQXlGO0FBQ3dCO0FBRTFEO0FBRWhELElBQUlRLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDZixJQUFJQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLFNBQVNDLE9BQU9BLENBQUEsRUFBRztFQUN0QixPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FBQ0gsY0FBYyxDQUFDO0FBQ3RDO0FBR0EsU0FBU0ksYUFBYUEsQ0FBQ0MsZ0JBQWdCLEVBQUVDLE9BQU8sRUFBRTtFQUM5Q0QsZ0JBQWdCLEdBQUdBLGdCQUFnQixDQUFDRSxNQUFNLENBQUNQLGNBQWMsQ0FBQ00sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdEVELGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ0csTUFBTSxDQUFDLENBQUNDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEtBQUs7SUFDL0QsT0FBT0EsSUFBSSxDQUFDQyxPQUFPLENBQUNILEtBQUssQ0FBQyxLQUFLQyxLQUFLO0VBQ3hDLENBQUMsQ0FBQztFQUNGLElBQUlHLFFBQVEsR0FBRyxJQUFJO0VBQ25CLE9BQU9BLFFBQVEsRUFBRTtJQUNiQSxRQUFRLEdBQUcsS0FBSztJQUNoQixLQUFLLElBQUlDLEdBQUcsSUFBSVQsZ0JBQWdCLEVBQUU7TUFDOUIsS0FBSyxJQUFJVSxNQUFNLElBQUlmLGNBQWMsQ0FBQ2MsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDdkMsSUFBSSxDQUFDVCxnQkFBZ0IsQ0FBQ1csUUFBUSxDQUFDRCxNQUFNLENBQUMsRUFBRTtVQUNwQ1YsZ0JBQWdCLENBQUNZLElBQUksQ0FBQ0YsTUFBTSxDQUFDO1VBQzdCRixRQUFRLEdBQUcsSUFBSTtRQUNuQjtNQUNKO0lBQ0o7RUFDSjtFQUNBLE9BQU9SLGdCQUFnQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDLENBQUMsRUFBRWtELElBQUksQ0FBQyxNQUFNO01BQ3JELE9BQU9NLElBQUk7SUFDZixDQUFDLENBQUM7RUFDTixDQUFDLENBQUM7QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSx1QkFBdUJBLENBQUMvQixVQUFVLEVBQUU7RUFDaEQsTUFBTWdDLGVBQWUsR0FBR04saUJBQWlCLENBQUMxQixVQUFVLENBQUMsQ0FDaERxQixJQUFJLENBQUMsVUFBVUQsS0FBSyxFQUFFO0lBQ25CLE9BQU9ELGlCQUFpQixDQUFDbkIsVUFBVSxFQUFFb0IsS0FBSyxDQUFDO0VBQy9DLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUMsTUFBTTtJQUNWLE9BQU9ZLFVBQVUsQ0FBQ2pDLFVBQVUsQ0FBQztFQUNqQyxDQUFDLENBQUMsQ0FBQ2tDLEtBQUssQ0FBQyxVQUFVZCxLQUFLLEVBQUU7SUFDdEIsT0FBTzNDLHNFQUF3QixDQUFDdUIsVUFBVSxFQUFFb0IsS0FBSyxDQUFDO0VBQ3RELENBQUMsQ0FBQztFQUVOLElBQUlwQixVQUFVLENBQUNtQyxVQUFVLEVBQUU7SUFDdkIsT0FBT1YsT0FBTyxDQUFDVyxPQUFPLENBQUMsQ0FBQztFQUM1QjtFQUVBLE9BQU9KLGVBQWU7QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxVQUFVQSxDQUFDakMsVUFBVSxFQUFFO0VBQ25DLE9BQU9BLFVBQVUsQ0FBQ3FDLE9BQU8sSUFBSXJDLFVBQVUsQ0FBQ3FDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9zaW1wbGVEb21Db250cm9sL3NkY19jb250cm9sbGVyLmpzPzhhMzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwcm9taXNlRHVtbXlGYWN0b3J5LCB0YWdOYW1lVG9DYW1lbENhc2UsIGFnaWxlQWdncmVnYXRpb259IGZyb20gXCIuL3NkY191dGlscy5qc1wiO1xuaW1wb3J0IHtDT05UUk9MTEVSX0NMQVNTLCBnZXRDb250cm9sbGVyLCBsb2FkRmlsZXNGcm9tQ29udHJvbGxlciwgcnVuQ29udHJvbGxlckZpbGxDb250ZW50fSBmcm9tIFwiLi9zZGNfdmlldy5qc1wiO1xuXG5pbXBvcnQge3J1bk9uSW5pdFdpdGhQYXJhbWV0ZXJ9IGZyb20gXCIuL3NkY19wYXJhbXMuanNcIjtcblxuZXhwb3J0IGxldCBHbG9iYWwgPSB7fTtcbmV4cG9ydCBsZXQgY29udHJvbGxlckxpc3QgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB0YWdMaXN0KCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjb250cm9sbGVyTGlzdCk7XG59XG5cblxuZnVuY3Rpb24gcHJlcGFyZU1peGlucyhzdXBlclRhZ05hbWVMaXN0LCB0YWdOYW1lKSB7XG4gICAgc3VwZXJUYWdOYW1lTGlzdCA9IHN1cGVyVGFnTmFtZUxpc3QuY29uY2F0KGNvbnRyb2xsZXJMaXN0W3RhZ05hbWVdWzFdKTtcbiAgICBzdXBlclRhZ05hbWVMaXN0ID0gc3VwZXJUYWdOYW1lTGlzdC5maWx0ZXIoKHZhbHVlLCBpbmRleCwgc2VsZikgPT4ge1xuICAgICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfSk7XG4gICAgbGV0IGhhc0FkZGVkID0gdHJ1ZTtcbiAgICB3aGlsZSAoaGFzQWRkZWQpIHtcbiAgICAgICAgaGFzQWRkZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgdGFnIG9mIHN1cGVyVGFnTmFtZUxpc3QpIHtcbiAgICAgICAgICAgIGZvciAobGV0IG5ld1RhZyBvZiBjb250cm9sbGVyTGlzdFt0YWddWzFdKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdXBlclRhZ05hbWVMaXN0LmluY2x1ZGVzKG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwZXJUYWdOYW1lTGlzdC5wdXNoKG5ld1RhZyk7XG4gICAgICAgICAgICAgICAgICAgIGhhc0FkZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyVGFnTmFtZUxpc3Q7XG59XG5cbi8qKlxuICogc2V0UGFyZW50Q29udHJvbGxlciBzZXRzIHRoZSBwYXJlbnQgY29udHJvbGxlciBhcyBwcm9wZXJ0eTogJ3BhcmVudENvbnRyb2xsZXInXG4gKiB0byB0aGUgY2hpbGQgY29udHJvbGxlci4gQWxzbywgaXQgYWRkcyB0aGUgY2hpbGQgY29udHJvbGxlciB0byB0aGUgcHJvcGVydHkgbGlzdDpcbiAqICdwYXJlbnRDb250cm9sbGVyJyB0byB0aGUgcGFyZW50IGNvbnRyb2xsZXJcbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyIC0ganMgY29udHJvbGxlciBpbnN0YW5jZSwgY29udHJvbGxlciBvZiB0aGUgcGFyZW50IERPTSBvZiB0aGUgY29udHJvbGxlcnMgRE9NXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyIC0ganMgY29udHJvbGxlciBpbnN0YW5jZVxuICogQHJldHVybiB7QWJzdHJhY3RTREN9IC0gcGFyZW50Q29udHJvbGxlclxuICovXG5mdW5jdGlvbiBzZXRQYXJlbnRDb250cm9sbGVyKHBhcmVudENvbnRyb2xsZXIsIGNvbnRyb2xsZXIpIHtcbiAgICBpZiAocGFyZW50Q29udHJvbGxlcikge1xuICAgICAgICBsZXQgY29udHJvbGxlck5hbWUgPSB0YWdOYW1lVG9DYW1lbENhc2UoY29udHJvbGxlci5fdGFnTmFtZSk7XG4gICAgICAgIGlmICghcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NvbnRyb2xsZXJOYW1lXSkge1xuICAgICAgICAgICAgcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NvbnRyb2xsZXJOYW1lXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NvbnRyb2xsZXJOYW1lXS5wdXNoKGNvbnRyb2xsZXIpO1xuICAgIH1cblxuICAgIHJldHVybiAoY29udHJvbGxlci5fcGFyZW50Q29udHJvbGxlciA9IHBhcmVudENvbnRyb2xsZXIpXG59XG5cbi8qKlxuICogcmVzZXRDaGlsZHJlbiByZXNldHMgYWxsIGNoaWxkcmVuIG9mIGEgY29udHJvbGxlci5cbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldENoaWxkcmVuKHBhcmVudENvbnRyb2xsZXIpIHtcbiAgICBwYXJlbnRDb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXIgPSB7fTtcbiAgICBwYXJlbnRDb250cm9sbGVyLmZpbmQoYC4ke0NPTlRST0xMRVJfQ0xBU1N9YCkuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICBjb25zdCAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgIGNvbnN0IGNDb250cm9sbGVyID0gZ2V0Q29udHJvbGxlcigkdGhpcyk7XG4gICAgICAgIGlmKGNDb250cm9sbGVyID09PSBwYXJlbnRDb250cm9sbGVyKSB7XG4gICAgICAgICAgICBzZXRQYXJlbnRDb250cm9sbGVyKHBhcmVudENvbnRyb2xsZXIsIGNDb250cm9sbGVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIGNvbnRyb2xsZXJGYWN0b3J5SW5zdGFuY2UgaXQgZ2VuZXJhdGVzIGEgY29udHJvbGxlciBpbnN0YW5jZVxuICogZGVwZW5kaW5nIGlmIHRoZSBjb250cm9sbGVyIGlzIHJlZ2lzdGVyZWQgYXMgYSBnbG9iYWwgY29udHJvbGxlci4gSXQgc2V0cyB0aGVcbiAqICRjb250YWluZXIgb2JqZWN0IHRvIHRoZSBqUXVlcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRhZy5cbiAqXG4gKiBJdCBoYW5kbGVzIHRoZSBpbml0IHBhcmFtZXRlciBieSB0aGUgZGF0YSB2YWx1ZXMgb2YgdGhlIERPTS5cbiAqXG4gKiBJdCBoYW5kbGVzIHRoZSBzdXBlciBleHRlbnNpb25zLlxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IHBhcmVudENvbnRyb2xsZXIgLSBDb250cm9sbGVyIG9mIHRoZSBwYXJlbnQgRE9NXG4gKiBAcGFyYW0ge2pxdWVyeX0gJGVsZW1lbnQgLSBUaGUgY3VycmVudCBET00galF1ZXJ5XG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnTmFtZSAtIHRoZSByZWdpc3RlcmVkIHRhZyBuYW1lIG9mIHRoZSBjdXJyZW50IERPTVxuICogQHBhcmFtIHtzdHJpbmd9IHN1cGVyVGFnTmFtZUxpc3QgLSB0YWcgbmFtZXMgb2Ygc3VwZXIgY29udHJvbGxlclxuICogQHJldHVybiB7QWJzdHJhY3RTREN9IC0gIG5ldyBDb250cm9sbGVyXG4gKi9cbmZ1bmN0aW9uIGNvbnRyb2xsZXJGYWN0b3J5SW5zdGFuY2UocGFyZW50Q29udHJvbGxlciwgJGVsZW1lbnQsIHRhZ05hbWUsIHN1cGVyVGFnTmFtZUxpc3QpIHtcblxuICAgIGxldCBtaXhpbkNvbnRyb2xsZXJDbGFzcyA9IFtdO1xuICAgIHN1cGVyVGFnTmFtZUxpc3QgPSBwcmVwYXJlTWl4aW5zKHN1cGVyVGFnTmFtZUxpc3QsIHRhZ05hbWUpO1xuICAgIGZvciAobGV0IHN1cGVyVGFnTmFtZSBvZiBzdXBlclRhZ05hbWVMaXN0KSB7XG4gICAgICAgIG1peGluQ29udHJvbGxlckNsYXNzLnB1c2goY29udHJvbGxlckxpc3Rbc3VwZXJUYWdOYW1lXVswXSk7XG4gICAgfVxuXG4gICAgbGV0IGNvbnRyb2xsZXJDbGFzcyA9IGNvbnRyb2xsZXJMaXN0W3RhZ05hbWVdWzBdO1xuICAgIGxldCBjb250cm9sbGVyID0gbmV3IChhZ2lsZUFnZ3JlZ2F0aW9uKGNvbnRyb2xsZXJDbGFzcywgLi4ubWl4aW5Db250cm9sbGVyQ2xhc3MpKSgpO1xuICAgIGNvbnRyb2xsZXIuX3RhZ05hbWUgPSB0YWdOYW1lO1xuXG4gICAgc2V0UGFyZW50Q29udHJvbGxlcihwYXJlbnRDb250cm9sbGVyLCBjb250cm9sbGVyKTtcbiAgICBjb250cm9sbGVyLiRjb250YWluZXIgPSAkZWxlbWVudDtcbiAgICBydW5PbkluaXRXaXRoUGFyYW1ldGVyKCRlbGVtZW50LCBjb250cm9sbGVyKTtcblxuXG4gICAgcmV0dXJuIGNvbnRyb2xsZXI7XG59XG5cbi8qKlxuICogY29udHJvbGxlckZhY3RvcnkgaXQgZWl0aGVyIGdlbmVyYXRlcyBhIGNvbnRyb2xsZXIgb3IgdGFrZXMgYSBnbG9iZSBpbnN0YW5jZVxuICogZGVwZW5kaW5nIGlmIHRoZSBjb250cm9sbGVyIGlzIHJlZ2lzdGVyZWQgYXMgYSBnbG9iYWwgY29udHJvbGxlci4gSXQgc2V0cyB0aGVcbiAqICRjb250YWluZXIgb2JqZWN0IHRvIHRoZSBqUXVlcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRhZy5cbiAqXG4gKiBSZW1lbWJlciBHbG9iYWwgY29udHJvbGxlciBjYW4gbm90IGhhdmUgYSBzdXBlciBjb250cm9sbGVyIVxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IHBhcmVudENvbnRyb2xsZXIgLSBDb250cm9sbGVyIG9mIHRoZSBwYXJlbnQgRE9NXG4gKiBAcGFyYW0ge2pxdWVyeX0gJGVsZW1lbnQgLSBUaGUgY3VycmVudCBET00galF1ZXJ5XG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnTmFtZSAtIHRoZSByZWdpc3RlcmVkIHRhZyBuYW1lIG9mIHRoZSBjdXJyZW50IERPTVxuICogQHBhcmFtIHtzdHJpbmd9IHN1cGVyVGFnTmFtZUxpc3QgLSB0YWcgbmFtZXMgb2Ygc3VwZXIgY29udHJvbGxlclxuICogQHJldHVybiB7QWJzdHJhY3RTREN9IC0gIG5ldyBDb250cm9sbGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250cm9sbGVyRmFjdG9yeShwYXJlbnRDb250cm9sbGVyLCAkZWxlbWVudCwgdGFnTmFtZSwgc3VwZXJUYWdOYW1lTGlzdCkge1xuICAgIGxldCBnVGFnTmFtZSA9IHRhZ05hbWVUb0NhbWVsQ2FzZSh0YWdOYW1lKTtcbiAgICBpZiAoR2xvYmFsW2dUYWdOYW1lXSkge1xuICAgICAgICBsZXQgY29udHJvbGxlciA9IEdsb2JhbFtnVGFnTmFtZV07XG4gICAgICAgIHNldFBhcmVudENvbnRyb2xsZXIocGFyZW50Q29udHJvbGxlciwgY29udHJvbGxlcik7XG4gICAgICAgIGNvbnRyb2xsZXIuJGNvbnRhaW5lciA9ICRlbGVtZW50O1xuXG4gICAgICAgIHJldHVybiBjb250cm9sbGVyO1xuICAgIH1cblxuICAgIHJldHVybiBjb250cm9sbGVyRmFjdG9yeUluc3RhbmNlKHBhcmVudENvbnRyb2xsZXIsICRlbGVtZW50LCB0YWdOYW1lLCBzdXBlclRhZ05hbWVMaXN0KTtcbn1cblxuLyoqXG4gKiBydW5Db250cm9sbGVyU2hvdyBmaXJzdCBydW5zIG9uTG9hZCBhbmQgZmlsbCBjb250ZW50IGZvciBhbGwgc3ViXG4gKiBjb250cm9sbGVyLiBPbmx5IGlmIGFsbCB0aGUgc3ViIGNvbnRyb2xsZXIgYXJlIGxvYWRlZCB0aGUgd2lsbFNob3dcbiAqIGNvbnRyb2wgZmxvdyBmdW5jdGlvbiBnZXRzIGNhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyIC0ganMgY29udHJvbGxlciBpbnN0YW5jZVxuICogQHBhcmFtIHtqcXVlcnl9ICRodG1sIC0galF1ZXJ5IGxvYWRlZCBjb250ZW50XG4gKiBAcmV0dXJuIHtQcm9taXNlPCo+fSAtIHJldHVybiBvZiB0aGUgb25Mb2FkIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHJ1bkNvbnRyb2xsZXJTaG93KGNvbnRyb2xsZXIsICRodG1sKSB7XG4gICAgcmV0dXJuIHJ1bkNvbnRyb2xsZXJGaWxsQ29udGVudChjb250cm9sbGVyLCAkaHRtbCkudGhlbihmdW5jdGlvbiAoYXJncykge1xuICAgICAgICBhcmdzID0gYXJncyB8fCB0cnVlO1xuICAgICAgICBpZiAoY29udHJvbGxlci53aWxsU2hvdykge1xuICAgICAgICAgICAgbGV0IGxvYWRQcm9taXNlT3JDb250ZW50ID0gY29udHJvbGxlci53aWxsU2hvdygpO1xuICAgICAgICAgICAgaWYgKGxvYWRQcm9taXNlT3JDb250ZW50IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2FkUHJvbWlzZU9yQ29udGVudC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9KTtcbn1cblxuXG4vKipcbiAqIHJ1bkNvbnRyb2xsZXJMb2FkIENhbGxzIHRoZSBvbkxvYWQgZnVuY3Rpb24gb2YgdGhlIGNvbnRyb2xsZXIuXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgdGhlIEhUTUwgaXMgc2V0IHRvIHRoZSBwYWdlLlxuICogVGhlIHBhcmFtZXRlciBpcyBhIGxpc3Qgb2YgY2hpbGRyZW4gb2YgdGhlIHRhZyBhbmQgdGhlIHJlZ2lzdGVyZWQgdGFnLlxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXIgLSBqcyBjb250cm9sbGVyIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtQcm9taXNlPCo+fSAtIHJldHVybiBvZiB0aGUgb25Mb2FkIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHJ1bkNvbnRyb2xsZXJMb2FkKGNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gbG9hZEZpbGVzRnJvbUNvbnRyb2xsZXIoY29udHJvbGxlcikudGhlbigoaHRtbCkgPT4ge1xuICAgICAgICBpZiAoIWNvbnRyb2xsZXIub25Mb2FkIHx8IGNvbnRyb2xsZXIuX29uTG9hZERvbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBodG1sO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udHJvbGxlci5fb25Mb2FkRG9uZSA9IHRydWU7XG4gICAgICAgIGxldCBsb2FkUHJvbWlzZSA9IGNvbnRyb2xsZXIub25Mb2FkKGh0bWwpO1xuICAgICAgICByZXR1cm4gKGxvYWRQcm9taXNlIHx8IHByb21pc2VEdW1teUZhY3RvcnkoKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogcnVuQ29udHJvbEZsb3dGdW5jdGlvbnMgcnVucyB0aGUgY29udHJvbCBmbG93IGZ1bmN0aW9uczpcbiAqIDEuIG9uTG9hZCgpXG4gKiAyLiBmaWxsIGNvbnRlbnRcbiAqIDMuIHdpbGxTaG93KGRvbSBwYXJhbWV0ZXIpXG4gKiA0LiByZWZyZXNoKClcbiAqXG4gKiBAcGFyYW0gY29udHJvbGxlclxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuQ29udHJvbEZsb3dGdW5jdGlvbnMoY29udHJvbGxlcikge1xuICAgIGNvbnN0IHByb21fY29udHJvbGxlciA9IHJ1bkNvbnRyb2xsZXJMb2FkKGNvbnRyb2xsZXIpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uICgkaHRtbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bkNvbnRyb2xsZXJTaG93KGNvbnRyb2xsZXIsICRodG1sKTtcbiAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcnVuUmVmcmVzaChjb250cm9sbGVyKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCRodG1sKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVuQ29udHJvbGxlckZpbGxDb250ZW50KGNvbnRyb2xsZXIsICRodG1sKTtcbiAgICAgICAgfSk7XG5cbiAgICBpZiAoY29udHJvbGxlci5sb2FkX2FzeW5jKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbV9jb250cm9sbGVyO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SZWZyZXNoKGNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gY29udHJvbGxlci5yZWZyZXNoICYmIGNvbnRyb2xsZXIucmVmcmVzaCgpO1xufSJdLCJuYW1lcyI6WyJwcm9taXNlRHVtbXlGYWN0b3J5IiwidGFnTmFtZVRvQ2FtZWxDYXNlIiwiYWdpbGVBZ2dyZWdhdGlvbiIsIkNPTlRST0xMRVJfQ0xBU1MiLCJnZXRDb250cm9sbGVyIiwibG9hZEZpbGVzRnJvbUNvbnRyb2xsZXIiLCJydW5Db250cm9sbGVyRmlsbENvbnRlbnQiLCJydW5PbkluaXRXaXRoUGFyYW1ldGVyIiwiR2xvYmFsIiwiY29udHJvbGxlckxpc3QiLCJ0YWdMaXN0IiwiT2JqZWN0Iiwia2V5cyIsInByZXBhcmVNaXhpbnMiLCJzdXBlclRhZ05hbWVMaXN0IiwidGFnTmFtZSIsImNvbmNhdCIsImZpbHRlciIsInZhbHVlIiwiaW5kZXgiLCJzZWxmIiwiaW5kZXhPZiIsImhhc0FkZGVkIiwidGFnIiwibmV3VGFnIiwiaW5jbHVkZXMiLCJwdXNoIiwic2V0UGFyZW50Q29udHJvbGxlciIsInBhcmVudENvbnRyb2xsZXIiLCJjb250cm9sbGVyIiwiY29udHJvbGxlck5hbWUiLCJfdGFnTmFtZSIsIl9jaGlsZENvbnRyb2xsZXIiLCJfcGFyZW50Q29udHJvbGxlciIsInJlc2V0Q2hpbGRyZW4iLCJmaW5kIiwiZWFjaCIsIiR0aGlzIiwiJCIsImNDb250cm9sbGVyIiwiY29udHJvbGxlckZhY3RvcnlJbnN0YW5jZSIsIiRlbGVtZW50IiwibWl4aW5Db250cm9sbGVyQ2xhc3MiLCJzdXBlclRhZ05hbWUiLCJjb250cm9sbGVyQ2xhc3MiLCIkY29udGFpbmVyIiwiY29udHJvbGxlckZhY3RvcnkiLCJnVGFnTmFtZSIsInJ1bkNvbnRyb2xsZXJTaG93IiwiJGh0bWwiLCJ0aGVuIiwiYXJncyIsIndpbGxTaG93IiwibG9hZFByb21pc2VPckNvbnRlbnQiLCJQcm9taXNlIiwicnVuQ29udHJvbGxlckxvYWQiLCJodG1sIiwib25Mb2FkIiwiX29uTG9hZERvbmUiLCJsb2FkUHJvbWlzZSIsInJ1bkNvbnRyb2xGbG93RnVuY3Rpb25zIiwicHJvbV9jb250cm9sbGVyIiwicnVuUmVmcmVzaCIsImNhdGNoIiwibG9hZF9hc3luYyIsInJlc29sdmUiLCJyZWZyZXNoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_controller.js\n");
|
38
38
|
|
39
39
|
/***/ }),
|
40
40
|
|
@@ -64,7 +64,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
64
64
|
\******************************************/
|
65
65
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
66
66
|
|
67
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ app: () => (/* binding */ app)\n/* harmony export */ });\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n/* harmony import */ var _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AbstractSDC.js */ \"./src/simpleDomControl/AbstractSDC.js\");\n/* harmony import */ var _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_dom_events.js */ \"./src/simpleDomControl/sdc_dom_events.js\");\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n\n\n\n\n\n\n\nconst PROPERTIES_UPDATE = {\n 'classname': 'class'\n};\nlet sdcDomFragment = function (element, props) {\n let $new_elem,\n is_self = false;\n if (typeof element === 'string') {\n $new_elem = $(document.createElement(element));\n } else {\n const tagName = `this.${element.name}`;\n $new_elem = $(document.createElement(tagName));\n $new_elem.data('handler', element);\n is_self = true;\n }\n if (props) {\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('on')) {\n $new_elem[0].addEventListener(k.substring(2).toLowerCase(), v);\n } else {\n if (PROPERTIES_UPDATE[k.toLowerCase()]) {\n k = PROPERTIES_UPDATE[k.toLowerCase()];\n }\n $new_elem[0].setAttribute(k, v);\n }\n });\n }\n if (is_self) {\n $new_elem.addClass('_bind_to_update_handler _with_handler');\n }\n return $new_elem;\n};\nwindow.sdcDom = function (tagName, props, ...children) {\n if (!tagName) {\n return '';\n }\n const $new_elem = sdcDomFragment(tagName, props);\n for (const c of children) {\n $new_elem.append(c);\n }\n return $new_elem;\n};\nlet app = {\n CSRF_TOKEN: window.CSRF_TOKEN || '',\n LANGUAGE_CODE: window.LANGUAGE_CODE || 'en',\n DEBUG: window.DEBUG || false,\n VERSION: window.VERSION || '0.0',\n tagNames: [],\n Global: _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global,\n rootController: null,\n _isInit: false,\n _origin_trigger: null,\n init_sdc: () => {\n if (!app._isInit) {\n app._isInit = true;\n if (!app._origin_trigger) {\n app._origin_trigger = $.fn.trigger;\n $.fn.trigger = function (event) {\n const ev_type = {}.hasOwnProperty.call(event, \"type\") ? event.type : event;\n if (!_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.includes(ev_type)) {\n _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.push(ev_type);\n $(window).on(ev_type, _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.windowEventHandler);\n }\n return app._origin_trigger.call(this, event);\n };\n app.updateJquery();\n } else {\n (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_6__.close)();\n }\n (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_6__.isConnected)();\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.initEvents)();\n app.rootController = app.rootController || new _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__.AbstractSDC();\n }\n app.tagNames = (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.tagList)();\n for (let [tag, controller] of Object.entries(app.Global)) {\n if (!controller.$container) _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[tag].$container = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)();\n }\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)(), app.rootController);\n },\n updateJquery: () => {\n $.fn.safeReplace = function ($elem) {\n return app.safeReplace($(this), $elem);\n };\n $.fn.safeEmpty = function () {\n return app.safeEmpty($(this));\n };\n $.fn.safeRemove = function () {\n return app.safeRemove($(this));\n };\n },\n controllerToTag: Controller => {\n let tagName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(Controller.name);\n return tagName.replace(/-controller$/, '');\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n registerGlobal: Controller => {\n let tagName = app.controllerToTag(Controller);\n let globalController = new Controller();\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [globalController, []];\n globalController._tagName = tagName;\n window[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = globalController;\n },\n cleanCache: () => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.cleanCache)();\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n register: Controller => {\n let tagName = app.controllerToTag(Controller);\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [Controller, []];\n Controller.prototype._tagName = tagName;\n return {\n /**\n *\n * @param {Array<string>} mixins Controller tag names\n */\n addMixin: (...mixins) => {\n for (let mixin of mixins) {\n let mixinName;\n if (typeof mixin === \"string\") {\n mixinName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(mixin);\n } else if (mixin) {\n mixinName = app.controllerToTag(mixin);\n }\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName][1].push(mixinName);\n }\n }\n };\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n post: (controller, url, args) => {\n if (!args) {\n args = {};\n }\n args.CSRF_TOKEN = app.CSRF_TOKEN;\n return app.ajax(controller, url, params, $.post);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n get: (controller, url, args) => {\n return app.ajax(controller, url, args, $.get);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @param {function} method $.get or $.post\n * @return {Promise}\n */\n ajax: (controller, url, args, method) => {\n if (!args) {\n args = {};\n }\n args.VERSION = app.VERSION;\n args._method = args._method || 'api';\n const p = new Promise((resolve, reject) => {\n return method(url, args).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch(reject);\n });\n return p;\n },\n submitFormAndUpdateView: (controller, form, url, method) => {\n let formData = new FormData(form);\n const redirector = a => {\n if (a['url-link']) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n window.location.href = a['url'];\n }\n };\n const p = new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n redirector(a);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch((a, b, c) => {\n if (a.status === 301) {\n a = a.responseJSON;\n redirector(a);\n resolve(a, b, c);\n } else {\n reject(a, b, c);\n }\n });\n });\n return p;\n },\n submitForm: (form, url, method) => {\n let formData = new FormData(form);\n return new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then(resolve).catch(reject);\n });\n },\n /**\n *\n * @param {jquery} $elem\n * @return {AbstractSDC}\n */\n getController: $elem => (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.getController)($elem),\n /**\n * safeEmpty removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM container to be emptyed\n */\n safeEmpty: $elem => {\n let $children = $elem.children();\n $children.each(function (_, element) {\n let $element = $(element);\n app.safeRemove($element);\n });\n return $elem;\n },\n /**\n * safeReplace removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM to be repleaced\n * @param $new - jQuery new DOM container\n */\n safeReplace: ($elem, $new) => {\n $new.insertBefore($elem);\n return app.safeRemove($elem);\n },\n /**\n * safeRemove removes a dom and deletes all child controller safely.\n *\n * @param $elem - jQuery Dom\n */\n safeRemove: $elem => {\n $elem.each(function () {\n let $this = $(this);\n if ($this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`)) {\n $this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`).remove();\n }\n });\n $elem.find(`.${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.CONTROLLER_CLASS}`).each(function () {\n const controller = $(this).data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`);\n controller && controller.remove();\n });\n return $elem.remove();\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @return {Promise<jQuery>}\n */\n reloadController: controller => {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadHTMLController)(controller).then(html => {\n let $html = $(html);\n controller._childController = {};\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, $html, controller).then(() => {\n app.safeEmpty(controller.$container);\n controller.$container.append($html);\n app.refresh(controller.$container, controller);\n });\n });\n },\n /**\n *\n * @param {jquery} $container\n * @param {AbstractSDC} leafController\n * @return {Promise<jQuery>}\n */\n refresh: ($container, leafController) => {\n if (!leafController) {\n leafController = app.getController($container);\n }\n if (!leafController) {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.promiseDummyFactory)();\n }\n let controller = leafController;\n let controllerList = [];\n while (controller) {\n controller._isEventsSet = false;\n controllerList.unshift(controller);\n controller = controller._parentController;\n }\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, leafController.$container, leafController).then(() => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadMethodHTML)(leafController).then(() => {\n for (let con of controllerList) {\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.setControllerEvents)(con);\n }\n leafController.onRefresh($container);\n });\n });\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0E7RUFDSWtDLE9BQU8sRUFBRUEsQ0FBQ2pDLFVBQVUsRUFBRTBELGNBQWMsS0FBSztJQUNyQyxJQUFJLENBQUNBLGNBQWMsRUFBRTtNQUNqQkEsY0FBYyxHQUFHaEYsR0FBRyxDQUFDMUMsYUFBYSxDQUFDZ0UsVUFBVSxDQUFDO0lBQ2xEO0lBRUEsSUFBSSxDQUFDMEQsY0FBYyxFQUFFO01BQ2pCLE9BQU8vSCxrRUFBbUIsQ0FBQyxDQUFDO0lBQ2hDO0lBRUEsSUFBSW9FLFVBQVUsR0FBRzJELGNBQWM7SUFDL0IsSUFBSXJILGNBQWMsR0FBRyxFQUFFO0lBQ3ZCLE9BQU8wRCxVQUFVLEVBQUU7TUFDZkEsVUFBVSxDQUFDNEQsWUFBWSxHQUFHLEtBQUs7TUFDL0J0SCxjQUFjLENBQUN1SCxPQUFPLENBQUM3RCxVQUFVLENBQUM7TUFDbENBLFVBQVUsR0FBR0EsVUFBVSxDQUFDOEQsaUJBQWlCO0lBQzdDO0lBRUEsT0FBT2pJLDJFQUE2QixDQUFDOEMsR0FBRyxDQUFDSyxRQUFRLEVBQUUyRSxjQUFjLENBQUMxRCxVQUFVLEVBQUUwRCxjQUFjLENBQUMsQ0FBQzdCLElBQUksQ0FBQyxNQUFNO01BQ3JHM0YsOERBQWdCLENBQUN3SCxjQUFjLENBQUMsQ0FBQzdCLElBQUksQ0FBQyxNQUFNO1FBQ3hDLEtBQUssSUFBSWlDLEdBQUcsSUFBSXpILGNBQWMsRUFBRTtVQUM1QkcsdUVBQW1CLENBQUNzSCxHQUFHLENBQUM7UUFDNUI7UUFFQUosY0FBYyxDQUFDSyxTQUFTLENBQUMvRCxVQUFVLENBQUM7TUFDeEMsQ0FBQyxDQUFDO0lBRU4sQ0FBQyxDQUFDO0VBQ047QUFDSixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9zaW1wbGVEb21Db250cm9sL3NkY19tYWluLmpzPzA4ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBjYW1lbENhc2VUb1RhZ05hbWUsXG4gICAgdGFnTmFtZVRvQ2FtZWxDYXNlLFxuICAgIGdldEJvZHksXG4gICAgdXBsb2FkRmlsZUZvcm1EYXRhLFxuICAgIHByb21pc2VEdW1teUZhY3Rvcnlcbn0gZnJvbSBcIi4vc2RjX3V0aWxzLmpzXCI7XG5pbXBvcnQge1xuICAgIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyLFxuICAgIHJlbG9hZEhUTUxDb250cm9sbGVyLFxuICAgIERBVEFfQ09OVFJPTExFUl9LRVksXG4gICAgQ09OVFJPTExFUl9DTEFTUywgZ2V0Q29udHJvbGxlciwgY2xlYW5DYWNoZSwgcmVsb2FkTWV0aG9kSFRNTFxufSBmcm9tIFwiLi9zZGNfdmlldy5qc1wiO1xuaW1wb3J0IHtBYnN0cmFjdFNEQ30gZnJvbSBcIi4vQWJzdHJhY3RTREMuanNcIjtcbmltcG9ydCB7R2xvYmFsLCBjb250cm9sbGVyTGlzdCwgdGFnTGlzdH0gZnJvbSBcIi4vc2RjX2NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCB7aW5pdEV2ZW50cywgc2V0Q29udHJvbGxlckV2ZW50cywgU1REX0VWRU5UX0xJU1QsIHdpbmRvd0V2ZW50SGFuZGxlcn0gZnJvbSBcIi4vc2RjX2RvbV9ldmVudHMuanNcIjtcbmltcG9ydCB7dHJpZ2dlcn0gZnJvbSBcIi4vc2RjX2V2ZW50cy5qc1wiO1xuaW1wb3J0IHtpc0Nvbm5lY3RlZCwgY2xvc2V9IGZyb20gXCIuL3NkY19zZXJ2ZXJfY2FsbC5qc1wiO1xuXG5jb25zdCBQUk9QRVJUSUVTX1VQREFURSA9IHsnY2xhc3NuYW1lJzogJ2NsYXNzJ31cblxubGV0IHNkY0RvbUZyYWdtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzKSB7XG4gICAgbGV0ICRuZXdfZWxlbSwgaXNfc2VsZiA9IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgJG5ld19lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YWdOYW1lID0gYHRoaXMuJHtlbGVtZW50Lm5hbWV9YDtcbiAgICAgICAgJG5ld19lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpKTtcbiAgICAgICAgJG5ld19lbGVtLmRhdGEoJ2hhbmRsZXInLCBlbGVtZW50KTtcbiAgICAgICAgaXNfc2VsZiA9IHRydWVcbiAgICB9XG5cblxuICAgIGlmIChwcm9wcykge1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wcykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgICAgICBpZiAoay5zdGFydHNXaXRoKCdvbicpKSB7XG4gICAgICAgICAgICAgICAgJG5ld19lbGVtWzBdLmFkZEV2ZW50TGlzdGVuZXIoay5zdWJzdHJpbmcoMikudG9Mb3dlckNhc2UoKSwgdik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgICAgICAgICAgICAgICAgayA9IFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRuZXdfZWxlbVswXS5zZXRBdHRyaWJ1dGUoaywgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc19zZWxmKSB7XG4gICAgICAgICRuZXdfZWxlbS5hZGRDbGFzcygnX2JpbmRfdG9fdXBkYXRlX2hhbmRsZXIgX3dpdGhfaGFuZGxlcicpO1xuICAgIH1cblxuICAgIHJldHVybiAkbmV3X2VsZW07XG59XG5cbndpbmRvdy5zZGNEb20gPSBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIC4uLmNoaWxkcmVuKSB7XG4gICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgJG5ld19lbGVtID0gc2RjRG9tRnJhZ21lbnQodGFnTmFtZSwgcHJvcHMpO1xuICAgIGZvciAoY29uc3QgYyBvZiBjaGlsZHJlbikge1xuICAgICAgICAkbmV3X2VsZW0uYXBwZW5kKGMpO1xuICAgIH1cbiAgICByZXR1cm4gJG5ld19lbGVtO1xuXG59XG5cbmV4cG9ydCBsZXQgYXBwID0ge1xuICAgIENTUkZfVE9LRU46IHdpbmRvdy5DU1JGX1RPS0VOIHx8ICcnLFxuICAgIExBTkdVQUdFX0NPREU6IHdpbmRvdy5MQU5HVUFHRV9DT0RFIHx8ICdlbicsXG4gICAgREVCVUc6IHdpbmRvdy5ERUJVRyB8fCBmYWxzZSxcbiAgICBWRVJTSU9OOiB3aW5kb3cuVkVSU0lPTiB8fCAnMC4wJyxcbiAgICB0YWdOYW1lczogW10sXG4gICAgR2xvYmFsOiBHbG9iYWwsXG4gICAgcm9vdENvbnRyb2xsZXI6IG51bGwsXG4gICAgX2lzSW5pdDogZmFsc2UsXG4gICAgX29yaWdpbl90cmlnZ2VyOiBudWxsLFxuXG4gICAgaW5pdF9zZGM6ICgpID0+IHtcbiAgICAgICAgaWYgKCFhcHAuX2lzSW5pdCkge1xuICAgICAgICAgICAgYXBwLl9pc0luaXQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCFhcHAuX29yaWdpbl90cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgYXBwLl9vcmlnaW5fdHJpZ2dlciA9ICQuZm4udHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAkLmZuLnRyaWdnZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZfdHlwZSA9IHt9Lmhhc093blByb3BlcnR5LmNhbGwoZXZlbnQsIFwidHlwZVwiKSA/IGV2ZW50LnR5cGUgOiBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFTVERfRVZFTlRfTElTVC5pbmNsdWRlcyhldl90eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgU1REX0VWRU5UX0xJU1QucHVzaChldl90eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbihldl90eXBlLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHAuX29yaWdpbl90cmlnZ2VyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFwcC51cGRhdGVKcXVlcnkoKTtcbiAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpc0Nvbm5lY3RlZCgpO1xuXG4gICAgICAgICAgICBpbml0RXZlbnRzKCk7XG5cbiAgICAgICAgICAgIGFwcC5yb290Q29udHJvbGxlciA9IGFwcC5yb290Q29udHJvbGxlciB8fCBuZXcgQWJzdHJhY3RTREMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcC50YWdOYW1lcyA9IHRhZ0xpc3QoKTtcblxuICAgICAgICBmb3IobGV0IFt0YWcsIGNvbnRyb2xsZXJdIG9mIE9iamVjdC5lbnRyaWVzKGFwcC5HbG9iYWwpKSB7XG4gICAgICAgICAgICBpZighY29udHJvbGxlci4kY29udGFpbmVyKSBHbG9iYWxbdGFnXS4kY29udGFpbmVyID0gZ2V0Qm9keSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgZ2V0Qm9keSgpLCBhcHAucm9vdENvbnRyb2xsZXIpO1xuICAgIH0sXG5cbiAgICB1cGRhdGVKcXVlcnk6ICgpPT4ge1xuICAgICAgICAkLmZuLnNhZmVSZXBsYWNlID0gZnVuY3Rpb24gKCRlbGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwLnNhZmVSZXBsYWNlKCQodGhpcyksICRlbGVtKTtcbiAgICAgICAgfVxuICAgICAgICAkLmZuLnNhZmVFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHAuc2FmZUVtcHR5KCQodGhpcykpO1xuICAgICAgICB9XG4gICAgICAgICQuZm4uc2FmZVJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHAuc2FmZVJlbW92ZSgkKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb250cm9sbGVyVG9UYWc6IChDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gY2FtZWxDYXNlVG9UYWdOYW1lKENvbnRyb2xsZXIubmFtZSk7XG4gICAgICAgIHJldHVybiB0YWdOYW1lLnJlcGxhY2UoLy1jb250cm9sbGVyJC8sICcnKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBDb250cm9sbGVyXG4gICAgICovXG4gICAgcmVnaXN0ZXJHbG9iYWw6IChDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gYXBwLmNvbnRyb2xsZXJUb1RhZyhDb250cm9sbGVyKTtcbiAgICAgICAgbGV0IGdsb2JhbENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICAgICAgICBjb250cm9sbGVyTGlzdFt0YWdOYW1lXSA9IFtnbG9iYWxDb250cm9sbGVyLCBbXV07XG4gICAgICAgIGdsb2JhbENvbnRyb2xsZXIuX3RhZ05hbWUgPSB0YWdOYW1lO1xuICAgICAgICB3aW5kb3dbdGFnTmFtZVRvQ2FtZWxDYXNlKHRhZ05hbWUpXSA9IEdsb2JhbFt0YWdOYW1lVG9DYW1lbENhc2UodGFnTmFtZSldID0gZ2xvYmFsQ29udHJvbGxlcjtcbiAgICB9LFxuXG4gICAgY2xlYW5DYWNoZTogKCkgPT4ge1xuICAgICAgICBjbGVhbkNhY2hlKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gQ29udHJvbGxlclxuICAgICAqL1xuICAgIHJlZ2lzdGVyOiAoQ29udHJvbGxlcikgPT4ge1xuICAgICAgICBsZXQgdGFnTmFtZSA9IGFwcC5jb250cm9sbGVyVG9UYWcoQ29udHJvbGxlcik7XG4gICAgICAgIGNvbnRyb2xsZXJMaXN0W3RhZ05hbWVdID0gW0NvbnRyb2xsZXIsIFtdXTtcbiAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuX3RhZ05hbWUgPSB0YWdOYW1lO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBtaXhpbnMgQ29udHJvbGxlciB0YWcgbmFtZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkTWl4aW46ICguLi5taXhpbnMpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBtaXhpbiBvZiBtaXhpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1peGluTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtaXhpbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5OYW1lID0gY2FtZWxDYXNlVG9UYWdOYW1lKG1peGluKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtaXhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5OYW1lID0gYXBwLmNvbnRyb2xsZXJUb1RhZyhtaXhpbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyTGlzdFt0YWdOYW1lXVsxXS5wdXNoKG1peGluTmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgcG9zdDogKGNvbnRyb2xsZXIsIHVybCwgYXJncykgPT4ge1xuICAgICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgICAgIGFyZ3MgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFyZ3MuQ1NSRl9UT0tFTiA9IGFwcC5DU1JGX1RPS0VOO1xuICAgICAgICByZXR1cm4gYXBwLmFqYXgoY29udHJvbGxlciwgdXJsLCBwYXJhbXMsICQucG9zdCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgZ2V0OiAoY29udHJvbGxlciwgdXJsLCBhcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBhcHAuYWpheChjb250cm9sbGVyLCB1cmwsIGFyZ3MsICQuZ2V0KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kICQuZ2V0IG9yICQucG9zdFxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgYWpheDogKGNvbnRyb2xsZXIsIHVybCwgYXJncywgbWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghYXJncykge1xuICAgICAgICAgICAgYXJncyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgYXJncy5WRVJTSU9OID0gYXBwLlZFUlNJT047XG4gICAgICAgIGFyZ3MuX21ldGhvZCA9IGFyZ3MuX21ldGhvZCB8fCAnYXBpJztcblxuICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh1cmwsIGFyZ3MpLnRoZW4oKGEsIGIsIGMpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGEsIGIsIGMpO1xuICAgICAgICAgICAgICAgIGlmIChhLnN0YXR1cyA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKCdvbk5hdkxpbmsnLCBhWyd1cmwtbGluayddKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnJlZnJlc2goY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfSxcblxuICAgIHN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3OiAoY29udHJvbGxlciwgZm9ybSwgdXJsLCBtZXRob2QpID0+IHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGZvcm0pO1xuICAgICAgICBjb25zdCByZWRpcmVjdG9yID0gKGEpPT4ge1xuICAgICAgICAgICAgaWYgKGFbJ3VybC1saW5rJ10pIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKCdvbk5hdkxpbmsnLCBhWyd1cmwtbGluayddKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhWyd1cmwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHVwbG9hZEZpbGVGb3JtRGF0YShmb3JtRGF0YSwgKHVybCB8fCBmb3JtLmFjdGlvbiksIChtZXRob2QgfHwgZm9ybS5tZXRob2QpKVxuICAgICAgICAgICAgICAgIC50aGVuKChhLCBiLCBjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLnN0YXR1cyA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RvcihhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnJlZnJlc2goY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGEsYixjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGEuc3RhdHVzID09PSAzMDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnJlc3BvbnNlSlNPTjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0b3IoYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGEsIGIsIGMpO1xuICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHA7XG5cbiAgICB9LFxuICAgIHN1Ym1pdEZvcm06IChmb3JtLCB1cmwsIG1ldGhvZCkgPT4ge1xuICAgICAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB1cGxvYWRGaWxlRm9ybURhdGEoZm9ybURhdGEsICh1cmwgfHwgZm9ybS5hY3Rpb24pLCAobWV0aG9kIHx8IGZvcm0ubWV0aG9kKSlcbiAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2pxdWVyeX0gJGVsZW1cbiAgICAgKiBAcmV0dXJuIHtBYnN0cmFjdFNEQ31cbiAgICAgKi9cbiAgICBnZXRDb250cm9sbGVyOiAoJGVsZW0pID0+IGdldENvbnRyb2xsZXIoJGVsZW0pLFxuXG4gICAgLyoqXG4gICAgICogc2FmZUVtcHR5IHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIGNvbnRhaW5lciB0byBiZSBlbXB0eWVkXG4gICAgICovXG4gICAgc2FmZUVtcHR5OiAoJGVsZW0pID0+IHtcbiAgICAgICAgbGV0ICRjaGlsZHJlbiA9ICRlbGVtLmNoaWxkcmVuKCk7XG4gICAgICAgICRjaGlsZHJlbi5lYWNoKGZ1bmN0aW9uIChfLCBlbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgYXBwLnNhZmVSZW1vdmUoJGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gJGVsZW07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHNhZmVSZXBsYWNlIHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIHRvIGJlIHJlcGxlYWNlZFxuICAgICAqIEBwYXJhbSAkbmV3IC0galF1ZXJ5IG5ldyBET00gY29udGFpbmVyXG4gICAgICovXG4gICAgc2FmZVJlcGxhY2U6ICgkZWxlbSwgJG5ldykgPT4ge1xuICAgICAgICAkbmV3Lmluc2VydEJlZm9yZSgkZWxlbSk7XG4gICAgICAgIHJldHVybiBhcHAuc2FmZVJlbW92ZSgkZWxlbSk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogc2FmZVJlbW92ZSByZW1vdmVzIGEgZG9tIGFuZCBkZWxldGVzIGFsbCBjaGlsZCBjb250cm9sbGVyIHNhZmVseS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAkZWxlbSAtIGpRdWVyeSBEb21cbiAgICAgKi9cbiAgICBzYWZlUmVtb3ZlOiAoJGVsZW0pID0+IHtcbiAgICAgICAgJGVsZW0uZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICAgICAgaWYgKCR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKSkge1xuICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJGVsZW0uZmluZChgLiR7Q09OVFJPTExFUl9DTEFTU31gKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSAkKHRoaXMpLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5yZW1vdmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuICRlbGVtLnJlbW92ZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGpRdWVyeT59XG4gICAgICovXG4gICAgcmVsb2FkQ29udHJvbGxlcjogKGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlbG9hZEhUTUxDb250cm9sbGVyKGNvbnRyb2xsZXIpLnRoZW4oKGh0bWwpID0+IHtcbiAgICAgICAgICAgIGxldCAkaHRtbCA9ICQoaHRtbCk7XG4gICAgICAgICAgICBjb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXIgPSB7fTtcbiAgICAgICAgICAgIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgJGh0bWwsIGNvbnRyb2xsZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGFwcC5zYWZlRW1wdHkoY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLiRjb250YWluZXIuYXBwZW5kKCRodG1sKTtcbiAgICAgICAgICAgICAgICBhcHAucmVmcmVzaChjb250cm9sbGVyLiRjb250YWluZXIsIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gbGVhZkNvbnRyb2xsZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGpRdWVyeT59XG4gICAgICovXG4gICAgcmVmcmVzaDogKCRjb250YWluZXIsIGxlYWZDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGlmICghbGVhZkNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGxlYWZDb250cm9sbGVyID0gYXBwLmdldENvbnRyb2xsZXIoJGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxlYWZDb250cm9sbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZUR1bW15RmFjdG9yeSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbnRyb2xsZXIgPSBsZWFmQ29udHJvbGxlcjtcbiAgICAgICAgbGV0IGNvbnRyb2xsZXJMaXN0ID0gW107XG4gICAgICAgIHdoaWxlIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLl9pc0V2ZW50c1NldCA9IGZhbHNlO1xuICAgICAgICAgICAgY29udHJvbGxlckxpc3QudW5zaGlmdChjb250cm9sbGVyKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyLl9wYXJlbnRDb250cm9sbGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgbGVhZkNvbnRyb2xsZXIuJGNvbnRhaW5lciwgbGVhZkNvbnRyb2xsZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVsb2FkTWV0aG9kSFRNTChsZWFmQ29udHJvbGxlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY29uIG9mIGNvbnRyb2xsZXJMaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldENvbnRyb2xsZXJFdmVudHMoY29uKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZWFmQ29udHJvbGxlci5vblJlZnJlc2goJGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcbiAgICB9LFxufTsiXSwibmFtZXMiOlsiY2FtZWxDYXNlVG9UYWdOYW1lIiwidGFnTmFtZVRvQ2FtZWxDYXNlIiwiZ2V0Qm9keSIsInVwbG9hZEZpbGVGb3JtRGF0YSIsInByb21pc2VEdW1teUZhY3RvcnkiLCJyZXBsYWNlVGFnRWxlbWVudHNJbkNvbnRhaW5lciIsInJlbG9hZEhUTUxDb250cm9sbGVyIiwiREFUQV9DT05UUk9MTEVSX0tFWSIsIkNPTlRST0xMRVJfQ0xBU1MiLCJnZXRDb250cm9sbGVyIiwiY2xlYW5DYWNoZSIsInJlbG9hZE1ldGhvZEhUTUwiLCJBYnN0cmFjdFNEQyIsIkdsb2JhbCIsImNvbnRyb2xsZXJMaXN0IiwidGFnTGlzdCIsImluaXRFdmVudHMiLCJzZXRDb250cm9sbGVyRXZlbnRzIiwiU1REX0VWRU5UX0xJU1QiLCJ3aW5kb3dFdmVudEhhbmRsZXIiLCJ0cmlnZ2VyIiwiaXNDb25uZWN0ZWQiLCJjbG9zZSIsIlBST1BFUlRJRVNfVVBEQVRFIiwic2RjRG9tRnJhZ21lbnQiLCJlbGVtZW50IiwicHJvcHMiLCIkbmV3X2VsZW0iLCJpc19zZWxmIiwiJCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInRhZ05hbWUiLCJuYW1lIiwiZGF0YSIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwiayIsInYiLCJzdGFydHNXaXRoIiwiYWRkRXZlbnRMaXN0ZW5lciIsInN1YnN0cmluZyIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiYWRkQ2xhc3MiLCJ3aW5kb3ciLCJzZGNEb20iLCJjaGlsZHJlbiIsImMiLCJhcHBlbmQiLCJhcHAiLCJDU1JGX1RPS0VOIiwiTEFOR1VBR0VfQ09ERSIsIkRFQlVHIiwiVkVSU0lPTiIsInRhZ05hbWVzIiwicm9vdENvbnRyb2xsZXIiLCJfaXNJbml0IiwiX29yaWdpbl90cmlnZ2VyIiwiaW5pdF9zZGMiLCJmbiIsImV2ZW50IiwiZXZfdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInR5cGUiLCJpbmNsdWRlcyIsInB1c2giLCJvbiIsInVwZGF0ZUpxdWVyeSIsInRhZyIsImNvbnRyb2xsZXIiLCIkY29udGFpbmVyIiwic2FmZVJlcGxhY2UiLCIkZWxlbSIsInNhZmVFbXB0eSIsInNhZmVSZW1vdmUiLCJjb250cm9sbGVyVG9UYWciLCJDb250cm9sbGVyIiwicmVwbGFjZSIsInJlZ2lzdGVyR2xvYmFsIiwiZ2xvYmFsQ29udHJvbGxlciIsIl90YWdOYW1lIiwicmVnaXN0ZXIiLCJwcm90b3R5cGUiLCJhZGRNaXhpbiIsIm1peGlucyIsIm1peGluIiwibWl4aW5OYW1lIiwicG9zdCIsInVybCIsImFyZ3MiLCJhamF4IiwicGFyYW1zIiwiZ2V0IiwibWV0aG9kIiwiX21ldGhvZCIsInAiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInRoZW4iLCJhIiwiYiIsInN0YXR1cyIsInJlZnJlc2giLCJjYXRjaCIsInN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3IiwiZm9ybSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJyZWRpcmVjdG9yIiwibG9jYXRpb24iLCJocmVmIiwiYWN0aW9uIiwicmVzcG9uc2VKU09OIiwic3VibWl0Rm9ybSIsIiRjaGlsZHJlbiIsImVhY2giLCJfIiwiJGVsZW1lbnQiLCIkbmV3IiwiaW5zZXJ0QmVmb3JlIiwiJHRoaXMiLCJyZW1vdmUiLCJmaW5kIiwicmVsb2FkQ29udHJvbGxlciIsImh0bWwiLCIkaHRtbCIsIl9jaGlsZENvbnRyb2xsZXIiLCJsZWFmQ29udHJvbGxlciIsIl9pc0V2ZW50c1NldCIsInVuc2hpZnQiLCJfcGFyZW50Q29udHJvbGxlciIsImNvbiIsIm9uUmVmcmVzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_main.js\n");
|
67
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ app: () => (/* binding */ app)\n/* harmony export */ });\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n/* harmony import */ var _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AbstractSDC.js */ \"./src/simpleDomControl/AbstractSDC.js\");\n/* harmony import */ var _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_dom_events.js */ \"./src/simpleDomControl/sdc_dom_events.js\");\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n\n\n\n\n\n\n\n\nconst PROPERTIES_UPDATE = {\n 'classname': 'class'\n};\nlet sdcDomFragment = function (element, props) {\n let $new_elem,\n is_self = false;\n if (typeof element === 'string') {\n $new_elem = $(document.createElement(element));\n } else {\n const tagName = `this.${element.name}`;\n $new_elem = $(document.createElement(tagName));\n $new_elem.data('handler', element);\n is_self = true;\n }\n if (props) {\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('on')) {\n $new_elem[0].addEventListener(k.substring(2).toLowerCase(), v);\n } else {\n if (PROPERTIES_UPDATE[k.toLowerCase()]) {\n k = PROPERTIES_UPDATE[k.toLowerCase()];\n }\n $new_elem[0].setAttribute(k, v);\n }\n });\n }\n if (is_self) {\n $new_elem.addClass('_bind_to_update_handler _with_handler');\n }\n return $new_elem;\n};\nwindow.sdcDom = function (tagName, props, ...children) {\n if (!tagName) {\n return '';\n }\n const $new_elem = sdcDomFragment(tagName, props);\n for (const c of children) {\n $new_elem.append(c);\n }\n return $new_elem;\n};\nlet app = {\n CSRF_TOKEN: window.CSRF_TOKEN || '',\n LANGUAGE_CODE: window.LANGUAGE_CODE || 'en',\n DEBUG: window.DEBUG || false,\n VERSION: window.VERSION || '0.0',\n tagNames: [],\n Global: _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global,\n rootController: null,\n _isInit: false,\n _origin_trigger: null,\n init_sdc: () => {\n if (!app._isInit) {\n app._isInit = true;\n if (!app._origin_trigger) {\n app._origin_trigger = $.fn.trigger;\n $.fn.trigger = function (event) {\n const ev_type = {}.hasOwnProperty.call(event, \"type\") ? event.type : event;\n if (!_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.includes(ev_type)) {\n _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.push(ev_type);\n $(window).on(ev_type, _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.windowEventHandler);\n }\n return app._origin_trigger.call(this, event);\n };\n app.updateJquery();\n } else {\n (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_6__.close)();\n }\n (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_6__.isConnected)();\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.initEvents)();\n app.rootController = app.rootController || new _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__.AbstractSDC();\n }\n app.tagNames = (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.tagList)();\n for (let [tag, controller] of Object.entries(app.Global)) {\n if (!controller.$container) _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[tag].$container = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)();\n }\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)(), app.rootController);\n },\n updateJquery: () => {\n $.fn.safeReplace = function ($elem) {\n return app.safeReplace($(this), $elem);\n };\n $.fn.safeEmpty = function () {\n return app.safeEmpty($(this));\n };\n $.fn.safeRemove = function () {\n return app.safeRemove($(this));\n };\n },\n controllerToTag: Controller => {\n let tagName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(Controller.name);\n return tagName.replace(/-controller$/, '');\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n registerGlobal: Controller => {\n let tagName = app.controllerToTag(Controller);\n let globalController = new Controller();\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [globalController, []];\n globalController._tagName = tagName;\n window[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = globalController;\n },\n cleanCache: () => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.cleanCache)();\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n register: Controller => {\n let tagName = app.controllerToTag(Controller);\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [Controller, []];\n Controller.prototype._tagName = tagName;\n return {\n /**\n *\n * @param {Array<string>} mixins Controller tag names\n */\n addMixin: (...mixins) => {\n for (let mixin of mixins) {\n let mixinName;\n if (typeof mixin === \"string\") {\n mixinName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(mixin);\n } else if (mixin) {\n mixinName = app.controllerToTag(mixin);\n }\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName][1].push(mixinName);\n }\n }\n };\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n post: (controller, url, args) => {\n if (!args) {\n args = {};\n }\n args.CSRF_TOKEN = app.CSRF_TOKEN;\n return app.ajax(controller, url, params, $.post);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n get: (controller, url, args) => {\n return app.ajax(controller, url, args, $.get);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @param {function} method $.get or $.post\n * @return {Promise}\n */\n ajax: (controller, url, args, method) => {\n if (!args) {\n args = {};\n }\n args.VERSION = app.VERSION;\n args._method = args._method || 'api';\n const p = new Promise((resolve, reject) => {\n return method(url, args).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch(reject);\n });\n return p;\n },\n submitFormAndUpdateView: (controller, form, url, method) => {\n let formData = new FormData(form);\n const redirector = a => {\n if (a['url-link']) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n window.location.href = a['url'];\n }\n };\n const p = new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n redirector(a);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch((a, b, c) => {\n if (a.status === 301) {\n a = a.responseJSON;\n redirector(a);\n resolve(a, b, c);\n } else {\n reject(a, b, c);\n }\n });\n });\n return p;\n },\n submitForm: (form, url, method) => {\n let formData = new FormData(form);\n return new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then(resolve).catch(reject);\n });\n },\n /**\n *\n * @param {jquery} $elem\n * @return {AbstractSDC}\n */\n getController: $elem => (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.getController)($elem),\n /**\n * safeEmpty removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM container to be emptyed\n */\n safeEmpty: $elem => {\n let $children = $elem.children();\n $children.each(function (_, element) {\n let $element = $(element);\n app.safeRemove($element);\n });\n return $elem;\n },\n /**\n * safeReplace removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM to be repleaced\n * @param $new - jQuery new DOM container\n */\n safeReplace: ($elem, $new) => {\n $new.insertBefore($elem);\n return app.safeRemove($elem);\n },\n /**\n * safeRemove removes a dom and deletes all child controller safely.\n *\n * @param $elem - jQuery Dom\n */\n safeRemove: $elem => {\n $elem.each(function () {\n let $this = $(this);\n if ($this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`)) {\n $this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`).remove();\n }\n });\n $elem.find(`.${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.CONTROLLER_CLASS}`).each(function () {\n const controller = $(this).data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`);\n controller && controller.remove();\n });\n return $elem.remove();\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @return {Promise<jQuery>}\n */\n reloadController: controller => {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadHTMLController)(controller).then(html => {\n let $html = $(html);\n return app.reconcile(controller, $html);\n });\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {jquery} $virtualNode\n * @param {jquery} $realNode\n */\n reconcile: (controller, $virtualNode, $realNode = null) => {\n if (!$realNode) {\n let $temp = controller.$container.clone().empty();\n $temp.append($virtualNode);\n $virtualNode = $temp;\n }\n $realNode = $realNode ?? controller.$container;\n return app.refresh($virtualNode, controller, true).then(() => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reconcile)($virtualNode, $realNode, controller);\n (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.resetChildren)(controller);\n return controller;\n });\n },\n /**\n *\n * @param {jquery} $container\n * @param {AbstractSDC} leafController\n * @param {bool} silent\n * @return {Promise<jQuery>}\n */\n refresh: ($container, leafController, silent = false) => {\n if (!leafController) {\n leafController = app.getController($container);\n }\n if (!leafController) {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.promiseDummyFactory)();\n }\n let controller = leafController;\n let controllerList = [];\n while (controller) {\n controller._isEventsSet = false;\n controllerList.unshift(controller);\n controller = controller._parentController;\n }\n $container ??= leafController.$container;\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, $container, leafController).then(() => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadMethodHTML)(leafController, $container).then(() => {\n for (let con of controllerList) {\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.setControllerEvents)(con);\n }\n !silent && leafController.onRefresh($container);\n });\n });\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SSxDQUFDLE1BQU07UUFDcEQsS0FBSyxJQUFJc0MsR0FBRyxJQUFJaEksY0FBYyxFQUFFO1VBQzVCSSx1RUFBbUIsQ0FBQzRILEdBQUcsQ0FBQztRQUM1QjtRQUVBLENBQUNKLE1BQU0sSUFBSUQsY0FBYyxDQUFDTSxTQUFTLENBQUNwRSxVQUFVLENBQUM7TUFDbkQsQ0FBQyxDQUFDO0lBRU4sQ0FBQyxDQUFDO0VBQ047QUFDSixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9zaW1wbGVEb21Db250cm9sL3NkY19tYWluLmpzPzA4ZmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBjYW1lbENhc2VUb1RhZ05hbWUsXG4gICAgdGFnTmFtZVRvQ2FtZWxDYXNlLFxuICAgIGdldEJvZHksXG4gICAgdXBsb2FkRmlsZUZvcm1EYXRhLFxuICAgIHByb21pc2VEdW1teUZhY3Rvcnlcbn0gZnJvbSBcIi4vc2RjX3V0aWxzLmpzXCI7XG5pbXBvcnQge1xuICAgIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyLFxuICAgIHJlbG9hZEhUTUxDb250cm9sbGVyLFxuICAgIERBVEFfQ09OVFJPTExFUl9LRVksXG4gICAgQ09OVFJPTExFUl9DTEFTUywgZ2V0Q29udHJvbGxlciwgY2xlYW5DYWNoZSwgcmVsb2FkTWV0aG9kSFRNTFxufSBmcm9tIFwiLi9zZGNfdmlldy5qc1wiO1xuaW1wb3J0IHtBYnN0cmFjdFNEQ30gZnJvbSBcIi4vQWJzdHJhY3RTREMuanNcIjtcbmltcG9ydCB7R2xvYmFsLCBjb250cm9sbGVyTGlzdCwgdGFnTGlzdCwgcmVzZXRDaGlsZHJlbn0gZnJvbSBcIi4vc2RjX2NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCB7aW5pdEV2ZW50cywgc2V0Q29udHJvbGxlckV2ZW50cywgU1REX0VWRU5UX0xJU1QsIHdpbmRvd0V2ZW50SGFuZGxlcn0gZnJvbSBcIi4vc2RjX2RvbV9ldmVudHMuanNcIjtcbmltcG9ydCB7cmVjb25jaWxlfSBmcm9tIFwiLi9zZGNfdmlldy5qc1wiO1xuaW1wb3J0IHt0cmlnZ2VyfSBmcm9tIFwiLi9zZGNfZXZlbnRzLmpzXCI7XG5pbXBvcnQge2lzQ29ubmVjdGVkLCBjbG9zZX0gZnJvbSBcIi4vc2RjX3NlcnZlcl9jYWxsLmpzXCI7XG5cbmNvbnN0IFBST1BFUlRJRVNfVVBEQVRFID0geydjbGFzc25hbWUnOiAnY2xhc3MnfVxuXG5sZXQgc2RjRG9tRnJhZ21lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgcHJvcHMpIHtcbiAgICBsZXQgJG5ld19lbGVtLCBpc19zZWxmID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAkbmV3X2VsZW0gPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRhZ05hbWUgPSBgdGhpcy4ke2VsZW1lbnQubmFtZX1gO1xuICAgICAgICAkbmV3X2VsZW0gPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSkpO1xuICAgICAgICAkbmV3X2VsZW0uZGF0YSgnaGFuZGxlcicsIGVsZW1lbnQpO1xuICAgICAgICBpc19zZWxmID0gdHJ1ZVxuICAgIH1cblxuXG4gICAgaWYgKHByb3BzKSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzKS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgICAgICAgIGlmIChrLnN0YXJ0c1dpdGgoJ29uJykpIHtcbiAgICAgICAgICAgICAgICAkbmV3X2VsZW1bMF0uYWRkRXZlbnRMaXN0ZW5lcihrLnN1YnN0cmluZygyKS50b0xvd2VyQ2FzZSgpLCB2KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgICAgICAgICAgICAgICAgayA9IFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRuZXdfZWxlbVswXS5zZXRBdHRyaWJ1dGUoaywgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc19zZWxmKSB7XG4gICAgICAgICRuZXdfZWxlbS5hZGRDbGFzcygnX2JpbmRfdG9fdXBkYXRlX2hhbmRsZXIgX3dpdGhfaGFuZGxlcicpO1xuICAgIH1cblxuICAgIHJldHVybiAkbmV3X2VsZW07XG59XG5cbndpbmRvdy5zZGNEb20gPSBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIC4uLmNoaWxkcmVuKSB7XG4gICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgJG5ld19lbGVtID0gc2RjRG9tRnJhZ21lbnQodGFnTmFtZSwgcHJvcHMpO1xuICAgIGZvciAoY29uc3QgYyBvZiBjaGlsZHJlbikge1xuICAgICAgICAkbmV3X2VsZW0uYXBwZW5kKGMpO1xuICAgIH1cbiAgICByZXR1cm4gJG5ld19lbGVtO1xuXG59XG5cbmV4cG9ydCBsZXQgYXBwID0ge1xuICAgIENTUkZfVE9LRU46IHdpbmRvdy5DU1JGX1RPS0VOIHx8ICcnLFxuICAgIExBTkdVQUdFX0NPREU6IHdpbmRvdy5MQU5HVUFHRV9DT0RFIHx8ICdlbicsXG4gICAgREVCVUc6IHdpbmRvdy5ERUJVRyB8fCBmYWxzZSxcbiAgICBWRVJTSU9OOiB3aW5kb3cuVkVSU0lPTiB8fCAnMC4wJyxcbiAgICB0YWdOYW1lczogW10sXG4gICAgR2xvYmFsOiBHbG9iYWwsXG4gICAgcm9vdENvbnRyb2xsZXI6IG51bGwsXG4gICAgX2lzSW5pdDogZmFsc2UsXG4gICAgX29yaWdpbl90cmlnZ2VyOiBudWxsLFxuXG4gICAgaW5pdF9zZGM6ICgpID0+IHtcbiAgICAgICAgaWYgKCFhcHAuX2lzSW5pdCkge1xuICAgICAgICAgICAgYXBwLl9pc0luaXQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCFhcHAuX29yaWdpbl90cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgYXBwLl9vcmlnaW5fdHJpZ2dlciA9ICQuZm4udHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAkLmZuLnRyaWdnZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZfdHlwZSA9IHt9Lmhhc093blByb3BlcnR5LmNhbGwoZXZlbnQsIFwidHlwZVwiKSA/IGV2ZW50LnR5cGUgOiBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFTVERfRVZFTlRfTElTVC5pbmNsdWRlcyhldl90eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgU1REX0VWRU5UX0xJU1QucHVzaChldl90eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbihldl90eXBlLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHAuX29yaWdpbl90cmlnZ2VyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFwcC51cGRhdGVKcXVlcnkoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXNDb25uZWN0ZWQoKTtcblxuICAgICAgICAgICAgaW5pdEV2ZW50cygpO1xuXG4gICAgICAgICAgICBhcHAucm9vdENvbnRyb2xsZXIgPSBhcHAucm9vdENvbnRyb2xsZXIgfHwgbmV3IEFic3RyYWN0U0RDKCk7XG4gICAgICAgIH1cblxuICAgICAgICBhcHAudGFnTmFtZXMgPSB0YWdMaXN0KCk7XG5cbiAgICAgICAgZm9yIChsZXQgW3RhZywgY29udHJvbGxlcl0gb2YgT2JqZWN0LmVudHJpZXMoYXBwLkdsb2JhbCkpIHtcbiAgICAgICAgICAgIGlmICghY29udHJvbGxlci4kY29udGFpbmVyKSBHbG9iYWxbdGFnXS4kY29udGFpbmVyID0gZ2V0Qm9keSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgZ2V0Qm9keSgpLCBhcHAucm9vdENvbnRyb2xsZXIpO1xuICAgIH0sXG5cbiAgICB1cGRhdGVKcXVlcnk6ICgpID0+IHtcbiAgICAgICAgJC5mbi5zYWZlUmVwbGFjZSA9IGZ1bmN0aW9uICgkZWxlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcC5zYWZlUmVwbGFjZSgkKHRoaXMpLCAkZWxlbSk7XG4gICAgICAgIH1cbiAgICAgICAgJC5mbi5zYWZlRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwLnNhZmVFbXB0eSgkKHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgICAkLmZuLnNhZmVSZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwLnNhZmVSZW1vdmUoJCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY29udHJvbGxlclRvVGFnOiAoQ29udHJvbGxlcikgPT4ge1xuICAgICAgICBsZXQgdGFnTmFtZSA9IGNhbWVsQ2FzZVRvVGFnTmFtZShDb250cm9sbGVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gdGFnTmFtZS5yZXBsYWNlKC8tY29udHJvbGxlciQvLCAnJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gQ29udHJvbGxlclxuICAgICAqL1xuICAgIHJlZ2lzdGVyR2xvYmFsOiAoQ29udHJvbGxlcikgPT4ge1xuICAgICAgICBsZXQgdGFnTmFtZSA9IGFwcC5jb250cm9sbGVyVG9UYWcoQ29udHJvbGxlcik7XG4gICAgICAgIGxldCBnbG9iYWxDb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29udHJvbGxlckxpc3RbdGFnTmFtZV0gPSBbZ2xvYmFsQ29udHJvbGxlciwgW11dO1xuICAgICAgICBnbG9iYWxDb250cm9sbGVyLl90YWdOYW1lID0gdGFnTmFtZTtcbiAgICAgICAgd2luZG93W3RhZ05hbWVUb0NhbWVsQ2FzZSh0YWdOYW1lKV0gPSBHbG9iYWxbdGFnTmFtZVRvQ2FtZWxDYXNlKHRhZ05hbWUpXSA9IGdsb2JhbENvbnRyb2xsZXI7XG4gICAgfSxcblxuICAgIGNsZWFuQ2FjaGU6ICgpID0+IHtcbiAgICAgICAgY2xlYW5DYWNoZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IENvbnRyb2xsZXJcbiAgICAgKi9cbiAgICByZWdpc3RlcjogKENvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgbGV0IHRhZ05hbWUgPSBhcHAuY29udHJvbGxlclRvVGFnKENvbnRyb2xsZXIpO1xuICAgICAgICBjb250cm9sbGVyTGlzdFt0YWdOYW1lXSA9IFtDb250cm9sbGVyLCBbXV07XG4gICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl90YWdOYW1lID0gdGFnTmFtZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gbWl4aW5zIENvbnRyb2xsZXIgdGFnIG5hbWVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFkZE1peGluOiAoLi4ubWl4aW5zKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbWl4aW4gb2YgbWl4aW5zKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtaXhpbk5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWl4aW4gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluTmFtZSA9IGNhbWVsQ2FzZVRvVGFnTmFtZShtaXhpbik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWl4aW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluTmFtZSA9IGFwcC5jb250cm9sbGVyVG9UYWcobWl4aW4pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlckxpc3RbdGFnTmFtZV1bMV0ucHVzaChtaXhpbk5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgICAqL1xuICAgIHBvc3Q6IChjb250cm9sbGVyLCB1cmwsIGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKCFhcmdzKSB7XG4gICAgICAgICAgICBhcmdzID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzLkNTUkZfVE9LRU4gPSBhcHAuQ1NSRl9UT0tFTjtcbiAgICAgICAgcmV0dXJuIGFwcC5hamF4KGNvbnRyb2xsZXIsIHVybCwgcGFyYW1zLCAkLnBvc3QpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGdldDogKGNvbnRyb2xsZXIsIHVybCwgYXJncykgPT4ge1xuICAgICAgICByZXR1cm4gYXBwLmFqYXgoY29udHJvbGxlciwgdXJsLCBhcmdzLCAkLmdldCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCAkLmdldCBvciAkLnBvc3RcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGFqYXg6IChjb250cm9sbGVyLCB1cmwsIGFyZ3MsIG1ldGhvZCkgPT4ge1xuICAgICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgICAgIGFyZ3MgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFyZ3MuVkVSU0lPTiA9IGFwcC5WRVJTSU9OO1xuICAgICAgICBhcmdzLl9tZXRob2QgPSBhcmdzLl9tZXRob2QgfHwgJ2FwaSc7XG5cbiAgICAgICAgY29uc3QgcCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtZXRob2QodXJsLCBhcmdzKS50aGVuKChhLCBiLCBjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShhLCBiLCBjKTtcbiAgICAgICAgICAgICAgICBpZiAoYS5zdGF0dXMgPT09ICdyZWRpcmVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcignb25OYXZMaW5rJywgYVsndXJsLWxpbmsnXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5yZWZyZXNoKGNvbnRyb2xsZXIuJGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmNhdGNoKHJlamVjdCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwO1xuICAgIH0sXG5cbiAgICBzdWJtaXRGb3JtQW5kVXBkYXRlVmlldzogKGNvbnRyb2xsZXIsIGZvcm0sIHVybCwgbWV0aG9kKSA9PiB7XG4gICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3JtKTtcbiAgICAgICAgY29uc3QgcmVkaXJlY3RvciA9IChhKSA9PiB7XG4gICAgICAgICAgICBpZiAoYVsndXJsLWxpbmsnXSkge1xuICAgICAgICAgICAgICAgIHRyaWdnZXIoJ29uTmF2TGluaycsIGFbJ3VybC1saW5rJ10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGFbJ3VybCddO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdXBsb2FkRmlsZUZvcm1EYXRhKGZvcm1EYXRhLCAodXJsIHx8IGZvcm0uYWN0aW9uKSwgKG1ldGhvZCB8fCBmb3JtLm1ldGhvZCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGEsIGIsIGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShhLCBiLCBjKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEuc3RhdHVzID09PSAncmVkaXJlY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdG9yKGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAucmVmcmVzaChjb250cm9sbGVyLiRjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoYSwgYiwgYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5zdGF0dXMgPT09IDMwMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGEucmVzcG9uc2VKU09OO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RvcihhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHA7XG5cbiAgICB9LFxuICAgIHN1Ym1pdEZvcm06IChmb3JtLCB1cmwsIG1ldGhvZCkgPT4ge1xuICAgICAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB1cGxvYWRGaWxlRm9ybURhdGEoZm9ybURhdGEsICh1cmwgfHwgZm9ybS5hY3Rpb24pLCAobWV0aG9kIHx8IGZvcm0ubWV0aG9kKSlcbiAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2pxdWVyeX0gJGVsZW1cbiAgICAgKiBAcmV0dXJuIHtBYnN0cmFjdFNEQ31cbiAgICAgKi9cbiAgICBnZXRDb250cm9sbGVyOiAoJGVsZW0pID0+IGdldENvbnRyb2xsZXIoJGVsZW0pLFxuXG4gICAgLyoqXG4gICAgICogc2FmZUVtcHR5IHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIGNvbnRhaW5lciB0byBiZSBlbXB0eWVkXG4gICAgICovXG4gICAgc2FmZUVtcHR5OiAoJGVsZW0pID0+IHtcbiAgICAgICAgbGV0ICRjaGlsZHJlbiA9ICRlbGVtLmNoaWxkcmVuKCk7XG4gICAgICAgICRjaGlsZHJlbi5lYWNoKGZ1bmN0aW9uIChfLCBlbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgYXBwLnNhZmVSZW1vdmUoJGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gJGVsZW07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHNhZmVSZXBsYWNlIHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIHRvIGJlIHJlcGxlYWNlZFxuICAgICAqIEBwYXJhbSAkbmV3IC0galF1ZXJ5IG5ldyBET00gY29udGFpbmVyXG4gICAgICovXG4gICAgc2FmZVJlcGxhY2U6ICgkZWxlbSwgJG5ldykgPT4ge1xuICAgICAgICAkbmV3Lmluc2VydEJlZm9yZSgkZWxlbSk7XG4gICAgICAgIHJldHVybiBhcHAuc2FmZVJlbW92ZSgkZWxlbSk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogc2FmZVJlbW92ZSByZW1vdmVzIGEgZG9tIGFuZCBkZWxldGVzIGFsbCBjaGlsZCBjb250cm9sbGVyIHNhZmVseS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAkZWxlbSAtIGpRdWVyeSBEb21cbiAgICAgKi9cbiAgICBzYWZlUmVtb3ZlOiAoJGVsZW0pID0+IHtcbiAgICAgICAgJGVsZW0uZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICAgICAgaWYgKCR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKSkge1xuICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJGVsZW0uZmluZChgLiR7Q09OVFJPTExFUl9DTEFTU31gKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSAkKHRoaXMpLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5yZW1vdmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuICRlbGVtLnJlbW92ZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGpRdWVyeT59XG4gICAgICovXG4gICAgcmVsb2FkQ29udHJvbGxlcjogKGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlbG9hZEhUTUxDb250cm9sbGVyKGNvbnRyb2xsZXIpLnRoZW4oKGh0bWwpID0+IHtcbiAgICAgICAgICAgIGxldCAkaHRtbCA9ICQoaHRtbCk7XG4gICAgICAgICAgICByZXR1cm4gYXBwLnJlY29uY2lsZShjb250cm9sbGVyLCAkaHRtbCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7anF1ZXJ5fSAkdmlydHVhbE5vZGVcbiAgICAgKiBAcGFyYW0ge2pxdWVyeX0gJHJlYWxOb2RlXG4gICAgICovXG4gICAgcmVjb25jaWxlOiAoY29udHJvbGxlciwgJHZpcnR1YWxOb2RlLCAkcmVhbE5vZGUgPSBudWxsKSA9PiB7XG4gICAgICAgIGlmICghJHJlYWxOb2RlKSB7XG4gICAgICAgICAgICBsZXQgJHRlbXAgPSBjb250cm9sbGVyLiRjb250YWluZXIuY2xvbmUoKS5lbXB0eSgpO1xuICAgICAgICAgICAgJHRlbXAuYXBwZW5kKCR2aXJ0dWFsTm9kZSk7XG4gICAgICAgICAgICAkdmlydHVhbE5vZGUgPSAkdGVtcDtcbiAgICAgICAgfVxuXG4gICAgICAgICRyZWFsTm9kZSA9ICRyZWFsTm9kZSA/PyBjb250cm9sbGVyLiRjb250YWluZXI7XG5cbiAgICAgICAgcmV0dXJuIGFwcC5yZWZyZXNoKCR2aXJ0dWFsTm9kZSwgY29udHJvbGxlciwgdHJ1ZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZWNvbmNpbGUoJHZpcnR1YWxOb2RlLCAkcmVhbE5vZGUsIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgcmVzZXRDaGlsZHJlbihjb250cm9sbGVyKTtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyO1xuICAgICAgICB9KTtcblxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gbGVhZkNvbnRyb2xsZXJcbiAgICAgKiBAcGFyYW0ge2Jvb2x9IHNpbGVudFxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8alF1ZXJ5Pn1cbiAgICAgKi9cbiAgICByZWZyZXNoOiAoJGNvbnRhaW5lciwgbGVhZkNvbnRyb2xsZXIsIHNpbGVudCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGlmICghbGVhZkNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGxlYWZDb250cm9sbGVyID0gYXBwLmdldENvbnRyb2xsZXIoJGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxlYWZDb250cm9sbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZUR1bW15RmFjdG9yeSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbnRyb2xsZXIgPSBsZWFmQ29udHJvbGxlcjtcbiAgICAgICAgbGV0IGNvbnRyb2xsZXJMaXN0ID0gW107XG4gICAgICAgIHdoaWxlIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLl9pc0V2ZW50c1NldCA9IGZhbHNlO1xuICAgICAgICAgICAgY29udHJvbGxlckxpc3QudW5zaGlmdChjb250cm9sbGVyKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyLl9wYXJlbnRDb250cm9sbGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJGNvbnRhaW5lciA/Pz0gbGVhZkNvbnRyb2xsZXIuJGNvbnRhaW5lcjtcblxuICAgICAgICByZXR1cm4gcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIoYXBwLnRhZ05hbWVzLCAkY29udGFpbmVyLCBsZWFmQ29udHJvbGxlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZWxvYWRNZXRob2RIVE1MKGxlYWZDb250cm9sbGVyLCAkY29udGFpbmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjb24gb2YgY29udHJvbGxlckxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29udHJvbGxlckV2ZW50cyhjb24pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICFzaWxlbnQgJiYgbGVhZkNvbnRyb2xsZXIub25SZWZyZXNoKCRjb250YWluZXIpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSk7XG4gICAgfSxcbn07Il0sIm5hbWVzIjpbImNhbWVsQ2FzZVRvVGFnTmFtZSIsInRhZ05hbWVUb0NhbWVsQ2FzZSIsImdldEJvZHkiLCJ1cGxvYWRGaWxlRm9ybURhdGEiLCJwcm9taXNlRHVtbXlGYWN0b3J5IiwicmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIiLCJyZWxvYWRIVE1MQ29udHJvbGxlciIsIkRBVEFfQ09OVFJPTExFUl9LRVkiLCJDT05UUk9MTEVSX0NMQVNTIiwiZ2V0Q29udHJvbGxlciIsImNsZWFuQ2FjaGUiLCJyZWxvYWRNZXRob2RIVE1MIiwiQWJzdHJhY3RTREMiLCJHbG9iYWwiLCJjb250cm9sbGVyTGlzdCIsInRhZ0xpc3QiLCJyZXNldENoaWxkcmVuIiwiaW5pdEV2ZW50cyIsInNldENvbnRyb2xsZXJFdmVudHMiLCJTVERfRVZFTlRfTElTVCIsIndpbmRvd0V2ZW50SGFuZGxlciIsInJlY29uY2lsZSIsInRyaWdnZXIiLCJpc0Nvbm5lY3RlZCIsImNsb3NlIiwiUFJPUEVSVElFU19VUERBVEUiLCJzZGNEb21GcmFnbWVudCIsImVsZW1lbnQiLCJwcm9wcyIsIiRuZXdfZWxlbSIsImlzX3NlbGYiLCIkIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGFnTmFtZSIsIm5hbWUiLCJkYXRhIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJrIiwidiIsInN0YXJ0c1dpdGgiLCJhZGRFdmVudExpc3RlbmVyIiwic3Vic3RyaW5nIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJhZGRDbGFzcyIsIndpbmRvdyIsInNkY0RvbSIsImNoaWxkcmVuIiwiYyIsImFwcGVuZCIsImFwcCIsIkNTUkZfVE9LRU4iLCJMQU5HVUFHRV9DT0RFIiwiREVCVUciLCJWRVJTSU9OIiwidGFnTmFtZXMiLCJyb290Q29udHJvbGxlciIsIl9pc0luaXQiLCJfb3JpZ2luX3RyaWdnZXIiLCJpbml0X3NkYyIsImZuIiwiZXZlbnQiLCJldl90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwidHlwZSIsImluY2x1ZGVzIiwicHVzaCIsIm9uIiwidXBkYXRlSnF1ZXJ5IiwidGFnIiwiY29udHJvbGxlciIsIiRjb250YWluZXIiLCJzYWZlUmVwbGFjZSIsIiRlbGVtIiwic2FmZUVtcHR5Iiwic2FmZVJlbW92ZSIsImNvbnRyb2xsZXJUb1RhZyIsIkNvbnRyb2xsZXIiLCJyZXBsYWNlIiwicmVnaXN0ZXJHbG9iYWwiLCJnbG9iYWxDb250cm9sbGVyIiwiX3RhZ05hbWUiLCJyZWdpc3RlciIsInByb3RvdHlwZSIsImFkZE1peGluIiwibWl4aW5zIiwibWl4aW4iLCJtaXhpbk5hbWUiLCJwb3N0IiwidXJsIiwiYXJncyIsImFqYXgiLCJwYXJhbXMiLCJnZXQiLCJtZXRob2QiLCJfbWV0aG9kIiwicCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsImEiLCJiIiwic3RhdHVzIiwicmVmcmVzaCIsImNhdGNoIiwic3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXciLCJmb3JtIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsInJlZGlyZWN0b3IiLCJsb2NhdGlvbiIsImhyZWYiLCJhY3Rpb24iLCJyZXNwb25zZUpTT04iLCJzdWJtaXRGb3JtIiwiJGNoaWxkcmVuIiwiZWFjaCIsIl8iLCIkZWxlbWVudCIsIiRuZXciLCJpbnNlcnRCZWZvcmUiLCIkdGhpcyIsInJlbW92ZSIsImZpbmQiLCJyZWxvYWRDb250cm9sbGVyIiwiaHRtbCIsIiRodG1sIiwiJHZpcnR1YWxOb2RlIiwiJHJlYWxOb2RlIiwiJHRlbXAiLCJjbG9uZSIsImVtcHR5IiwibGVhZkNvbnRyb2xsZXIiLCJzaWxlbnQiLCJfaXNFdmVudHNTZXQiLCJ1bnNoaWZ0IiwiX3BhcmVudENvbnRyb2xsZXIiLCJjb24iLCJvblJlZnJlc2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_main.js\n");
|
68
68
|
|
69
69
|
/***/ }),
|
70
70
|
|
@@ -104,7 +104,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
104
104
|
\************************************************/
|
105
105
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
106
106
|
|
107
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCsrfToken: () => (/* binding */ getCsrfToken),\n/* harmony export */ get_controller: () => (/* binding */ get_controller)\n/* harmony export */ });\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/**\n * @jest-environment jsdom\n */\n\n\nlet spy, _originAjax;\nfunction getCookie(name) {\n let cookieValue = null;\n if (document.cookie && document.cookie !== '') {\n const cookies = document.cookie.split(';');\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].trim();\n // Does this cookie string begin with the name we want?\n if (cookie.substring(0, name.length + 1) === name + '=') {\n return decodeURIComponent(cookie.substring(name.length + 1));\n }\n }\n }\n return '';\n}\n\n/**\n * Returns the CSRF token\n */\nfunction getCsrfToken() {\n return getCookie('csrftoken');\n}\n\n/**\n * Returns a controller. This controller has been created by the using the normal SDC life cycle.\n *\n * @param tag_name{string} Controller tag name (snake-case)\n * @param init_arguments{object} object: Mockeds the tag data arguments.\n * @param origen_html{string} HTML: Mocked content of the content in your target HTML container.\n * @returns {Promise<{AbstractSDC}>}\n */\nasync function get_controller(tag_name, init_arguments = {}, origen_html = '') {\n if (!jest) throw new Error(\"JEST is not defined\");\n if (!spy) {\n _originAjax = $.ajax.bind($);\n spy = jest.spyOn($, 'ajax');\n spy.mockImplementation(function (a) {\n return _originAjax(a).then(html => {\n return html;\n }).catch(html => {\n return html;\n });\n });\n }\n const $body = $('body');\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.updateJquery();\n $body.safeEmpty();\n const $controller = $(`<${tag_name}>${origen_html}</${tag_name}>`);\n for (const [key, value] of Object.entries(init_arguments)) {\n $controller.data(key, value);\n }\n const $divContainer = $('<div></div>').append($controller);\n $body.append($divContainer);\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app._isInit = false;\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.cleanCache();\n await _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.init_sdc();\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.getController($controller);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUcsS0FBSztFQUNuQjFDLDZDQUFHLENBQUMyQyxVQUFVLENBQUMsQ0FBQztFQUNoQixNQUFNM0MsNkNBQUcsQ0FBQzRDLFFBQVEsQ0FBQyxDQUFDO0VBQ3BCLE9BQU81Qyw2Q0FBRyxDQUFDNkMsYUFBYSxDQUFDWCxXQUFXLENBQUM7QUFDekMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zZGNfY2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvc2RjX3Rlc3RfdXRpbHMuanM/YTQzOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBqZXN0LWVudmlyb25tZW50IGpzZG9tXG4gKi9cblxuaW1wb3J0IHthcHB9IGZyb20gJy4vc2RjX21haW4uanMnO1xubGV0IHNweSwgX29yaWdpbkFqYXg7XG5cbmZ1bmN0aW9uIGdldENvb2tpZShuYW1lKSB7XG4gICAgbGV0IGNvb2tpZVZhbHVlID0gbnVsbDtcbiAgICBpZiAoZG9jdW1lbnQuY29va2llICYmIGRvY3VtZW50LmNvb2tpZSAhPT0gJycpIHtcbiAgICAgICAgY29uc3QgY29va2llcyA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvb2tpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvb2tpZSA9IGNvb2tpZXNbaV0udHJpbSgpO1xuICAgICAgICAgICAgLy8gRG9lcyB0aGlzIGNvb2tpZSBzdHJpbmcgYmVnaW4gd2l0aCB0aGUgbmFtZSB3ZSB3YW50P1xuICAgICAgICAgICAgaWYgKGNvb2tpZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGggKyAxKSA9PT0gKG5hbWUgKyAnPScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjb29raWUuc3Vic3RyaW5nKG5hbWUubGVuZ3RoICsgMSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBDU1JGIHRva2VuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDc3JmVG9rZW4oKSB7XG4gICAgcmV0dXJuIGdldENvb2tpZSgnY3NyZnRva2VuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNvbnRyb2xsZXIuIFRoaXMgY29udHJvbGxlciBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSB1c2luZyB0aGUgbm9ybWFsIFNEQyBsaWZlIGN5Y2xlLlxuICpcbiAqIEBwYXJhbSB0YWdfbmFtZXtzdHJpbmd9IENvbnRyb2xsZXIgdGFnIG5hbWUgKHNuYWtlLWNhc2UpXG4gKiBAcGFyYW0gaW5pdF9hcmd1bWVudHN7b2JqZWN0fSBvYmplY3Q6IE1vY2tlZHMgdGhlIHRhZyBkYXRhIGFyZ3VtZW50cy5cbiAqIEBwYXJhbSBvcmlnZW5faHRtbHtzdHJpbmd9IEhUTUw6IE1vY2tlZCBjb250ZW50IG9mIHRoZSBjb250ZW50IGluIHlvdXIgdGFyZ2V0IEhUTUwgY29udGFpbmVyLlxuICogQHJldHVybnMge1Byb21pc2U8e0Fic3RyYWN0U0RDfT59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRfY29udHJvbGxlciggdGFnX25hbWUsIGluaXRfYXJndW1lbnRzID0ge30sIG9yaWdlbl9odG1sID0gJycpIHtcbiAgICBpZighamVzdCkgdGhyb3cgbmV3IEVycm9yKFwiSkVTVCBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICBpZighc3B5KSB7XG4gICAgICAgIF9vcmlnaW5BamF4ID0gJC5hamF4LmJpbmQoJCk7XG5cbiAgICAgICAgc3B5ID0gamVzdC5zcHlPbihcbiAgICAgICAgICAgICQsXG4gICAgICAgICAgICAnYWpheCdcbiAgICAgICAgKTtcbiAgICAgICAgc3B5Lm1vY2tJbXBsZW1lbnRhdGlvbihmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgcmV0dXJuIF9vcmlnaW5BamF4KGEpLnRoZW4oKGh0bWwpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgICAgIH0pLmNhdGNoKChodG1sKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuICAgIGFwcC51cGRhdGVKcXVlcnkoKTtcblxuICAgICRib2R5LnNhZmVFbXB0eSgpO1xuXG4gICAgY29uc3QgJGNvbnRyb2xsZXIgPSAkKGA8JHt0YWdfbmFtZX0+JHtvcmlnZW5faHRtbH08LyR7dGFnX25hbWV9PmApO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGluaXRfYXJndW1lbnRzKSkge1xuICAgICAgICAkY29udHJvbGxlci5kYXRhKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCAkZGl2Q29udGFpbmVyID0gJCgnPGRpdj48L2Rpdj4nKS5hcHBlbmQoJGNvbnRyb2xsZXIpO1xuXG4gICAgJGJvZHkuYXBwZW5kKCRkaXZDb250YWluZXIpO1xuICAgIGFwcC5faXNJbml0ID0gZmFsc2U7XG4gICAgYXBwLmNsZWFuQ2FjaGUoKTtcbiAgICBhd2FpdCBhcHAuaW5pdF9zZGMoKTtcbiAgICByZXR1cm4gYXBwLmdldENvbnRyb2xsZXIoJGNvbnRyb2xsZXIpO1xufSJdLCJuYW1lcyI6WyJhcHAiLCJzcHkiLCJfb3JpZ2luQWpheCIsImdldENvb2tpZSIsIm5hbWUiLCJjb29raWVWYWx1ZSIsImRvY3VtZW50IiwiY29va2llIiwiY29va2llcyIsInNwbGl0IiwiaSIsImxlbmd0aCIsInRyaW0iLCJzdWJzdHJpbmciLCJkZWNvZGVVUklDb21wb25lbnQiLCJnZXRDc3JmVG9rZW4iLCJnZXRfY29udHJvbGxlciIsInRhZ19uYW1lIiwiaW5pdF9hcmd1bWVudHMiLCJvcmlnZW5faHRtbCIsImplc3QiLCJFcnJvciIsIiQiLCJhamF4IiwiYmluZCIsInNweU9uIiwibW9ja0ltcGxlbWVudGF0aW9uIiwiYSIsInRoZW4iLCJodG1sIiwiY2F0Y2giLCIkYm9keSIsInVwZGF0ZUpxdWVyeSIsInNhZmVFbXB0eSIsIiRjb250cm9sbGVyIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiZGF0YSIsIiRkaXZDb250YWluZXIiLCJhcHBlbmQiLCJfaXNJbml0IiwiY2xlYW5DYWNoZSIsImluaXRfc2RjIiwiZ2V0Q29udHJvbGxlciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_test_utils.js\n");
|
107
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ controllerFromTestHtml: () => (/* binding */ controllerFromTestHtml),\n/* harmony export */ getCsrfToken: () => (/* binding */ getCsrfToken),\n/* harmony export */ get_controller: () => (/* binding */ get_controller)\n/* harmony export */ });\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/**\n * @jest-environment jsdom\n */\n\n\nlet spy, _originAjax;\nfunction setDefaults() {\n if (!jest) throw new Error(\"JEST is not defined\");\n if (!spy) {\n _originAjax = $.ajax.bind($);\n spy = jest.spyOn($, 'ajax');\n spy.mockImplementation(function (a) {\n return _originAjax(a).then(html => {\n return html;\n }).catch(html => {\n return html;\n });\n });\n }\n}\nfunction getCookie(name) {\n let cookieValue = null;\n if (document.cookie && document.cookie !== '') {\n const cookies = document.cookie.split(';');\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].trim();\n // Does this cookie string begin with the name we want?\n if (cookie.substring(0, name.length + 1) === name + '=') {\n return decodeURIComponent(cookie.substring(name.length + 1));\n }\n }\n }\n return '';\n}\n\n/**\n * Returns the CSRF token\n */\nfunction getCsrfToken() {\n return getCookie('csrftoken');\n}\n\n/**\n *\n * @param html{string} HTML: .\n * @returns {Promise<Array<{AbstractSDC}>>}\n */\nasync function controllerFromTestHtml(html) {\n setDefaults();\n const $body = $('body');\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.updateJquery();\n $body.safeEmpty().append(html);\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app._isInit = false;\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.cleanCache();\n await _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.init_sdc();\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.rootController.iterateAllChildren();\n}\n\n/**\n * Returns a controller. This controller has been created by the using the normal SDC life cycle.\n *\n * @param tag_name{string} Controller tag name (snake-case)\n * @param init_arguments{object} object: Mockeds the tag data arguments.\n * @param origen_html{string} HTML: Mocked content of the content in your target HTML container.\n * @returns {Promise<{AbstractSDC}>}\n */\nasync function get_controller(tag_name, init_arguments = {}, origen_html = '') {\n setDefaults();\n const $body = $('body');\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.updateJquery();\n $body.safeEmpty();\n const $controller = $(`<${tag_name}>${origen_html}</${tag_name}>`);\n for (const [key, value] of Object.entries(init_arguments)) {\n $controller.data(key, value);\n }\n const $divContainer = $('<div></div>').append($controller);\n $body.append($divContainer);\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app._isInit = false;\n _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.cleanCache();\n await _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.init_sdc();\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_0__.app.getController($controller);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9zZGNfdGVzdF91dGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBOztBQUVrQztBQUNsQyxJQUFJQyxHQUFHLEVBQUVDLFdBQVc7QUFFcEIsU0FBU0MsV0FBV0EsQ0FBQSxFQUFHO0VBQ25CLElBQUcsQ0FBQ0MsSUFBSSxFQUFFLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO0VBQ2hELElBQUcsQ0FBQ0osR0FBRyxFQUFFO0lBQ0xDLFdBQVcsR0FBR0ksQ0FBQyxDQUFDQyxJQUFJLENBQUNDLElBQUksQ0FBQ0YsQ0FBQyxDQUFDO0lBRTVCTCxHQUFHLEdBQUdHLElBQUksQ0FBQ0ssS0FBSyxDQUNaSCxDQUFDLEVBQ0QsTUFDSixDQUFDO0lBQ0RMLEdBQUcsQ0FBQ1Msa0JBQWtCLENBQUMsVUFBVUMsQ0FBQyxFQUFFO01BQ2hDLE9BQU9ULFdBQVcsQ0FBQ1MsQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBRUMsSUFBSSxJQUFLO1FBQ2pDLE9BQU9BLElBQUk7TUFDZixDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFFRCxJQUFJLElBQUs7UUFDZixPQUFPQSxJQUFJO01BQ2YsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0VBQ047QUFDSjtBQUdBLFNBQVNFLFNBQVNBLENBQUNDLElBQUksRUFBRTtFQUNyQixJQUFJQyxXQUFXLEdBQUcsSUFBSTtFQUN0QixJQUFJQyxRQUFRLENBQUNDLE1BQU0sSUFBSUQsUUFBUSxDQUFDQyxNQUFNLEtBQUssRUFBRSxFQUFFO0lBQzNDLE1BQU1DLE9BQU8sR0FBR0YsUUFBUSxDQUFDQyxNQUFNLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDMUMsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLE9BQU8sQ0FBQ0csTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtNQUNyQyxNQUFNSCxNQUFNLEdBQUdDLE9BQU8sQ0FBQ0UsQ0FBQyxDQUFDLENBQUNFLElBQUksQ0FBQyxDQUFDO01BQ2hDO01BQ0EsSUFBSUwsTUFBTSxDQUFDTSxTQUFTLENBQUMsQ0FBQyxFQUFFVCxJQUFJLENBQUNPLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBTVAsSUFBSSxHQUFHLEdBQUksRUFBRTtRQUN2RCxPQUFPVSxrQkFBa0IsQ0FBQ1AsTUFBTSxDQUFDTSxTQUFTLENBQUNULElBQUksQ0FBQ08sTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO01BQ2hFO0lBQ0o7RUFDSjtFQUNBLE9BQU8sRUFBRTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLFlBQVlBLENBQUEsRUFBRztFQUMzQixPQUFPWixTQUFTLENBQUMsV0FBVyxDQUFDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxlQUFlYSxzQkFBc0JBLENBQUNmLElBQUksRUFBRTtFQUMvQ1YsV0FBVyxDQUFDLENBQUM7RUFDYixNQUFNMEIsS0FBSyxHQUFHdkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztFQUN2Qk4sNkNBQUcsQ0FBQzhCLFlBQVksQ0FBQyxDQUFDO0VBQ2xCRCxLQUFLLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUNDLE1BQU0sQ0FBQ25CLElBQUksQ0FBQztFQUM5QmIsNkNBQUcsQ0FBQ2lDLE9BQU8sR0FBRyxLQUFLO0VBQ25CakMsNkNBQUcsQ0FBQ2tDLFVBQVUsQ0FBQyxDQUFDO0VBQ2hCLE1BQU1sQyw2Q0FBRyxDQUFDbUMsUUFBUSxDQUFDLENBQUM7RUFFcEIsT0FBT25DLDZDQUFHLENBQUNvQyxjQUFjLENBQUNDLGtCQUFrQixDQUFDLENBQUM7QUFDbEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLGVBQWVDLGNBQWNBLENBQUVDLFFBQVEsRUFBRUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFQyxXQUFXLEdBQUcsRUFBRSxFQUFFO0VBQ25GdEMsV0FBVyxDQUFDLENBQUM7RUFDYixNQUFNMEIsS0FBSyxHQUFHdkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztFQUN2Qk4sNkNBQUcsQ0FBQzhCLFlBQVksQ0FBQyxDQUFDO0VBRWxCRCxLQUFLLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0VBRWpCLE1BQU1XLFdBQVcsR0FBR3BDLENBQUMsQ0FBQyxJQUFJaUMsUUFBUSxJQUFJRSxXQUFXLEtBQUtGLFFBQVEsR0FBRyxDQUFDO0VBQ2xFLEtBQUssTUFBTSxDQUFDSSxHQUFHLEVBQUVDLEtBQUssQ0FBQyxJQUFJQyxNQUFNLENBQUNDLE9BQU8sQ0FBQ04sY0FBYyxDQUFDLEVBQUU7SUFDdkRFLFdBQVcsQ0FBQ0ssSUFBSSxDQUFDSixHQUFHLEVBQUVDLEtBQUssQ0FBQztFQUNoQztFQUNBLE1BQU1JLGFBQWEsR0FBRzFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzBCLE1BQU0sQ0FBQ1UsV0FBVyxDQUFDO0VBRTFEYixLQUFLLENBQUNHLE1BQU0sQ0FBQ2dCLGFBQWEsQ0FBQztFQUMzQmhELDZDQUFHLENBQUNpQyxPQUFPLEdBQUcsS0FBSztFQUNuQmpDLDZDQUFHLENBQUNrQyxVQUFVLENBQUMsQ0FBQztFQUNoQixNQUFNbEMsNkNBQUcsQ0FBQ21DLFFBQVEsQ0FBQyxDQUFDO0VBQ3BCLE9BQU9uQyw2Q0FBRyxDQUFDaUQsYUFBYSxDQUFDUCxXQUFXLENBQUM7QUFDekMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zZGNfY2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvc2RjX3Rlc3RfdXRpbHMuanM/YTQzOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBqZXN0LWVudmlyb25tZW50IGpzZG9tXG4gKi9cblxuaW1wb3J0IHthcHB9IGZyb20gJy4vc2RjX21haW4uanMnO1xubGV0IHNweSwgX29yaWdpbkFqYXg7XG5cbmZ1bmN0aW9uIHNldERlZmF1bHRzKCkge1xuICAgIGlmKCFqZXN0KSB0aHJvdyBuZXcgRXJyb3IoXCJKRVNUIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgIGlmKCFzcHkpIHtcbiAgICAgICAgX29yaWdpbkFqYXggPSAkLmFqYXguYmluZCgkKTtcblxuICAgICAgICBzcHkgPSBqZXN0LnNweU9uKFxuICAgICAgICAgICAgJCxcbiAgICAgICAgICAgICdhamF4J1xuICAgICAgICApO1xuICAgICAgICBzcHkubW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICByZXR1cm4gX29yaWdpbkFqYXgoYSkudGhlbigoaHRtbCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBodG1sO1xuICAgICAgICAgICAgfSkuY2F0Y2goKGh0bWwpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cblxuZnVuY3Rpb24gZ2V0Q29va2llKG5hbWUpIHtcbiAgICBsZXQgY29va2llVmFsdWUgPSBudWxsO1xuICAgIGlmIChkb2N1bWVudC5jb29raWUgJiYgZG9jdW1lbnQuY29va2llICE9PSAnJykge1xuICAgICAgICBjb25zdCBjb29raWVzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY29va2llID0gY29va2llc1tpXS50cmltKCk7XG4gICAgICAgICAgICAvLyBEb2VzIHRoaXMgY29va2llIHN0cmluZyBiZWdpbiB3aXRoIHRoZSBuYW1lIHdlIHdhbnQ/XG4gICAgICAgICAgICBpZiAoY29va2llLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCArIDEpID09PSAobmFtZSArICc9JykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZS5zdWJzdHJpbmcobmFtZS5sZW5ndGggKyAxKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIENTUkYgdG9rZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENzcmZUb2tlbigpIHtcbiAgICByZXR1cm4gZ2V0Q29va2llKCdjc3JmdG9rZW4nKTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGh0bWx7c3RyaW5nfSBIVE1MOiAuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTx7QWJzdHJhY3RTREN9Pj59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb250cm9sbGVyRnJvbVRlc3RIdG1sKGh0bWwpIHtcbiAgICBzZXREZWZhdWx0cygpO1xuICAgIGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuICAgIGFwcC51cGRhdGVKcXVlcnkoKTtcbiAgICAkYm9keS5zYWZlRW1wdHkoKS5hcHBlbmQoaHRtbCk7XG4gICAgYXBwLl9pc0luaXQgPSBmYWxzZTtcbiAgICBhcHAuY2xlYW5DYWNoZSgpO1xuICAgIGF3YWl0IGFwcC5pbml0X3NkYygpO1xuXG4gICAgcmV0dXJuIGFwcC5yb290Q29udHJvbGxlci5pdGVyYXRlQWxsQ2hpbGRyZW4oKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgY29udHJvbGxlci4gVGhpcyBjb250cm9sbGVyIGhhcyBiZWVuIGNyZWF0ZWQgYnkgdGhlIHVzaW5nIHRoZSBub3JtYWwgU0RDIGxpZmUgY3ljbGUuXG4gKlxuICogQHBhcmFtIHRhZ19uYW1le3N0cmluZ30gQ29udHJvbGxlciB0YWcgbmFtZSAoc25ha2UtY2FzZSlcbiAqIEBwYXJhbSBpbml0X2FyZ3VtZW50c3tvYmplY3R9IG9iamVjdDogTW9ja2VkcyB0aGUgdGFnIGRhdGEgYXJndW1lbnRzLlxuICogQHBhcmFtIG9yaWdlbl9odG1se3N0cmluZ30gSFRNTDogTW9ja2VkIGNvbnRlbnQgb2YgdGhlIGNvbnRlbnQgaW4geW91ciB0YXJnZXQgSFRNTCBjb250YWluZXIuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx7QWJzdHJhY3RTREN9Pn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldF9jb250cm9sbGVyKCB0YWdfbmFtZSwgaW5pdF9hcmd1bWVudHMgPSB7fSwgb3JpZ2VuX2h0bWwgPSAnJykge1xuICAgIHNldERlZmF1bHRzKCk7XG4gICAgY29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG4gICAgYXBwLnVwZGF0ZUpxdWVyeSgpO1xuXG4gICAgJGJvZHkuc2FmZUVtcHR5KCk7XG5cbiAgICBjb25zdCAkY29udHJvbGxlciA9ICQoYDwke3RhZ19uYW1lfT4ke29yaWdlbl9odG1sfTwvJHt0YWdfbmFtZX0+YCk7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaW5pdF9hcmd1bWVudHMpKSB7XG4gICAgICAgICRjb250cm9sbGVyLmRhdGEoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0ICRkaXZDb250YWluZXIgPSAkKCc8ZGl2PjwvZGl2PicpLmFwcGVuZCgkY29udHJvbGxlcik7XG5cbiAgICAkYm9keS5hcHBlbmQoJGRpdkNvbnRhaW5lcik7XG4gICAgYXBwLl9pc0luaXQgPSBmYWxzZTtcbiAgICBhcHAuY2xlYW5DYWNoZSgpO1xuICAgIGF3YWl0IGFwcC5pbml0X3NkYygpO1xuICAgIHJldHVybiBhcHAuZ2V0Q29udHJvbGxlcigkY29udHJvbGxlcik7XG59Il0sIm5hbWVzIjpbImFwcCIsInNweSIsIl9vcmlnaW5BamF4Iiwic2V0RGVmYXVsdHMiLCJqZXN0IiwiRXJyb3IiLCIkIiwiYWpheCIsImJpbmQiLCJzcHlPbiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsImEiLCJ0aGVuIiwiaHRtbCIsImNhdGNoIiwiZ2V0Q29va2llIiwibmFtZSIsImNvb2tpZVZhbHVlIiwiZG9jdW1lbnQiLCJjb29raWUiLCJjb29raWVzIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwidHJpbSIsInN1YnN0cmluZyIsImRlY29kZVVSSUNvbXBvbmVudCIsImdldENzcmZUb2tlbiIsImNvbnRyb2xsZXJGcm9tVGVzdEh0bWwiLCIkYm9keSIsInVwZGF0ZUpxdWVyeSIsInNhZmVFbXB0eSIsImFwcGVuZCIsIl9pc0luaXQiLCJjbGVhbkNhY2hlIiwiaW5pdF9zZGMiLCJyb290Q29udHJvbGxlciIsIml0ZXJhdGVBbGxDaGlsZHJlbiIsImdldF9jb250cm9sbGVyIiwidGFnX25hbWUiLCJpbml0X2FyZ3VtZW50cyIsIm9yaWdlbl9odG1sIiwiJGNvbnRyb2xsZXIiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJkYXRhIiwiJGRpdkNvbnRhaW5lciIsImdldENvbnRyb2xsZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_test_utils.js\n");
|
108
108
|
|
109
109
|
/***/ }),
|
110
110
|
|
@@ -124,7 +124,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
124
124
|
\******************************************/
|
125
125
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
126
126
|
|
127
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CONTROLLER_CLASS: () => (/* binding */ CONTROLLER_CLASS),\n/* harmony export */ DATA_CONTROLLER_KEY: () => (/* binding */ DATA_CONTROLLER_KEY),\n/* harmony export */ cleanCache: () => (/* binding */ cleanCache),\n/* harmony export */ getController: () => (/* binding */ getController),\n/* harmony export */ loadFilesFromController: () => (/* binding */ loadFilesFromController),\n/* harmony export */ reloadHTMLController: () => (/* binding */ reloadHTMLController),\n/* harmony export */ reloadMethodHTML: () => (/* binding */ reloadMethodHTML),\n/* harmony export */ replaceTagElementsInContainer: () => (/* binding */ replaceTagElementsInContainer),\n/* harmony export */ runControllerFillContent: () => (/* binding */ runControllerFillContent)\n/* harmony export */ });\n/* harmony import */ var _sdc_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _sdc_params_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_params.js */ \"./src/simpleDomControl/sdc_params.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n\n\n\n\n\n/**\n * List of HTML files.\n * @type {{}}\n */\nlet htmlFiles = {};\nconst DATA_CONTROLLER_KEY = '_controller_';\nconst CONTROLLER_CLASS = '_sdc_controller_';\nfunction cleanCache() {\n htmlFiles = {};\n}\n\n/**\n * findSdcTgs Finds all registered tags in a container. But it ignores\n * registered tags in registered tags. It collects all those\n * doms and returns a list of objects containing also the tag name the dom and the tag\n * names of the super controller\n *\n * @param {jquery} $container - jQuery container\n * @param {Array<string>} tagNameList - a string list with tag names.\n * @param {AbstractSDC} parentController - controller in surrounding\n * @return {Array} - a array of objects with all register tags found\n */\nfunction findSdcTgs($container, tagNameList, parentController) {\n if (!$container) {\n return [];\n }\n let $children = $container.children();\n let emptyList = [];\n $children.each(function (_, element) {\n let $element = $(element);\n let tagName = $element.prop('tagName').toLowerCase().split('_');\n if ($.inArray(tagName[0], tagNameList) >= 0) {\n emptyList.push({\n tag: tagName[0],\n super: tagName.splice(1) || [],\n dom: $element\n });\n } else if (tagName[0].startsWith('this.')) {\n $element.addClass(`_bind_to_update_handler sdc_uuid_${parentController._uuid}`);\n } else {\n emptyList = emptyList.concat(findSdcTgs($element, tagNameList, parentController));\n }\n });\n return emptyList;\n}\n\n/**\n * replacePlaceholderController fills the parameter of the content\n * url this function uses the tag parameter\n *\n * @param controller - controller object\n * @param url - the origin content URL\n * @param urlValues - values for the url placeholder. In same order!!\n * @returns {string} - the correct URL with prefix.\n */\nfunction replacePlaceholderController(controller, url, urlValues) {\n for (let key_idx in controller._urlParams) {\n if (controller._urlParams.hasOwnProperty(key_idx)) {\n let key = controller._urlParams[key_idx];\n let re = RegExp(\"%\\\\(\" + key + \"\\\\)\\\\w\", \"gm\");\n url = url.replace(re, \"\" + urlValues.shift());\n }\n }\n return url;\n}\n\n/**\n * loadHTMLFile loads the HTML content file from the server via ajax request.\n *\n * If the HTML file is loaded already the function takes no action.\n *\n * @param path - a content URL from the controller.\n * @param {object} args - get args.\n * @param tag - a normalized tag-name as string.\n * @param hardReload - true if the file has to be reloaded every time.\n * @returns {Promise<Boolean>} - waits for the file to be loaded.\n */\nfunction loadHTMLFile(path, args, tag, hardReload) {\n if (!path) {\n return Promise.resolve(false);\n } else if (htmlFiles[tag]) {\n return Promise.resolve(htmlFiles[tag]);\n }\n args.VERSION = _sdc_main_js__WEBPACK_IMPORTED_MODULE_2__.app.VERSION;\n args._method = 'content';\n return $.get(path, args).then(function (data) {\n if (!hardReload) {\n htmlFiles[tag] = data;\n }\n return data;\n }).catch(function (err) {\n if (err.status === 301) {\n const data = err.responseJSON;\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_3__.trigger)('_RedirectOnView', data['url-link']);\n }\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_3__.trigger)('navLoaded', {\n 'controller_name': () => err.status\n });\n throw `<sdc-error data-code=\"${err.status}\">${err.responseText}</sdc-error>`;\n });\n}\n\n/**\n * replaceAllTagElementsInContainer replaces all registered tags by the controller.\n * In this step the life-cycle starts.\n *\n * @param {jquery} $container - given container\n * @param {AbstractSDC} parentController - parent contoller surrounded the container\n */\nfunction replaceAllTagElementsInContainer($container, parentController) {\n parentController = parentController || $container.data(DATA_CONTROLLER_KEY);\n return replaceTagElementsInContainer(_sdc_main_js__WEBPACK_IMPORTED_MODULE_2__.app.tagNames, $container, parentController);\n}\n\n/**\n * parseContentUrl uses the content URL prefix to marge the\n * correct URL. Also parses the url parameter\n *\n * @param {AbstractSDC} controller - controller object\n * @returns {string} - the correct URL with prefix.\n */\nfunction parseContentUrl(controller) {\n let url = controller.contentUrl;\n if (controller && controller._urlParams.length === 0) {\n let re = /%\\(([^)]+)\\)\\w/gm;\n let matches;\n controller._urlParams = [];\n while (matches = re.exec(url)) {\n controller._urlParams.push(matches[1]);\n controller.contentReload = true;\n }\n }\n let params = (0,_sdc_params_js__WEBPACK_IMPORTED_MODULE_1__.getUrlParam)(controller, controller.$container);\n if (controller._urlParams.length) {\n url = replacePlaceholderController(controller, url, params);\n }\n controller.parsedContentUrl = url;\n return {\n url: url,\n args: params[params.length - 1]\n };\n}\n\n/**\n *\n * @param {jquery} $elem\n * @return {AbstractSDC}\n */\nfunction getController($elem) {\n if ($elem.hasClass(CONTROLLER_CLASS)) {\n return $elem.data(`${DATA_CONTROLLER_KEY}`);\n }\n return $elem.closest(`.${CONTROLLER_CLASS}`).data(`${DATA_CONTROLLER_KEY}`);\n}\n\n/**\n * loadFilesFromController loads the content (HTML) of a\n * Controller. If you have an alternative content URL is registered, for this\n * controller the origin content URL is ignored.\n *\n * The content is saved as jQuery object to the controller.$content property of\n * the controller.\n *\n * @param {AbstractSDC} controller - a instance of a JavaScript controller object.\n * @returns {Promise<jQuery>} - the promise waits to the files are loaded. it returns the jQuery object.\n */\nfunction loadFilesFromController(controller) {\n let getElements = {\n args: {}\n };\n if (controller.contentUrl) {\n getElements = parseContentUrl(controller, controller.contentUrl);\n controller.contentUrl = getElements.url;\n }\n return Promise.all([loadHTMLFile(controller.contentUrl, getElements.args, controller._tagName, controller.contentReload)]).then(function (results) {\n let htmlFile = results[0];\n if (htmlFile) {\n try {\n return $(htmlFile);\n } catch {\n return $('<div></div>').append(htmlFile);\n }\n }\n return null;\n });\n}\n\n/**\n * reloadHTMLController loads the content (HTML) of a\n * Controller. If you have an alternative content URL is registered, for this\n * controller the origin content URL is ignored.\n *\n *\n * @param {AbstractSDC} controller - a instance of a JavaScript controller object.\n *\n * @returns {Promise<jQuery>} - the promise waits to the files are loaded. it returns the jQuery object.\n */\nfunction reloadHTMLController(controller) {\n if (controller.contentUrl) {\n let getElements = parseContentUrl(controller, controller.contentUrl);\n controller.contentUrl = getElements.url;\n return loadHTMLFile(controller.contentUrl, getElements.args, controller._tagName, controller.contentReload);\n }\n return new Promise(resolve => {\n resolve($());\n });\n}\n\n/**\n *\n * @param {jquery} $element\n * @param {string} tagName\n * @param {Array<string>} superTagNameList\n * @param {AbstractSDC} parentController\n * @returns {boolean}\n */\nfunction runReplaceTagElementsInContainer($element, tagName, superTagNameList, parentController) {\n let controller = $element.data(DATA_CONTROLLER_KEY);\n if (controller) {\n return replaceAllTagElementsInContainer($element, controller);\n }\n controller = (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_0__.controllerFactory)(parentController, $element, tagName, superTagNameList);\n $element.data(DATA_CONTROLLER_KEY, controller);\n $element.addClass(CONTROLLER_CLASS);\n return (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_0__.runControlFlowFunctions)(controller, $element);\n}\n\n/**\n * runControllerFillContent empties the registered tag and replaces it by the controller\n * content. It sets the CSS tags for the relation with the CSS files.\n *\n * @param {AbstractSDC} controller - js controller instance\n * @param {jquery} $html - jQuery loaded content\n * @return {Promise}\n */\nfunction runControllerFillContent(controller, $html) {\n if ($html && $html.length > 0) {\n controller.$container.empty();\n controller.$container.attr(controller._tagName, '');\n for (let mixinKey in controller._mixins) {\n controller.$container.attr(controller._mixins[mixinKey]._tagName, '');\n }\n controller.$container.append($html);\n }\n return replaceAllTagElementsInContainer(controller.$container, controller);\n}\n\n/**\n * replaceTagElementsInContainer Finds all registered tags in a container. But it ignores\n * registered tags in registered tags. For each registered tag it loads the content.\n * Afterwards it starts the life cycle of the controller. I the next step it starts the\n * procedure for the child elements of the controller tag.\n *\n * @param {Array<string>} tagList - list of all registered tags\n * @param {jquery} $container - jQuery container to find the tags\n * @param {AbstractSDC} parentController - controller in surrounding\n */\nfunction replaceTagElementsInContainer(tagList, $container, parentController) {\n return new Promise(resolve => {\n let tagDescriptionElements = findSdcTgs($container, tagList, parentController);\n let tagCount = tagDescriptionElements.length;\n if (tagCount === 0) {\n return resolve();\n }\n for (let elementIndex = 0; elementIndex < tagDescriptionElements.length; elementIndex++) {\n runReplaceTagElementsInContainer(tagDescriptionElements[elementIndex].dom, tagDescriptionElements[elementIndex].tag, tagDescriptionElements[elementIndex].super, parentController).then(() => {\n tagCount--;\n if (tagCount === 0) {\n return resolve();\n }\n });\n }\n });\n}\nfunction reloadMethodHTML(controller) {\n return _reloadMethodHTML(controller, controller.$container);\n}\nfunction _reloadMethodHTML(controller, $dom) {\n const plist = [];\n $dom.find(`._bind_to_update_handler.sdc_uuid_${controller._uuid}`).each(function () {\n const $this = $(this);\n let result = undefined;\n if ($this.hasClass(`_with_handler`)) {\n result = $this.data('handler');\n } else {\n let controller_handler = this.tagName.toLowerCase().replace(/^this./, '');\n if (controller[controller_handler]) {\n result = controller[controller_handler];\n }\n }\n if (typeof result === 'function') {\n result = result.bind(controller)($this.data());\n }\n if (result !== undefined) {\n plist.push(Promise.resolve(result).then(x => {\n const $new_content = $(`<div></div>`);\n $new_content.append(x);\n return replaceTagElementsInContainer((0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_0__.tagList)(), $new_content, controller).then(() => {\n return _reloadMethodHTML(controller, $new_content).then(() => {\n $this.safeEmpty().text('').append(x);\n return true;\n });\n });\n }));\n }\n });\n return Promise.all(plist);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q3VCLENBQUMsQ0FBQztZQUNwQyxPQUFPLElBQUk7VUFDZixDQUFDLENBQUM7UUFDTixDQUFDLENBQUM7TUFDTixDQUFDLENBQUMsQ0FBQztJQUNQO0VBRUosQ0FBQyxDQUFDO0VBRUYsT0FBT3pELE9BQU8sQ0FBQzhCLEdBQUcsQ0FBQ29CLEtBQUssQ0FBQztBQUM3QiIsInNvdXJjZXMiOlsid2VicGFjazovL3NkY19jbGllbnQvLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9zZGNfdmlldy5qcz8yNGI1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29udHJvbGxlckZhY3RvcnksIHJ1bkNvbnRyb2xGbG93RnVuY3Rpb25zLCB0YWdMaXN0fSBmcm9tIFwiLi9zZGNfY29udHJvbGxlci5qc1wiO1xuaW1wb3J0IHtnZXRVcmxQYXJhbX0gZnJvbSBcIi4vc2RjX3BhcmFtcy5qc1wiO1xuaW1wb3J0IHthcHB9IGZyb20gXCIuL3NkY19tYWluLmpzXCI7XG5pbXBvcnQge3RyaWdnZXJ9IGZyb20gXCIuL3NkY19ldmVudHMuanNcIjtcblxuLyoqXG4gKiBMaXN0IG9mIEhUTUwgZmlsZXMuXG4gKiBAdHlwZSB7e319XG4gKi9cbmxldCBodG1sRmlsZXMgPSB7fTtcblxuZXhwb3J0IGNvbnN0IERBVEFfQ09OVFJPTExFUl9LRVkgPSAnX2NvbnRyb2xsZXJfJztcbmV4cG9ydCBjb25zdCBDT05UUk9MTEVSX0NMQVNTID0gJ19zZGNfY29udHJvbGxlcl8nO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkNhY2hlKCkge1xuICAgIGh0bWxGaWxlcyA9IHt9O1xufVxuXG4vKipcbiAqIGZpbmRTZGNUZ3MgRmluZHMgYWxsIHJlZ2lzdGVyZWQgdGFncyBpbiBhIGNvbnRhaW5lci4gQnV0IGl0IGlnbm9yZXNcbiAqIHJlZ2lzdGVyZWQgdGFncyBpbiByZWdpc3RlcmVkIHRhZ3MuIEl0IGNvbGxlY3RzIGFsbCB0aG9zZVxuICogZG9tcyBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2JqZWN0cyBjb250YWluaW5nIGFsc28gdGhlIHRhZyBuYW1lIHRoZSBkb20gYW5kIHRoZSB0YWdcbiAqIG5hbWVzIG9mIHRoZSBzdXBlciBjb250cm9sbGVyXG4gKlxuICogQHBhcmFtIHtqcXVlcnl9ICRjb250YWluZXIgLSBqUXVlcnkgY29udGFpbmVyXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHRhZ05hbWVMaXN0IC0gYSBzdHJpbmcgbGlzdCB3aXRoIHRhZyBuYW1lcy5cbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IHBhcmVudENvbnRyb2xsZXIgLSBjb250cm9sbGVyIGluIHN1cnJvdW5kaW5nXG4gKiBAcmV0dXJuIHtBcnJheX0gLSBhIGFycmF5IG9mIG9iamVjdHMgd2l0aCBhbGwgcmVnaXN0ZXIgdGFncyBmb3VuZFxuICovXG5mdW5jdGlvbiBmaW5kU2RjVGdzKCRjb250YWluZXIsIHRhZ05hbWVMaXN0LCBwYXJlbnRDb250cm9sbGVyKSB7XG4gICAgaWYgKCEkY29udGFpbmVyKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0ICRjaGlsZHJlbiA9ICRjb250YWluZXIuY2hpbGRyZW4oKTtcbiAgICBsZXQgZW1wdHlMaXN0ID0gW107XG4gICAgJGNoaWxkcmVuLmVhY2goZnVuY3Rpb24gKF8sIGVsZW1lbnQpIHtcbiAgICAgICAgbGV0ICRlbGVtZW50ID0gJChlbGVtZW50KTtcbiAgICAgICAgbGV0IHRhZ05hbWUgPSAkZWxlbWVudC5wcm9wKCd0YWdOYW1lJykudG9Mb3dlckNhc2UoKS5zcGxpdCgnXycpO1xuICAgICAgICBpZiAoJC5pbkFycmF5KHRhZ05hbWVbMF0sIHRhZ05hbWVMaXN0KSA+PSAwKSB7XG4gICAgICAgICAgICBlbXB0eUxpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgdGFnOiB0YWdOYW1lWzBdLFxuICAgICAgICAgICAgICAgIHN1cGVyOiB0YWdOYW1lLnNwbGljZSgxKSB8fCBbXSxcbiAgICAgICAgICAgICAgICBkb206ICRlbGVtZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2UgaWYgKHRhZ05hbWVbMF0uc3RhcnRzV2l0aCgndGhpcy4nKSkge1xuICAgICAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoYF9iaW5kX3RvX3VwZGF0ZV9oYW5kbGVyIHNkY191dWlkXyR7cGFyZW50Q29udHJvbGxlci5fdXVpZH1gKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW1wdHlMaXN0ID0gZW1wdHlMaXN0LmNvbmNhdChmaW5kU2RjVGdzKCRlbGVtZW50LCB0YWdOYW1lTGlzdCwgcGFyZW50Q29udHJvbGxlcikpXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbXB0eUxpc3Q7XG59XG5cbi8qKlxuICogcmVwbGFjZVBsYWNlaG9sZGVyQ29udHJvbGxlciBmaWxscyB0aGUgcGFyYW1ldGVyIG9mIHRoZSBjb250ZW50XG4gKiB1cmwgdGhpcyBmdW5jdGlvbiB1c2VzIHRoZSB0YWcgcGFyYW1ldGVyXG4gKlxuICogQHBhcmFtIGNvbnRyb2xsZXIgLSBjb250cm9sbGVyIG9iamVjdFxuICogQHBhcmFtIHVybCAtIHRoZSBvcmlnaW4gY29udGVudCBVUkxcbiAqIEBwYXJhbSB1cmxWYWx1ZXMgLSB2YWx1ZXMgZm9yIHRoZSB1cmwgcGxhY2Vob2xkZXIuIEluIHNhbWUgb3JkZXIhIVxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgY29ycmVjdCBVUkwgd2l0aCBwcmVmaXguXG4gKi9cbmZ1bmN0aW9uIHJlcGxhY2VQbGFjZWhvbGRlckNvbnRyb2xsZXIoY29udHJvbGxlciwgdXJsLCB1cmxWYWx1ZXMpIHtcbiAgICBmb3IgKGxldCBrZXlfaWR4IGluIGNvbnRyb2xsZXIuX3VybFBhcmFtcykge1xuICAgICAgICBpZiAoY29udHJvbGxlci5fdXJsUGFyYW1zLmhhc093blByb3BlcnR5KGtleV9pZHgpKSB7XG4gICAgICAgICAgICBsZXQga2V5ID0gY29udHJvbGxlci5fdXJsUGFyYW1zW2tleV9pZHhdO1xuICAgICAgICAgICAgbGV0IHJlID0gUmVnRXhwKFwiJVxcXFwoXCIgKyBrZXkgKyBcIlxcXFwpXFxcXHdcIiwgXCJnbVwiKTtcbiAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKHJlLCBcIlwiICsgdXJsVmFsdWVzLnNoaWZ0KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybDtcbn1cblxuLyoqXG4gKiBsb2FkSFRNTEZpbGUgbG9hZHMgdGhlIEhUTUwgY29udGVudCBmaWxlIGZyb20gdGhlIHNlcnZlciB2aWEgYWpheCByZXF1ZXN0LlxuICpcbiAqIElmIHRoZSBIVE1MIGZpbGUgaXMgbG9hZGVkIGFscmVhZHkgdGhlIGZ1bmN0aW9uIHRha2VzIG5vIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIGEgY29udGVudCBVUkwgZnJvbSB0aGUgY29udHJvbGxlci5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gZ2V0IGFyZ3MuXG4gKiBAcGFyYW0gdGFnIC0gYSBub3JtYWxpemVkIHRhZy1uYW1lIGFzIHN0cmluZy5cbiAqIEBwYXJhbSBoYXJkUmVsb2FkIC0gdHJ1ZSBpZiB0aGUgZmlsZSBoYXMgdG8gYmUgcmVsb2FkZWQgZXZlcnkgdGltZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPEJvb2xlYW4+fSAtIHdhaXRzIGZvciB0aGUgZmlsZSB0byBiZSBsb2FkZWQuXG4gKi9cbmZ1bmN0aW9uIGxvYWRIVE1MRmlsZShwYXRoLCBhcmdzLCB0YWcsIGhhcmRSZWxvYWQpIHtcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfSBlbHNlIGlmIChodG1sRmlsZXNbdGFnXSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGh0bWxGaWxlc1t0YWddKVxuICAgIH1cblxuICAgIGFyZ3MuVkVSU0lPTiA9IGFwcC5WRVJTSU9OO1xuICAgIGFyZ3MuX21ldGhvZCA9ICdjb250ZW50JztcblxuICAgIHJldHVybiAkLmdldChwYXRoLCBhcmdzKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmICghaGFyZFJlbG9hZCkge1xuICAgICAgICAgICAgaHRtbEZpbGVzW3RhZ10gPSBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gMzAxKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gZXJyLnJlc3BvbnNlSlNPTjtcbiAgICAgICAgICAgIHRyaWdnZXIoJ19SZWRpcmVjdE9uVmlldycsIGRhdGFbJ3VybC1saW5rJ10pO1xuICAgICAgICB9XG4gICAgICAgIHRyaWdnZXIoJ25hdkxvYWRlZCcsIHsnY29udHJvbGxlcl9uYW1lJzogKCk9PiBlcnIuc3RhdHVzfSk7XG5cbiAgICAgICAgdGhyb3cgYDxzZGMtZXJyb3IgZGF0YS1jb2RlPVwiJHtlcnIuc3RhdHVzfVwiPiR7ZXJyLnJlc3BvbnNlVGV4dH08L3NkYy1lcnJvcj5gO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIHJlcGxhY2VBbGxUYWdFbGVtZW50c0luQ29udGFpbmVyIHJlcGxhY2VzIGFsbCByZWdpc3RlcmVkIHRhZ3MgYnkgdGhlIGNvbnRyb2xsZXIuXG4gKiBJbiB0aGlzIHN0ZXAgdGhlIGxpZmUtY3ljbGUgc3RhcnRzLlxuICpcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyIC0gZ2l2ZW4gY29udGFpbmVyXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyIC0gcGFyZW50IGNvbnRvbGxlciBzdXJyb3VuZGVkIHRoZSBjb250YWluZXJcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUFsbFRhZ0VsZW1lbnRzSW5Db250YWluZXIoJGNvbnRhaW5lciwgcGFyZW50Q29udHJvbGxlcikge1xuICAgIHBhcmVudENvbnRyb2xsZXIgPSBwYXJlbnRDb250cm9sbGVyIHx8ICRjb250YWluZXIuZGF0YShEQVRBX0NPTlRST0xMRVJfS0VZKTtcbiAgICByZXR1cm4gcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIoYXBwLnRhZ05hbWVzLCAkY29udGFpbmVyLCBwYXJlbnRDb250cm9sbGVyKTtcbn1cblxuLyoqXG4gKiBwYXJzZUNvbnRlbnRVcmwgdXNlcyB0aGUgY29udGVudCBVUkwgcHJlZml4IHRvIG1hcmdlIHRoZVxuICogY29ycmVjdCBVUkwuIEFsc28gcGFyc2VzIHRoZSB1cmwgcGFyYW1ldGVyXG4gKlxuICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlciAtIGNvbnRyb2xsZXIgb2JqZWN0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBjb3JyZWN0IFVSTCB3aXRoIHByZWZpeC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VDb250ZW50VXJsKGNvbnRyb2xsZXIpIHtcbiAgICBsZXQgdXJsID0gY29udHJvbGxlci5jb250ZW50VXJsO1xuICAgIGlmIChjb250cm9sbGVyICYmIGNvbnRyb2xsZXIuX3VybFBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbGV0IHJlID0gLyVcXCgoW14pXSspXFwpXFx3L2dtO1xuICAgICAgICBsZXQgbWF0Y2hlcztcbiAgICAgICAgY29udHJvbGxlci5fdXJsUGFyYW1zID0gW107XG4gICAgICAgIHdoaWxlICgobWF0Y2hlcyA9IHJlLmV4ZWModXJsKSkpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuX3VybFBhcmFtcy5wdXNoKG1hdGNoZXNbMV0pO1xuICAgICAgICAgICAgY29udHJvbGxlci5jb250ZW50UmVsb2FkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSBnZXRVcmxQYXJhbShjb250cm9sbGVyLCBjb250cm9sbGVyLiRjb250YWluZXIpO1xuICAgIGlmIChjb250cm9sbGVyLl91cmxQYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgIHVybCA9IHJlcGxhY2VQbGFjZWhvbGRlckNvbnRyb2xsZXIoY29udHJvbGxlciwgdXJsLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnRyb2xsZXIucGFyc2VkQ29udGVudFVybCA9IHVybDtcblxuICAgIHJldHVybiB7dXJsOiB1cmwsIGFyZ3M6IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV19O1xufVxuXG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkZWxlbVxuICogQHJldHVybiB7QWJzdHJhY3RTREN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cm9sbGVyKCRlbGVtKSB7XG4gICAgaWYgKCRlbGVtLmhhc0NsYXNzKENPTlRST0xMRVJfQ0xBU1MpKSB7XG4gICAgICAgIHJldHVybiAkZWxlbS5kYXRhKGAke0RBVEFfQ09OVFJPTExFUl9LRVl9YCk7XG4gICAgfVxuICAgIHJldHVybiAkZWxlbS5jbG9zZXN0KGAuJHtDT05UUk9MTEVSX0NMQVNTfWApLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKTtcbn1cblxuLyoqXG4gKiBsb2FkRmlsZXNGcm9tQ29udHJvbGxlciBsb2FkcyB0aGUgY29udGVudCAoSFRNTCkgb2YgYVxuICogQ29udHJvbGxlci4gSWYgeW91IGhhdmUgYW4gYWx0ZXJuYXRpdmUgY29udGVudCBVUkwgaXMgcmVnaXN0ZXJlZCwgZm9yIHRoaXNcbiAqIGNvbnRyb2xsZXIgdGhlIG9yaWdpbiBjb250ZW50IFVSTCBpcyBpZ25vcmVkLlxuICpcbiAqIFRoZSBjb250ZW50IGlzIHNhdmVkIGFzIGpRdWVyeSBvYmplY3QgdG8gdGhlIGNvbnRyb2xsZXIuJGNvbnRlbnQgcHJvcGVydHkgb2ZcbiAqIHRoZSBjb250cm9sbGVyLlxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXIgLSBhIGluc3RhbmNlIG9mIGEgSmF2YVNjcmlwdCBjb250cm9sbGVyIG9iamVjdC5cbiAqIEByZXR1cm5zIHtQcm9taXNlPGpRdWVyeT59IC0gdGhlIHByb21pc2Ugd2FpdHMgdG8gdGhlIGZpbGVzIGFyZSBsb2FkZWQuIGl0IHJldHVybnMgdGhlIGpRdWVyeSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZXNGcm9tQ29udHJvbGxlcihjb250cm9sbGVyKSB7XG4gICAgbGV0IGdldEVsZW1lbnRzID0ge2FyZ3M6IHt9fTtcbiAgICBpZiAoY29udHJvbGxlci5jb250ZW50VXJsKSB7XG4gICAgICAgIGdldEVsZW1lbnRzID0gcGFyc2VDb250ZW50VXJsKGNvbnRyb2xsZXIsIGNvbnRyb2xsZXIuY29udGVudFVybCk7XG4gICAgICAgIGNvbnRyb2xsZXIuY29udGVudFVybCA9IGdldEVsZW1lbnRzLnVybDtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICBsb2FkSFRNTEZpbGUoY29udHJvbGxlci5jb250ZW50VXJsLCBnZXRFbGVtZW50cy5hcmdzLCBjb250cm9sbGVyLl90YWdOYW1lLCBjb250cm9sbGVyLmNvbnRlbnRSZWxvYWQpXG4gICAgXSkudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgICBsZXQgaHRtbEZpbGUgPSByZXN1bHRzWzBdO1xuICAgICAgICBpZiAoaHRtbEZpbGUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoaHRtbEZpbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJzxkaXY+PC9kaXY+JykuYXBwZW5kKGh0bWxGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIHJlbG9hZEhUTUxDb250cm9sbGVyIGxvYWRzIHRoZSBjb250ZW50IChIVE1MKSBvZiBhXG4gKiBDb250cm9sbGVyLiBJZiB5b3UgaGF2ZSBhbiBhbHRlcm5hdGl2ZSBjb250ZW50IFVSTCBpcyByZWdpc3RlcmVkLCBmb3IgdGhpc1xuICogY29udHJvbGxlciB0aGUgb3JpZ2luIGNvbnRlbnQgVVJMIGlzIGlnbm9yZWQuXG4gKlxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXIgLSBhIGluc3RhbmNlIG9mIGEgSmF2YVNjcmlwdCBjb250cm9sbGVyIG9iamVjdC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxqUXVlcnk+fSAtIHRoZSBwcm9taXNlIHdhaXRzIHRvIHRoZSBmaWxlcyBhcmUgbG9hZGVkLiBpdCByZXR1cm5zIHRoZSBqUXVlcnkgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsb2FkSFRNTENvbnRyb2xsZXIoY29udHJvbGxlcikge1xuICAgIGlmIChjb250cm9sbGVyLmNvbnRlbnRVcmwpIHtcbiAgICAgICAgbGV0IGdldEVsZW1lbnRzID0gcGFyc2VDb250ZW50VXJsKGNvbnRyb2xsZXIsIGNvbnRyb2xsZXIuY29udGVudFVybCk7XG4gICAgICAgIGNvbnRyb2xsZXIuY29udGVudFVybCA9IGdldEVsZW1lbnRzLnVybDtcbiAgICAgICAgcmV0dXJuIGxvYWRIVE1MRmlsZShjb250cm9sbGVyLmNvbnRlbnRVcmwsIGdldEVsZW1lbnRzLmFyZ3MsIGNvbnRyb2xsZXIuX3RhZ05hbWUsIGNvbnRyb2xsZXIuY29udGVudFJlbG9hZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICByZXNvbHZlKCQoKSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkZWxlbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IHRhZ05hbWVcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gc3VwZXJUYWdOYW1lTGlzdFxuICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gcGFyZW50Q29udHJvbGxlclxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHJ1blJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKCRlbGVtZW50LCB0YWdOYW1lLCBzdXBlclRhZ05hbWVMaXN0LCBwYXJlbnRDb250cm9sbGVyKSB7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSAkZWxlbWVudC5kYXRhKERBVEFfQ09OVFJPTExFUl9LRVkpO1xuICAgIGlmIChjb250cm9sbGVyKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlQWxsVGFnRWxlbWVudHNJbkNvbnRhaW5lcigkZWxlbWVudCwgY29udHJvbGxlcik7XG4gICAgfVxuXG4gICAgY29udHJvbGxlciA9IGNvbnRyb2xsZXJGYWN0b3J5KHBhcmVudENvbnRyb2xsZXIsICRlbGVtZW50LCB0YWdOYW1lLCBzdXBlclRhZ05hbWVMaXN0KTtcbiAgICAkZWxlbWVudC5kYXRhKERBVEFfQ09OVFJPTExFUl9LRVksIGNvbnRyb2xsZXIpO1xuICAgICRlbGVtZW50LmFkZENsYXNzKENPTlRST0xMRVJfQ0xBU1MpO1xuICAgIHJldHVybiBydW5Db250cm9sRmxvd0Z1bmN0aW9ucyhjb250cm9sbGVyLCAkZWxlbWVudCk7XG59XG5cblxuLyoqXG4gKiBydW5Db250cm9sbGVyRmlsbENvbnRlbnQgZW1wdGllcyB0aGUgcmVnaXN0ZXJlZCB0YWcgYW5kIHJlcGxhY2VzIGl0IGJ5IHRoZSBjb250cm9sbGVyXG4gKiBjb250ZW50LiBJdCBzZXRzIHRoZSBDU1MgdGFncyBmb3IgdGhlIHJlbGF0aW9uIHdpdGggdGhlIENTUyBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyIC0ganMgY29udHJvbGxlciBpbnN0YW5jZVxuICogQHBhcmFtIHtqcXVlcnl9ICRodG1sIC0galF1ZXJ5IGxvYWRlZCBjb250ZW50XG4gKiBAcmV0dXJuIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuQ29udHJvbGxlckZpbGxDb250ZW50KGNvbnRyb2xsZXIsICRodG1sKSB7XG4gICAgaWYgKCRodG1sICYmICRodG1sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29udHJvbGxlci4kY29udGFpbmVyLmVtcHR5KCk7XG4gICAgICAgIGNvbnRyb2xsZXIuJGNvbnRhaW5lci5hdHRyKGNvbnRyb2xsZXIuX3RhZ05hbWUsICcnKTtcbiAgICAgICAgZm9yIChsZXQgbWl4aW5LZXkgaW4gY29udHJvbGxlci5fbWl4aW5zKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLiRjb250YWluZXIuYXR0cihjb250cm9sbGVyLl9taXhpbnNbbWl4aW5LZXldLl90YWdOYW1lLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbGxlci4kY29udGFpbmVyLmFwcGVuZCgkaHRtbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcGxhY2VBbGxUYWdFbGVtZW50c0luQ29udGFpbmVyKGNvbnRyb2xsZXIuJGNvbnRhaW5lciwgY29udHJvbGxlcik7XG59XG5cblxuLyoqXG4gKiByZXBsYWNlVGFnRWxlbWVudHNJbkNvbnRhaW5lciBGaW5kcyBhbGwgcmVnaXN0ZXJlZCB0YWdzIGluIGEgY29udGFpbmVyLiBCdXQgaXQgaWdub3Jlc1xuICogcmVnaXN0ZXJlZCB0YWdzIGluIHJlZ2lzdGVyZWQgdGFncy4gRm9yIGVhY2ggcmVnaXN0ZXJlZCB0YWcgaXQgbG9hZHMgdGhlIGNvbnRlbnQuXG4gKiBBZnRlcndhcmRzIGl0IHN0YXJ0cyB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgY29udHJvbGxlci4gSSB0aGUgbmV4dCBzdGVwIGl0IHN0YXJ0cyB0aGVcbiAqIHByb2NlZHVyZSBmb3IgdGhlIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBjb250cm9sbGVyIHRhZy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHRhZ0xpc3QgLSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIHRhZ3NcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyIC0galF1ZXJ5IGNvbnRhaW5lciB0byBmaW5kIHRoZSB0YWdzXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyIC0gY29udHJvbGxlciBpbiBzdXJyb3VuZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIodGFnTGlzdCwgJGNvbnRhaW5lciwgcGFyZW50Q29udHJvbGxlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXG4gICAgICAgIGxldCB0YWdEZXNjcmlwdGlvbkVsZW1lbnRzID0gZmluZFNkY1RncygkY29udGFpbmVyLCB0YWdMaXN0LCBwYXJlbnRDb250cm9sbGVyKTtcbiAgICAgICAgbGV0IHRhZ0NvdW50ID0gdGFnRGVzY3JpcHRpb25FbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKHRhZ0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgdGFnRGVzY3JpcHRpb25FbGVtZW50cy5sZW5ndGg7IGVsZW1lbnRJbmRleCsrKSB7XG4gICAgICAgICAgICBydW5SZXBsYWNlVGFnRWxlbWVudHNJbkNvbnRhaW5lcih0YWdEZXNjcmlwdGlvbkVsZW1lbnRzW2VsZW1lbnRJbmRleF0uZG9tLFxuICAgICAgICAgICAgICAgIHRhZ0Rlc2NyaXB0aW9uRWxlbWVudHNbZWxlbWVudEluZGV4XS50YWcsXG4gICAgICAgICAgICAgICAgdGFnRGVzY3JpcHRpb25FbGVtZW50c1tlbGVtZW50SW5kZXhdLnN1cGVyLFxuICAgICAgICAgICAgICAgIHBhcmVudENvbnRyb2xsZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRhZ0NvdW50LS07XG4gICAgICAgICAgICAgICAgaWYgKHRhZ0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbG9hZE1ldGhvZEhUTUwoY29udHJvbGxlcikge1xuICAgIHJldHVybiBfcmVsb2FkTWV0aG9kSFRNTChjb250cm9sbGVyLCBjb250cm9sbGVyLiRjb250YWluZXIpXG59XG5mdW5jdGlvbiBfcmVsb2FkTWV0aG9kSFRNTChjb250cm9sbGVyLCAkZG9tKSB7XG4gICAgY29uc3QgcGxpc3QgPSBbXTtcblxuICAgICRkb20uZmluZChgLl9iaW5kX3RvX3VwZGF0ZV9oYW5kbGVyLnNkY191dWlkXyR7Y29udHJvbGxlci5fdXVpZH1gKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICBpZigkdGhpcy5oYXNDbGFzcyhgX3dpdGhfaGFuZGxlcmApKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAkdGhpcy5kYXRhKCdoYW5kbGVyJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgY29udHJvbGxlcl9oYW5kbGVyID0gdGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXnRoaXMuLywgJycpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2xsZXJbY29udHJvbGxlcl9oYW5kbGVyXSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRyb2xsZXJbY29udHJvbGxlcl9oYW5kbGVyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5iaW5kKGNvbnRyb2xsZXIpKCR0aGlzLmRhdGEoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwbGlzdC5wdXNoKFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4oKHgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCAkbmV3X2NvbnRlbnQgPSAkKGA8ZGl2PjwvZGl2PmApO1xuICAgICAgICAgICAgICAgICRuZXdfY29udGVudC5hcHBlbmQoeCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKHRhZ0xpc3QoKSwgJG5ld19jb250ZW50LCBjb250cm9sbGVyKS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlbG9hZE1ldGhvZEhUTUwoY29udHJvbGxlciwgJG5ld19jb250ZW50KS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuc2FmZUVtcHR5KCkudGV4dCgnJykuYXBwZW5kKHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChwbGlzdCk7XG59Il0sIm5hbWVzIjpbImNvbnRyb2xsZXJGYWN0b3J5IiwicnVuQ29udHJvbEZsb3dGdW5jdGlvbnMiLCJ0YWdMaXN0IiwiZ2V0VXJsUGFyYW0iLCJhcHAiLCJ0cmlnZ2VyIiwiaHRtbEZpbGVzIiwiREFUQV9DT05UUk9MTEVSX0tFWSIsIkNPTlRST0xMRVJfQ0xBU1MiLCJjbGVhbkNhY2hlIiwiZmluZFNkY1RncyIsIiRjb250YWluZXIiLCJ0YWdOYW1lTGlzdCIsInBhcmVudENvbnRyb2xsZXIiLCIkY2hpbGRyZW4iLCJjaGlsZHJlbiIsImVtcHR5TGlzdCIsImVhY2giLCJfIiwiZWxlbWVudCIsIiRlbGVtZW50IiwiJCIsInRhZ05hbWUiLCJwcm9wIiwidG9Mb3dlckNhc2UiLCJzcGxpdCIsImluQXJyYXkiLCJwdXNoIiwidGFnIiwic3VwZXIiLCJzcGxpY2UiLCJkb20iLCJzdGFydHNXaXRoIiwiYWRkQ2xhc3MiLCJfdXVpZCIsImNvbmNhdCIsInJlcGxhY2VQbGFjZWhvbGRlckNvbnRyb2xsZXIiLCJjb250cm9sbGVyIiwidXJsIiwidXJsVmFsdWVzIiwia2V5X2lkeCIsIl91cmxQYXJhbXMiLCJoYXNPd25Qcm9wZXJ0eSIsImtleSIsInJlIiwiUmVnRXhwIiwicmVwbGFjZSIsInNoaWZ0IiwibG9hZEhUTUxGaWxlIiwicGF0aCIsImFyZ3MiLCJoYXJkUmVsb2FkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJWRVJTSU9OIiwiX21ldGhvZCIsImdldCIsInRoZW4iLCJkYXRhIiwiY2F0Y2giLCJlcnIiLCJzdGF0dXMiLCJyZXNwb25zZUpTT04iLCJjb250cm9sbGVyX25hbWUiLCJyZXNwb25zZVRleHQiLCJyZXBsYWNlQWxsVGFnRWxlbWVudHNJbkNvbnRhaW5lciIsInJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyIiwidGFnTmFtZXMiLCJwYXJzZUNvbnRlbnRVcmwiLCJjb250ZW50VXJsIiwibGVuZ3RoIiwibWF0Y2hlcyIsImV4ZWMiLCJjb250ZW50UmVsb2FkIiwicGFyYW1zIiwicGFyc2VkQ29udGVudFVybCIsImdldENvbnRyb2xsZXIiLCIkZWxlbSIsImhhc0NsYXNzIiwiY2xvc2VzdCIsImxvYWRGaWxlc0Zyb21Db250cm9sbGVyIiwiZ2V0RWxlbWVudHMiLCJhbGwiLCJfdGFnTmFtZSIsInJlc3VsdHMiLCJodG1sRmlsZSIsImFwcGVuZCIsInJlbG9hZEhUTUxDb250cm9sbGVyIiwicnVuUmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIiLCJzdXBlclRhZ05hbWVMaXN0IiwicnVuQ29udHJvbGxlckZpbGxDb250ZW50IiwiJGh0bWwiLCJlbXB0eSIsImF0dHIiLCJtaXhpbktleSIsIl9taXhpbnMiLCJ0YWdEZXNjcmlwdGlvbkVsZW1lbnRzIiwidGFnQ291bnQiLCJlbGVtZW50SW5kZXgiLCJyZWxvYWRNZXRob2RIVE1MIiwiX3JlbG9hZE1ldGhvZEhUTUwiLCIkZG9tIiwicGxpc3QiLCJmaW5kIiwiJHRoaXMiLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJjb250cm9sbGVyX2hhbmRsZXIiLCJiaW5kIiwieCIsIiRuZXdfY29udGVudCIsInNhZmVFbXB0eSIsInRleHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_view.js\n");
|
127
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CONTROLLER_CLASS: () => (/* binding */ CONTROLLER_CLASS),\n/* harmony export */ DATA_CONTROLLER_KEY: () => (/* binding */ DATA_CONTROLLER_KEY),\n/* harmony export */ cleanCache: () => (/* binding */ cleanCache),\n/* harmony export */ getController: () => (/* binding */ getController),\n/* harmony export */ loadFilesFromController: () => (/* binding */ loadFilesFromController),\n/* harmony export */ reconcile: () => (/* binding */ reconcile),\n/* harmony export */ reloadHTMLController: () => (/* binding */ reloadHTMLController),\n/* harmony export */ reloadMethodHTML: () => (/* binding */ reloadMethodHTML),\n/* harmony export */ replaceTagElementsInContainer: () => (/* binding */ replaceTagElementsInContainer),\n/* harmony export */ runControllerFillContent: () => (/* binding */ runControllerFillContent)\n/* harmony export */ });\n/* harmony import */ var _sdc_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _sdc_params_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_params.js */ \"./src/simpleDomControl/sdc_params.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n\n\n\n\n\n/**\n * List of HTML files.\n * @type {{}}\n */\nlet htmlFiles = {};\nconst DATA_CONTROLLER_KEY = '_controller_';\nconst CONTROLLER_CLASS = '_sdc_controller_';\nfunction cleanCache() {\n htmlFiles = {};\n}\n\n/**\n * findSdcTgs Finds all registered tags in a container. But it ignores\n * registered tags in registered tags. It collects all those\n * doms and returns a list of objects containing also the tag name the dom and the tag\n * names of the super controller\n *\n * @param {jquery} $container - jQuery container\n * @param {Array<string>} tagNameList - a string list with tag names.\n * @param {AbstractSDC} parentController - controller in surrounding\n * @return {Array} - a array of objects with all register tags found\n */\nfunction findSdcTgs($container, tagNameList, parentController) {\n if (!$container) {\n return [];\n }\n let $children = $container.children();\n let emptyList = [];\n $children.each(function (_, element) {\n let $element = $(element);\n let tagName = $element.prop('tagName').toLowerCase().split('_');\n if ($.inArray(tagName[0], tagNameList) >= 0) {\n emptyList.push({\n tag: tagName[0],\n super: tagName.splice(1) || [],\n dom: $element\n });\n } else if (tagName[0].startsWith('this.')) {\n $element.addClass(`_bind_to_update_handler sdc_uuid_${parentController._uuid}`);\n } else {\n emptyList = emptyList.concat(findSdcTgs($element, tagNameList, parentController));\n }\n });\n return emptyList;\n}\n\n/**\n * replacePlaceholderController fills the parameter of the content\n * url this function uses the tag parameter\n *\n * @param controller - controller object\n * @param url - the origin content URL\n * @param urlValues - values for the url placeholder. In same order!!\n * @returns {string} - the correct URL with prefix.\n */\nfunction replacePlaceholderController(controller, url, urlValues) {\n for (let key_idx in controller._urlParams) {\n if (controller._urlParams.hasOwnProperty(key_idx)) {\n let key = controller._urlParams[key_idx];\n let re = RegExp(\"%\\\\(\" + key + \"\\\\)\\\\w\", \"gm\");\n url = url.replace(re, \"\" + urlValues.shift());\n }\n }\n return url;\n}\n\n/**\n * loadHTMLFile loads the HTML content file from the server via ajax request.\n *\n * If the HTML file is loaded already the function takes no action.\n *\n * @param path - a content URL from the controller.\n * @param {object} args - get args.\n * @param tag - a normalized tag-name as string.\n * @param hardReload - true if the file has to be reloaded every time.\n * @returns {Promise<Boolean>} - waits for the file to be loaded.\n */\nfunction loadHTMLFile(path, args, tag, hardReload) {\n if (!path) {\n return Promise.resolve(false);\n } else if (htmlFiles[tag]) {\n return Promise.resolve(htmlFiles[tag]);\n }\n args.VERSION = _sdc_main_js__WEBPACK_IMPORTED_MODULE_2__.app.VERSION;\n args._method = 'content';\n return $.get(path, args).then(function (data) {\n if (!hardReload) {\n htmlFiles[tag] = data;\n }\n return data;\n }).catch(function (err) {\n if (err.status === 301) {\n const data = err.responseJSON;\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_3__.trigger)('_RedirectOnView', data['url-link']);\n }\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_3__.trigger)('navLoaded', {\n 'controller_name': () => err.status\n });\n throw `<sdc-error data-code=\"${err.status}\">${err.responseText}</sdc-error>`;\n });\n}\n\n/**\n * replaceAllTagElementsInContainer replaces all registered tags by the controller.\n * In this step the life-cycle starts.\n *\n * @param {jquery} $container - given container\n * @param {AbstractSDC} parentController - parent contoller surrounded the container\n */\nfunction replaceAllTagElementsInContainer($container, parentController) {\n parentController = parentController || $container.data(DATA_CONTROLLER_KEY);\n return replaceTagElementsInContainer(_sdc_main_js__WEBPACK_IMPORTED_MODULE_2__.app.tagNames, $container, parentController);\n}\n\n/**\n * parseContentUrl uses the content URL prefix to marge the\n * correct URL. Also parses the url parameter\n *\n * @param {AbstractSDC} controller - controller object\n * @returns {string} - the correct URL with prefix.\n */\nfunction parseContentUrl(controller) {\n let url = controller.contentUrl;\n if (controller && controller._urlParams.length === 0) {\n let re = /%\\(([^)]+)\\)\\w/gm;\n let matches;\n controller._urlParams = [];\n while (matches = re.exec(url)) {\n controller._urlParams.push(matches[1]);\n controller.contentReload = true;\n }\n }\n let params = (0,_sdc_params_js__WEBPACK_IMPORTED_MODULE_1__.getUrlParam)(controller, controller.$container);\n if (controller._urlParams.length) {\n url = replacePlaceholderController(controller, url, params);\n }\n controller.parsedContentUrl = url;\n return {\n url: url,\n args: params[params.length - 1]\n };\n}\n\n/**\n *\n * @param {jquery} $elem\n * @return {AbstractSDC}\n */\nfunction getController($elem) {\n if ($elem.hasClass(CONTROLLER_CLASS)) {\n return $elem.data(`${DATA_CONTROLLER_KEY}`);\n }\n return $elem.closest(`.${CONTROLLER_CLASS}`).data(`${DATA_CONTROLLER_KEY}`);\n}\n\n/**\n * loadFilesFromController loads the content (HTML) of a\n * Controller. If you have an alternative content URL is registered, for this\n * controller the origin content URL is ignored.\n *\n * The content is saved as jQuery object to the controller.$content property of\n * the controller.\n *\n * @param {AbstractSDC} controller - a instance of a JavaScript controller object.\n * @returns {Promise<jQuery>} - the promise waits to the files are loaded. it returns the jQuery object.\n */\nfunction loadFilesFromController(controller) {\n let getElements = {\n args: {}\n };\n if (controller.contentUrl) {\n getElements = parseContentUrl(controller, controller.contentUrl);\n controller.contentUrl = getElements.url;\n }\n return Promise.all([loadHTMLFile(controller.contentUrl, getElements.args, controller._tagName, controller.contentReload)]).then(function (results) {\n let htmlFile = results[0];\n if (htmlFile) {\n try {\n return $(htmlFile);\n } catch {\n return $('<div></div>').append(htmlFile);\n }\n }\n return null;\n });\n}\n\n/**\n * reloadHTMLController loads the content (HTML) of a\n * Controller. If you have an alternative content URL is registered, for this\n * controller the origin content URL is ignored.\n *\n *\n * @param {AbstractSDC} controller - a instance of a JavaScript controller object.\n *\n * @returns {Promise<jQuery>} - the promise waits to the files are loaded. it returns the jQuery object.\n */\nfunction reloadHTMLController(controller) {\n if (controller.contentUrl) {\n let getElements = parseContentUrl(controller, controller.contentUrl);\n controller.contentUrl = getElements.url;\n return loadHTMLFile(controller.contentUrl, getElements.args, controller._tagName, controller.contentReload);\n }\n return new Promise(resolve => {\n resolve($());\n });\n}\n\n/**\n *\n * @param {jquery} $element\n * @param {string} tagName\n * @param {Array<string>} superTagNameList\n * @param {AbstractSDC} parentController\n * @returns {boolean}\n */\nfunction runReplaceTagElementsInContainer($element, tagName, superTagNameList, parentController) {\n let controller = $element.data(DATA_CONTROLLER_KEY);\n if (controller) {\n return replaceAllTagElementsInContainer($element, controller);\n }\n controller = (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_0__.controllerFactory)(parentController, $element, tagName, superTagNameList);\n $element.data(DATA_CONTROLLER_KEY, controller);\n $element.addClass(CONTROLLER_CLASS);\n return (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_0__.runControlFlowFunctions)(controller, $element);\n}\n\n/**\n * runControllerFillContent empties the registered tag and replaces it by the controller\n * content. It sets the CSS tags for the relation with the CSS files.\n *\n * @param {AbstractSDC} controller - js controller instance\n * @param {jquery} $html - jQuery loaded content\n * @return {Promise}\n */\nfunction runControllerFillContent(controller, $html) {\n if ($html && $html.length > 0) {\n controller.$container.empty();\n controller.$container.attr(controller._tagName, '');\n for (let mixinKey in controller._mixins) {\n controller.$container.attr(controller._mixins[mixinKey]._tagName, '');\n }\n controller.$container.append($html);\n }\n return replaceAllTagElementsInContainer(controller.$container, controller);\n}\n\n/**\n * replaceTagElementsInContainer Finds all registered tags in a container. But it ignores\n * registered tags in registered tags. For each registered tag it loads the content.\n * Afterwards it starts the life cycle of the controller. I the next step it starts the\n * procedure for the child elements of the controller tag.\n *\n * @param {Array<string>} tagList - list of all registered tags\n * @param {jquery} $container - jQuery container to find the tags\n * @param {AbstractSDC} parentController - controller in surrounding\n */\nfunction replaceTagElementsInContainer(tagList, $container, parentController) {\n return new Promise(resolve => {\n let tagDescriptionElements = findSdcTgs($container, tagList, parentController);\n let tagCount = tagDescriptionElements.length;\n if (tagCount === 0) {\n return resolve();\n }\n for (let elementIndex = 0; elementIndex < tagDescriptionElements.length; elementIndex++) {\n runReplaceTagElementsInContainer(tagDescriptionElements[elementIndex].dom, tagDescriptionElements[elementIndex].tag, tagDescriptionElements[elementIndex].super, parentController).then(() => {\n tagCount--;\n if (tagCount === 0) {\n return resolve();\n }\n });\n }\n });\n}\nfunction reloadMethodHTML(controller, $container) {\n return _reloadMethodHTML(controller, $container ?? controller.$container);\n}\nfunction _reloadMethodHTML(controller, $dom) {\n const plist = [];\n $dom.find(`._bind_to_update_handler.sdc_uuid_${controller._uuid}`).each(function () {\n const $this = $(this);\n let result = undefined;\n if ($this.hasClass(`_with_handler`)) {\n result = $this.data('handler');\n } else {\n let controller_handler = this.tagName.toLowerCase().replace(/^this./, '');\n if (controller[controller_handler]) {\n result = controller[controller_handler];\n }\n }\n if (typeof result === 'function') {\n result = result.bind(controller)($this.data());\n }\n if (result !== undefined) {\n plist.push(Promise.resolve(result).then(x => {\n let $newContent = $(`<div></div>`);\n $newContent.append(x);\n $newContent = $this.clone().empty().append($newContent);\n return controller.reconcile($newContent, $this);\n }));\n }\n });\n return Promise.all(plist);\n}\nfunction reconcile($virtualNode, $realNode, controller) {\n // Step 1: Check node types (e.g., div vs span)\n if ($virtualNode[0].nodeType !== $realNode[0].nodeType || $virtualNode.prop(\"nodeName\") !== $realNode.prop(\"nodeName\")) {\n $realNode.safeReplace($virtualNode);\n return;\n }\n if ($virtualNode[0].nodeType === 3) {\n if ($virtualNode[0].nodeValue !== $realNode[0].nodeValue) {\n $realNode[0].nodeValue = $virtualNode[0].nodeValue;\n }\n return;\n }\n\n // Step 2: Compare attributes\n syncAttributes($realNode, $virtualNode);\n\n // Step 3: Recurse children\n const virtualChildren = $virtualNode.contents();\n const realChildren = $realNode.contents();\n const len = Math.max(virtualChildren.length, realChildren.length);\n for (let i = 0; i < len; i++) {\n if (i >= realChildren.length) {\n $realNode.append($(virtualChildren[i]));\n } else if (i >= virtualChildren.length) {\n $(realChildren[i]).safeRemove();\n } else {\n reconcile($(virtualChildren[i]), $(realChildren[i]), controller);\n }\n }\n}\nfunction syncAttributes($real, $virtual) {\n const realAttrs = $real[0].attributes ?? [];\n const virtualAttrs = $virtual[0].attributes ?? [];\n // Remove missing attrs\n [...realAttrs].forEach(attr => {\n if (!$virtual.is(`[${attr.name}]`)) {\n $real.removeAttr(attr.name);\n }\n });\n\n // Add or update\n [...virtualAttrs].forEach(attr => {\n if (!attr.name.startsWith(`data`) && $real.attr(attr.name) !== attr.value) {\n $real.attr(attr.name, attr.value);\n }\n });\n Object.entries($virtual.data()).forEach(([key, value]) => {\n if (key !== DATA_CONTROLLER_KEY) {\n $real.data(key, value);\n }\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9zZGNfdmlldy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RjtBQUM1QztBQUNWO0FBQ007O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSU0sU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVYLE1BQU1DLG1CQUFtQixHQUFHLGNBQWM7QUFDMUMsTUFBTUMsZ0JBQWdCLEdBQUcsa0JBQWtCO0FBRzNDLFNBQVNDLFVBQVVBLENBQUEsRUFBRztFQUN6QkgsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0ksVUFBVUEsQ0FBQ0MsVUFBVSxFQUFFQyxXQUFXLEVBQUVDLGdCQUFnQixFQUFFO0VBQzNELElBQUksQ0FBQ0YsVUFBVSxFQUFFO0lBQ2IsT0FBTyxFQUFFO0VBQ2I7RUFDQSxJQUFJRyxTQUFTLEdBQUdILFVBQVUsQ0FBQ0ksUUFBUSxDQUFDLENBQUM7RUFDckMsSUFBSUMsU0FBUyxHQUFHLEVBQUU7RUFDbEJGLFNBQVMsQ0FBQ0csSUFBSSxDQUFDLFVBQVVDLENBQUMsRUFBRUMsT0FBTyxFQUFFO0lBQ2pDLElBQUlDLFFBQVEsR0FBR0MsQ0FBQyxDQUFDRixPQUFPLENBQUM7SUFDekIsSUFBSUcsT0FBTyxHQUFHRixRQUFRLENBQUNHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUMvRCxJQUFJSixDQUFDLENBQUNLLE9BQU8sQ0FBQ0osT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFVixXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7TUFDekNJLFNBQVMsQ0FBQ1csSUFBSSxDQUFDO1FBQ1hDLEdBQUcsRUFBRU4sT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNmTyxLQUFLLEVBQUVQLE9BQU8sQ0FBQ1EsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFDOUJDLEdBQUcsRUFBRVg7TUFDVCxDQUFDLENBQUM7SUFFTixDQUFDLE1BQU0sSUFBSUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDVSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7TUFDdkNaLFFBQVEsQ0FBQ2EsUUFBUSxDQUFDLG9DQUFvQ3BCLGdCQUFnQixDQUFDcUIsS0FBSyxFQUFFLENBQUM7SUFDbkYsQ0FBQyxNQUFNO01BQ0hsQixTQUFTLEdBQUdBLFNBQVMsQ0FBQ21CLE1BQU0sQ0FBQ3pCLFVBQVUsQ0FBQ1UsUUFBUSxFQUFFUixXQUFXLEVBQUVDLGdCQUFnQixDQUFDLENBQUM7SUFDckY7RUFDSixDQUFDLENBQUM7RUFFRixPQUFPRyxTQUFTO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNvQiw0QkFBNEJBLENBQUNDLFVBQVUsRUFBRUMsR0FBRyxFQUFFQyxTQUFTLEVBQUU7RUFDOUQsS0FBSyxJQUFJQyxPQUFPLElBQUlILFVBQVUsQ0FBQ0ksVUFBVSxFQUFFO0lBQ3ZDLElBQUlKLFVBQVUsQ0FBQ0ksVUFBVSxDQUFDQyxjQUFjLENBQUNGLE9BQU8sQ0FBQyxFQUFFO01BQy9DLElBQUlHLEdBQUcsR0FBR04sVUFBVSxDQUFDSSxVQUFVLENBQUNELE9BQU8sQ0FBQztNQUN4QyxJQUFJSSxFQUFFLEdBQUdDLE1BQU0sQ0FBQyxNQUFNLEdBQUdGLEdBQUcsR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDO01BQzlDTCxHQUFHLEdBQUdBLEdBQUcsQ0FBQ1EsT0FBTyxDQUFDRixFQUFFLEVBQUUsRUFBRSxHQUFHTCxTQUFTLENBQUNRLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQ7RUFDSjtFQUVBLE9BQU9ULEdBQUc7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU1UsWUFBWUEsQ0FBQ0MsSUFBSSxFQUFFQyxJQUFJLEVBQUV0QixHQUFHLEVBQUV1QixVQUFVLEVBQUU7RUFDL0MsSUFBSSxDQUFDRixJQUFJLEVBQUU7SUFDUCxPQUFPRyxPQUFPLENBQUNDLE9BQU8sQ0FBQyxLQUFLLENBQUM7RUFDakMsQ0FBQyxNQUFNLElBQUkvQyxTQUFTLENBQUNzQixHQUFHLENBQUMsRUFBRTtJQUN2QixPQUFPd0IsT0FBTyxDQUFDQyxPQUFPLENBQUMvQyxTQUFTLENBQUNzQixHQUFHLENBQUMsQ0FBQztFQUMxQztFQUVBc0IsSUFBSSxDQUFDSSxPQUFPLEdBQUdsRCw2Q0FBRyxDQUFDa0QsT0FBTztFQUMxQkosSUFBSSxDQUFDSyxPQUFPLEdBQUcsU0FBUztFQUV4QixPQUFPbEMsQ0FBQyxDQUFDbUMsR0FBRyxDQUFDUCxJQUFJLEVBQUVDLElBQUksQ0FBQyxDQUFDTyxJQUFJLENBQUMsVUFBVUMsSUFBSSxFQUFFO0lBQzFDLElBQUksQ0FBQ1AsVUFBVSxFQUFFO01BQ2I3QyxTQUFTLENBQUNzQixHQUFHLENBQUMsR0FBRzhCLElBQUk7SUFDekI7SUFFQSxPQUFPQSxJQUFJO0VBQ2YsQ0FBQyxDQUFDLENBQUNDLEtBQUssQ0FBQyxVQUFVQyxHQUFHLEVBQUU7SUFDcEIsSUFBSUEsR0FBRyxDQUFDQyxNQUFNLEtBQUssR0FBRyxFQUFFO01BQ3BCLE1BQU1ILElBQUksR0FBR0UsR0FBRyxDQUFDRSxZQUFZO01BQzdCekQsdURBQU8sQ0FBQyxpQkFBaUIsRUFBRXFELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRDtJQUNBckQsdURBQU8sQ0FBQyxXQUFXLEVBQUU7TUFBQyxpQkFBaUIsRUFBRTBELENBQUEsS0FBTUgsR0FBRyxDQUFDQztJQUFNLENBQUMsQ0FBQztJQUUzRCxNQUFNLHlCQUF5QkQsR0FBRyxDQUFDQyxNQUFNLEtBQUtELEdBQUcsQ0FBQ0ksWUFBWSxjQUFjO0VBQ2hGLENBQUMsQ0FBQztBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0MsZ0NBQWdDQSxDQUFDdEQsVUFBVSxFQUFFRSxnQkFBZ0IsRUFBRTtFQUNwRUEsZ0JBQWdCLEdBQUdBLGdCQUFnQixJQUFJRixVQUFVLENBQUMrQyxJQUFJLENBQUNuRCxtQkFBbUIsQ0FBQztFQUMzRSxPQUFPMkQsNkJBQTZCLENBQUM5RCw2Q0FBRyxDQUFDK0QsUUFBUSxFQUFFeEQsVUFBVSxFQUFFRSxnQkFBZ0IsQ0FBQztBQUNwRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVN1RCxlQUFlQSxDQUFDL0IsVUFBVSxFQUFFO0VBQ2pDLElBQUlDLEdBQUcsR0FBR0QsVUFBVSxDQUFDZ0MsVUFBVTtFQUMvQixJQUFJaEMsVUFBVSxJQUFJQSxVQUFVLENBQUNJLFVBQVUsQ0FBQzZCLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDbEQsSUFBSTFCLEVBQUUsR0FBRyxrQkFBa0I7SUFDM0IsSUFBSTJCLE9BQU87SUFDWGxDLFVBQVUsQ0FBQ0ksVUFBVSxHQUFHLEVBQUU7SUFDMUIsT0FBUThCLE9BQU8sR0FBRzNCLEVBQUUsQ0FBQzRCLElBQUksQ0FBQ2xDLEdBQUcsQ0FBQyxFQUFHO01BQzdCRCxVQUFVLENBQUNJLFVBQVUsQ0FBQ2QsSUFBSSxDQUFDNEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3RDbEMsVUFBVSxDQUFDb0MsYUFBYSxHQUFHLElBQUk7SUFDbkM7RUFDSjtFQUVBLElBQUlDLE1BQU0sR0FBR3ZFLDJEQUFXLENBQUNrQyxVQUFVLEVBQUVBLFVBQVUsQ0FBQzFCLFVBQVUsQ0FBQztFQUMzRCxJQUFJMEIsVUFBVSxDQUFDSSxVQUFVLENBQUM2QixNQUFNLEVBQUU7SUFDOUJoQyxHQUFHLEdBQUdGLDRCQUE0QixDQUFDQyxVQUFVLEVBQUVDLEdBQUcsRUFBRW9DLE1BQU0sQ0FBQztFQUMvRDtFQUVBckMsVUFBVSxDQUFDc0MsZ0JBQWdCLEdBQUdyQyxHQUFHO0VBRWpDLE9BQU87SUFBQ0EsR0FBRyxFQUFFQSxHQUFHO0lBQUVZLElBQUksRUFBRXdCLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDSixNQUFNLEdBQUcsQ0FBQztFQUFDLENBQUM7QUFDdEQ7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNNLGFBQWFBLENBQUNDLEtBQUssRUFBRTtFQUNqQyxJQUFJQSxLQUFLLENBQUNDLFFBQVEsQ0FBQ3RFLGdCQUFnQixDQUFDLEVBQUU7SUFDbEMsT0FBT3FFLEtBQUssQ0FBQ25CLElBQUksQ0FBQyxHQUFHbkQsbUJBQW1CLEVBQUUsQ0FBQztFQUMvQztFQUNBLE9BQU9zRSxLQUFLLENBQUNFLE9BQU8sQ0FBQyxJQUFJdkUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDa0QsSUFBSSxDQUFDLEdBQUduRCxtQkFBbUIsRUFBRSxDQUFDO0FBQy9FOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTeUUsdUJBQXVCQSxDQUFDM0MsVUFBVSxFQUFFO0VBQ2hELElBQUk0QyxXQUFXLEdBQUc7SUFBQy9CLElBQUksRUFBRSxDQUFDO0VBQUMsQ0FBQztFQUM1QixJQUFJYixVQUFVLENBQUNnQyxVQUFVLEVBQUU7SUFDdkJZLFdBQVcsR0FBR2IsZUFBZSxDQUFDL0IsVUFBVSxFQUFFQSxVQUFVLENBQUNnQyxVQUFVLENBQUM7SUFDaEVoQyxVQUFVLENBQUNnQyxVQUFVLEdBQUdZLFdBQVcsQ0FBQzNDLEdBQUc7RUFDM0M7RUFFQSxPQUFPYyxPQUFPLENBQUM4QixHQUFHLENBQUMsQ0FDZmxDLFlBQVksQ0FBQ1gsVUFBVSxDQUFDZ0MsVUFBVSxFQUFFWSxXQUFXLENBQUMvQixJQUFJLEVBQUViLFVBQVUsQ0FBQzhDLFFBQVEsRUFBRTlDLFVBQVUsQ0FBQ29DLGFBQWEsQ0FBQyxDQUN2RyxDQUFDLENBQUNoQixJQUFJLENBQUMsVUFBVTJCLE9BQU8sRUFBRTtJQUN2QixJQUFJQyxRQUFRLEdBQUdELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSUMsUUFBUSxFQUFFO01BQ1YsSUFBSTtRQUNBLE9BQU9oRSxDQUFDLENBQUNnRSxRQUFRLENBQUM7TUFDdEIsQ0FBQyxDQUFDLE1BQU07UUFDSixPQUFPaEUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDaUUsTUFBTSxDQUFDRCxRQUFRLENBQUM7TUFDNUM7SUFDSjtJQUVBLE9BQU8sSUFBSTtFQUNmLENBQUMsQ0FBQztBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0Usb0JBQW9CQSxDQUFDbEQsVUFBVSxFQUFFO0VBQzdDLElBQUlBLFVBQVUsQ0FBQ2dDLFVBQVUsRUFBRTtJQUN2QixJQUFJWSxXQUFXLEdBQUdiLGVBQWUsQ0FBQy9CLFVBQVUsRUFBRUEsVUFBVSxDQUFDZ0MsVUFBVSxDQUFDO0lBQ3BFaEMsVUFBVSxDQUFDZ0MsVUFBVSxHQUFHWSxXQUFXLENBQUMzQyxHQUFHO0lBQ3ZDLE9BQU9VLFlBQVksQ0FBQ1gsVUFBVSxDQUFDZ0MsVUFBVSxFQUFFWSxXQUFXLENBQUMvQixJQUFJLEVBQUViLFVBQVUsQ0FBQzhDLFFBQVEsRUFBRTlDLFVBQVUsQ0FBQ29DLGFBQWEsQ0FBQztFQUMvRztFQUVBLE9BQU8sSUFBSXJCLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJO0lBQzFCQSxPQUFPLENBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2hCLENBQUMsQ0FBQztBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTbUUsZ0NBQWdDQSxDQUFDcEUsUUFBUSxFQUFFRSxPQUFPLEVBQUVtRSxnQkFBZ0IsRUFBRTVFLGdCQUFnQixFQUFFO0VBQzdGLElBQUl3QixVQUFVLEdBQUdqQixRQUFRLENBQUNzQyxJQUFJLENBQUNuRCxtQkFBbUIsQ0FBQztFQUNuRCxJQUFJOEIsVUFBVSxFQUFFO0lBQ1osT0FBTzRCLGdDQUFnQyxDQUFDN0MsUUFBUSxFQUFFaUIsVUFBVSxDQUFDO0VBQ2pFO0VBRUFBLFVBQVUsR0FBR3JDLHFFQUFpQixDQUFDYSxnQkFBZ0IsRUFBRU8sUUFBUSxFQUFFRSxPQUFPLEVBQUVtRSxnQkFBZ0IsQ0FBQztFQUNyRnJFLFFBQVEsQ0FBQ3NDLElBQUksQ0FBQ25ELG1CQUFtQixFQUFFOEIsVUFBVSxDQUFDO0VBQzlDakIsUUFBUSxDQUFDYSxRQUFRLENBQUN6QixnQkFBZ0IsQ0FBQztFQUNuQyxPQUFPUCwyRUFBdUIsQ0FBQ29DLFVBQVUsRUFBRWpCLFFBQVEsQ0FBQztBQUN4RDs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3NFLHdCQUF3QkEsQ0FBQ3JELFVBQVUsRUFBRXNELEtBQUssRUFBRTtFQUN4RCxJQUFJQSxLQUFLLElBQUlBLEtBQUssQ0FBQ3JCLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDM0JqQyxVQUFVLENBQUMxQixVQUFVLENBQUNpRixLQUFLLENBQUMsQ0FBQztJQUM3QnZELFVBQVUsQ0FBQzFCLFVBQVUsQ0FBQ2tGLElBQUksQ0FBQ3hELFVBQVUsQ0FBQzhDLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDbkQsS0FBSyxJQUFJVyxRQUFRLElBQUl6RCxVQUFVLENBQUMwRCxPQUFPLEVBQUU7TUFDckMxRCxVQUFVLENBQUMxQixVQUFVLENBQUNrRixJQUFJLENBQUN4RCxVQUFVLENBQUMwRCxPQUFPLENBQUNELFFBQVEsQ0FBQyxDQUFDWCxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3pFO0lBQ0E5QyxVQUFVLENBQUMxQixVQUFVLENBQUMyRSxNQUFNLENBQUNLLEtBQUssQ0FBQztFQUN2QztFQUVBLE9BQU8xQixnQ0FBZ0MsQ0FBQzVCLFVBQVUsQ0FBQzFCLFVBQVUsRUFBRTBCLFVBQVUsQ0FBQztBQUM5RTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVM2Qiw2QkFBNkJBLENBQUNoRSxPQUFPLEVBQUVTLFVBQVUsRUFBRUUsZ0JBQWdCLEVBQUU7RUFDakYsT0FBTyxJQUFJdUMsT0FBTyxDQUFFQyxPQUFPLElBQUs7SUFFNUIsSUFBSTJDLHNCQUFzQixHQUFHdEYsVUFBVSxDQUFDQyxVQUFVLEVBQUVULE9BQU8sRUFBRVcsZ0JBQWdCLENBQUM7SUFDOUUsSUFBSW9GLFFBQVEsR0FBR0Qsc0JBQXNCLENBQUMxQixNQUFNO0lBRTVDLElBQUkyQixRQUFRLEtBQUssQ0FBQyxFQUFFO01BQ2hCLE9BQU81QyxPQUFPLENBQUMsQ0FBQztJQUNwQjtJQUVBLEtBQUssSUFBSTZDLFlBQVksR0FBRyxDQUFDLEVBQUVBLFlBQVksR0FBR0Ysc0JBQXNCLENBQUMxQixNQUFNLEVBQUU0QixZQUFZLEVBQUUsRUFBRTtNQUNyRlYsZ0NBQWdDLENBQUNRLHNCQUFzQixDQUFDRSxZQUFZLENBQUMsQ0FBQ25FLEdBQUcsRUFDckVpRSxzQkFBc0IsQ0FBQ0UsWUFBWSxDQUFDLENBQUN0RSxHQUFHLEVBQ3hDb0Usc0JBQXNCLENBQUNFLFlBQVksQ0FBQyxDQUFDckUsS0FBSyxFQUMxQ2hCLGdCQUFnQixDQUFDLENBQUM0QyxJQUFJLENBQUMsTUFBTTtRQUM3QndDLFFBQVEsRUFBRTtRQUNWLElBQUlBLFFBQVEsS0FBSyxDQUFDLEVBQUU7VUFDaEIsT0FBTzVDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCO01BQ0osQ0FBQyxDQUFDO0lBQ047RUFDSixDQUFDLENBQUM7QUFDTjtBQUVPLFNBQVM4QyxnQkFBZ0JBLENBQUM5RCxVQUFVLEVBQUUxQixVQUFVLEVBQUU7RUFDckQsT0FBT3lGLGlCQUFpQixDQUFDL0QsVUFBVSxFQUFFMUIsVUFBVSxJQUFJMEIsVUFBVSxDQUFDMUIsVUFBVSxDQUFDO0FBQzdFO0FBRUEsU0FBU3lGLGlCQUFpQkEsQ0FBQy9ELFVBQVUsRUFBRWdFLElBQUksRUFBRTtFQUN6QyxNQUFNQyxLQUFLLEdBQUcsRUFBRTtFQUVoQkQsSUFBSSxDQUFDRSxJQUFJLENBQUMscUNBQXFDbEUsVUFBVSxDQUFDSCxLQUFLLEVBQUUsQ0FBQyxDQUFDakIsSUFBSSxDQUFDLFlBQVk7SUFDaEYsTUFBTXVGLEtBQUssR0FBR25GLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsSUFBSW9GLE1BQU0sR0FBR0MsU0FBUztJQUN0QixJQUFJRixLQUFLLENBQUMxQixRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7TUFDakMyQixNQUFNLEdBQUdELEtBQUssQ0FBQzlDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbEMsQ0FBQyxNQUFNO01BQ0gsSUFBSWlELGtCQUFrQixHQUFHLElBQUksQ0FBQ3JGLE9BQU8sQ0FBQ0UsV0FBVyxDQUFDLENBQUMsQ0FBQ3NCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO01BQ3pFLElBQUlULFVBQVUsQ0FBQ3NFLGtCQUFrQixDQUFDLEVBQUU7UUFDaENGLE1BQU0sR0FBR3BFLFVBQVUsQ0FBQ3NFLGtCQUFrQixDQUFDO01BQzNDO0lBQ0o7SUFHQSxJQUFJLE9BQU9GLE1BQU0sS0FBSyxVQUFVLEVBQUU7TUFDOUJBLE1BQU0sR0FBR0EsTUFBTSxDQUFDRyxJQUFJLENBQUN2RSxVQUFVLENBQUMsQ0FBQ21FLEtBQUssQ0FBQzlDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQ7SUFDQSxJQUFJK0MsTUFBTSxLQUFLQyxTQUFTLEVBQUU7TUFDdEJKLEtBQUssQ0FBQzNFLElBQUksQ0FBQ3lCLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDb0QsTUFBTSxDQUFDLENBQUNoRCxJQUFJLENBQUVvRCxDQUFDLElBQUs7UUFDM0MsSUFBSUMsV0FBVyxHQUFHekYsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNsQ3lGLFdBQVcsQ0FBQ3hCLE1BQU0sQ0FBQ3VCLENBQUMsQ0FBQztRQUNyQkMsV0FBVyxHQUFHTixLQUFLLENBQUNPLEtBQUssQ0FBQyxDQUFDLENBQUNuQixLQUFLLENBQUMsQ0FBQyxDQUFDTixNQUFNLENBQUN3QixXQUFXLENBQUM7UUFDdkQsT0FBT3pFLFVBQVUsQ0FBQzJFLFNBQVMsQ0FBQ0YsV0FBVyxFQUFFTixLQUFLLENBQUM7TUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUDtFQUVKLENBQUMsQ0FBQztFQUVGLE9BQU9wRCxPQUFPLENBQUM4QixHQUFHLENBQUNvQixLQUFLLENBQUM7QUFDN0I7QUFHTyxTQUFTVSxTQUFTQSxDQUFDQyxZQUFZLEVBQUVDLFNBQVMsRUFBRTdFLFVBQVUsRUFBRTtFQUMzRDtFQUNBLElBQUk0RSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNFLFFBQVEsS0FBTUQsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxRQUFRLElBQ25ERixZQUFZLENBQUMxRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUsyRixTQUFTLENBQUMzRixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDOUQyRixTQUFTLENBQUNFLFdBQVcsQ0FBQ0gsWUFBWSxDQUFDO0lBQ25DO0VBQ0o7RUFFQSxJQUFJQSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNFLFFBQVEsS0FBSyxDQUFDLEVBQUU7SUFDaEMsSUFBSUYsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxTQUFTLEtBQUtILFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csU0FBUyxFQUFFO01BQ3hESCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUNHLFNBQVMsR0FBR0osWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxTQUFTO0lBQ3BEO0lBQ0E7RUFDSjs7RUFFQTtFQUNBQyxjQUFjLENBQUNKLFNBQVMsRUFBRUQsWUFBWSxDQUFDOztFQUV2QztFQUNBLE1BQU1NLGVBQWUsR0FBR04sWUFBWSxDQUFDTyxRQUFRLENBQUMsQ0FBQztFQUMvQyxNQUFNQyxZQUFZLEdBQUdQLFNBQVMsQ0FBQ00sUUFBUSxDQUFDLENBQUM7RUFFekMsTUFBTUUsR0FBRyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ0wsZUFBZSxDQUFDakQsTUFBTSxFQUFFbUQsWUFBWSxDQUFDbkQsTUFBTSxDQUFDO0VBQ2pFLEtBQUssSUFBSXVELENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0gsR0FBRyxFQUFFRyxDQUFDLEVBQUUsRUFBRTtJQUMxQixJQUFJQSxDQUFDLElBQUlKLFlBQVksQ0FBQ25ELE1BQU0sRUFBRTtNQUMxQjRDLFNBQVMsQ0FBQzVCLE1BQU0sQ0FBQ2pFLENBQUMsQ0FBQ2tHLGVBQWUsQ0FBQ00sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDLE1BQU0sSUFBSUEsQ0FBQyxJQUFJTixlQUFlLENBQUNqRCxNQUFNLEVBQUU7TUFDcENqRCxDQUFDLENBQUNvRyxZQUFZLENBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUNDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUMsTUFBTTtNQUNIZCxTQUFTLENBQUMzRixDQUFDLENBQUNrRyxlQUFlLENBQUNNLENBQUMsQ0FBQyxDQUFDLEVBQUV4RyxDQUFDLENBQUNvRyxZQUFZLENBQUNJLENBQUMsQ0FBQyxDQUFDLEVBQUV4RixVQUFVLENBQUM7SUFDcEU7RUFDSjtBQUNKO0FBRUEsU0FBU2lGLGNBQWNBLENBQUNTLEtBQUssRUFBRUMsUUFBUSxFQUFFO0VBQ3JDLE1BQU1DLFNBQVMsR0FBR0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDRyxVQUFVLElBQUksRUFBRTtFQUMzQyxNQUFNQyxZQUFZLEdBQUdILFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0UsVUFBVSxJQUFJLEVBQUU7RUFDakQ7RUFDQSxDQUFDLEdBQUdELFNBQVMsQ0FBQyxDQUFDRyxPQUFPLENBQUN2QyxJQUFJLElBQUk7SUFDM0IsSUFBSSxDQUFDbUMsUUFBUSxDQUFDSyxFQUFFLENBQUMsSUFBSXhDLElBQUksQ0FBQ3lDLElBQUksR0FBRyxDQUFDLEVBQUU7TUFDaENQLEtBQUssQ0FBQ1EsVUFBVSxDQUFDMUMsSUFBSSxDQUFDeUMsSUFBSSxDQUFDO0lBQy9CO0VBQ0osQ0FBQyxDQUFDOztFQUVGO0VBQ0EsQ0FBQyxHQUFHSCxZQUFZLENBQUMsQ0FBQ0MsT0FBTyxDQUFDdkMsSUFBSSxJQUFJO0lBQzlCLElBQUksQ0FBQ0EsSUFBSSxDQUFDeUMsSUFBSSxDQUFDdEcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJK0YsS0FBSyxDQUFDbEMsSUFBSSxDQUFDQSxJQUFJLENBQUN5QyxJQUFJLENBQUMsS0FBS3pDLElBQUksQ0FBQzJDLEtBQUssRUFBRTtNQUN2RVQsS0FBSyxDQUFDbEMsSUFBSSxDQUFDQSxJQUFJLENBQUN5QyxJQUFJLEVBQUV6QyxJQUFJLENBQUMyQyxLQUFLLENBQUM7SUFDckM7RUFDSixDQUFDLENBQUM7RUFFRkMsTUFBTSxDQUFDQyxPQUFPLENBQUNWLFFBQVEsQ0FBQ3RFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzBFLE9BQU8sQ0FBQyxDQUFDLENBQUN6RixHQUFHLEVBQUU2RixLQUFLLENBQUMsS0FBSztJQUN0RCxJQUFJN0YsR0FBRyxLQUFLcEMsbUJBQW1CLEVBQUU7TUFDN0J3SCxLQUFLLENBQUNyRSxJQUFJLENBQUNmLEdBQUcsRUFBRTZGLEtBQUssQ0FBQztJQUMxQjtFQUNKLENBQUMsQ0FBQztBQUNOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9zaW1wbGVEb21Db250cm9sL3NkY192aWV3LmpzPzI0YjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb250cm9sbGVyRmFjdG9yeSwgcnVuQ29udHJvbEZsb3dGdW5jdGlvbnMsIHRhZ0xpc3R9IGZyb20gXCIuL3NkY19jb250cm9sbGVyLmpzXCI7XG5pbXBvcnQge2dldFVybFBhcmFtfSBmcm9tIFwiLi9zZGNfcGFyYW1zLmpzXCI7XG5pbXBvcnQge2FwcH0gZnJvbSBcIi4vc2RjX21haW4uanNcIjtcbmltcG9ydCB7dHJpZ2dlcn0gZnJvbSBcIi4vc2RjX2V2ZW50cy5qc1wiO1xuXG4vKipcbiAqIExpc3Qgb2YgSFRNTCBmaWxlcy5cbiAqIEB0eXBlIHt7fX1cbiAqL1xubGV0IGh0bWxGaWxlcyA9IHt9O1xuXG5leHBvcnQgY29uc3QgREFUQV9DT05UUk9MTEVSX0tFWSA9ICdfY29udHJvbGxlcl8nO1xuZXhwb3J0IGNvbnN0IENPTlRST0xMRVJfQ0xBU1MgPSAnX3NkY19jb250cm9sbGVyXyc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQ2FjaGUoKSB7XG4gICAgaHRtbEZpbGVzID0ge307XG59XG5cbi8qKlxuICogZmluZFNkY1RncyBGaW5kcyBhbGwgcmVnaXN0ZXJlZCB0YWdzIGluIGEgY29udGFpbmVyLiBCdXQgaXQgaWdub3Jlc1xuICogcmVnaXN0ZXJlZCB0YWdzIGluIHJlZ2lzdGVyZWQgdGFncy4gSXQgY29sbGVjdHMgYWxsIHRob3NlXG4gKiBkb21zIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvYmplY3RzIGNvbnRhaW5pbmcgYWxzbyB0aGUgdGFnIG5hbWUgdGhlIGRvbSBhbmQgdGhlIHRhZ1xuICogbmFtZXMgb2YgdGhlIHN1cGVyIGNvbnRyb2xsZXJcbiAqXG4gKiBAcGFyYW0ge2pxdWVyeX0gJGNvbnRhaW5lciAtIGpRdWVyeSBjb250YWluZXJcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gdGFnTmFtZUxpc3QgLSBhIHN0cmluZyBsaXN0IHdpdGggdGFnIG5hbWVzLlxuICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gcGFyZW50Q29udHJvbGxlciAtIGNvbnRyb2xsZXIgaW4gc3Vycm91bmRpbmdcbiAqIEByZXR1cm4ge0FycmF5fSAtIGEgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGFsbCByZWdpc3RlciB0YWdzIGZvdW5kXG4gKi9cbmZ1bmN0aW9uIGZpbmRTZGNUZ3MoJGNvbnRhaW5lciwgdGFnTmFtZUxpc3QsIHBhcmVudENvbnRyb2xsZXIpIHtcbiAgICBpZiAoISRjb250YWluZXIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsZXQgJGNoaWxkcmVuID0gJGNvbnRhaW5lci5jaGlsZHJlbigpO1xuICAgIGxldCBlbXB0eUxpc3QgPSBbXTtcbiAgICAkY2hpbGRyZW4uZWFjaChmdW5jdGlvbiAoXywgZWxlbWVudCkge1xuICAgICAgICBsZXQgJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICBsZXQgdGFnTmFtZSA9ICRlbGVtZW50LnByb3AoJ3RhZ05hbWUnKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCdfJyk7XG4gICAgICAgIGlmICgkLmluQXJyYXkodGFnTmFtZVswXSwgdGFnTmFtZUxpc3QpID49IDApIHtcbiAgICAgICAgICAgIGVtcHR5TGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0YWc6IHRhZ05hbWVbMF0sXG4gICAgICAgICAgICAgICAgc3VwZXI6IHRhZ05hbWUuc3BsaWNlKDEpIHx8IFtdLFxuICAgICAgICAgICAgICAgIGRvbTogJGVsZW1lbnRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGFnTmFtZVswXS5zdGFydHNXaXRoKCd0aGlzLicpKSB7XG4gICAgICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhgX2JpbmRfdG9fdXBkYXRlX2hhbmRsZXIgc2RjX3V1aWRfJHtwYXJlbnRDb250cm9sbGVyLl91dWlkfWApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbXB0eUxpc3QgPSBlbXB0eUxpc3QuY29uY2F0KGZpbmRTZGNUZ3MoJGVsZW1lbnQsIHRhZ05hbWVMaXN0LCBwYXJlbnRDb250cm9sbGVyKSlcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVtcHR5TGlzdDtcbn1cblxuLyoqXG4gKiByZXBsYWNlUGxhY2Vob2xkZXJDb250cm9sbGVyIGZpbGxzIHRoZSBwYXJhbWV0ZXIgb2YgdGhlIGNvbnRlbnRcbiAqIHVybCB0aGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHRhZyBwYXJhbWV0ZXJcbiAqXG4gKiBAcGFyYW0gY29udHJvbGxlciAtIGNvbnRyb2xsZXIgb2JqZWN0XG4gKiBAcGFyYW0gdXJsIC0gdGhlIG9yaWdpbiBjb250ZW50IFVSTFxuICogQHBhcmFtIHVybFZhbHVlcyAtIHZhbHVlcyBmb3IgdGhlIHVybCBwbGFjZWhvbGRlci4gSW4gc2FtZSBvcmRlciEhXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBjb3JyZWN0IFVSTCB3aXRoIHByZWZpeC5cbiAqL1xuZnVuY3Rpb24gcmVwbGFjZVBsYWNlaG9sZGVyQ29udHJvbGxlcihjb250cm9sbGVyLCB1cmwsIHVybFZhbHVlcykge1xuICAgIGZvciAobGV0IGtleV9pZHggaW4gY29udHJvbGxlci5fdXJsUGFyYW1zKSB7XG4gICAgICAgIGlmIChjb250cm9sbGVyLl91cmxQYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5X2lkeCkpIHtcbiAgICAgICAgICAgIGxldCBrZXkgPSBjb250cm9sbGVyLl91cmxQYXJhbXNba2V5X2lkeF07XG4gICAgICAgICAgICBsZXQgcmUgPSBSZWdFeHAoXCIlXFxcXChcIiArIGtleSArIFwiXFxcXClcXFxcd1wiLCBcImdtXCIpO1xuICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UocmUsIFwiXCIgKyB1cmxWYWx1ZXMuc2hpZnQoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xufVxuXG4vKipcbiAqIGxvYWRIVE1MRmlsZSBsb2FkcyB0aGUgSFRNTCBjb250ZW50IGZpbGUgZnJvbSB0aGUgc2VydmVyIHZpYSBhamF4IHJlcXVlc3QuXG4gKlxuICogSWYgdGhlIEhUTUwgZmlsZSBpcyBsb2FkZWQgYWxyZWFkeSB0aGUgZnVuY3Rpb24gdGFrZXMgbm8gYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gYSBjb250ZW50IFVSTCBmcm9tIHRoZSBjb250cm9sbGVyLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBnZXQgYXJncy5cbiAqIEBwYXJhbSB0YWcgLSBhIG5vcm1hbGl6ZWQgdGFnLW5hbWUgYXMgc3RyaW5nLlxuICogQHBhcmFtIGhhcmRSZWxvYWQgLSB0cnVlIGlmIHRoZSBmaWxlIGhhcyB0byBiZSByZWxvYWRlZCBldmVyeSB0aW1lLlxuICogQHJldHVybnMge1Byb21pc2U8Qm9vbGVhbj59IC0gd2FpdHMgZm9yIHRoZSBmaWxlIHRvIGJlIGxvYWRlZC5cbiAqL1xuZnVuY3Rpb24gbG9hZEhUTUxGaWxlKHBhdGgsIGFyZ3MsIHRhZywgaGFyZFJlbG9hZCkge1xuICAgIGlmICghcGF0aCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKGh0bWxGaWxlc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaHRtbEZpbGVzW3RhZ10pXG4gICAgfVxuXG4gICAgYXJncy5WRVJTSU9OID0gYXBwLlZFUlNJT047XG4gICAgYXJncy5fbWV0aG9kID0gJ2NvbnRlbnQnO1xuXG4gICAgcmV0dXJuICQuZ2V0KHBhdGgsIGFyZ3MpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKCFoYXJkUmVsb2FkKSB7XG4gICAgICAgICAgICBodG1sRmlsZXNbdGFnXSA9IGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIuc3RhdHVzID09PSAzMDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBlcnIucmVzcG9uc2VKU09OO1xuICAgICAgICAgICAgdHJpZ2dlcignX1JlZGlyZWN0T25WaWV3JywgZGF0YVsndXJsLWxpbmsnXSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJpZ2dlcignbmF2TG9hZGVkJywgeydjb250cm9sbGVyX25hbWUnOiAoKSA9PiBlcnIuc3RhdHVzfSk7XG5cbiAgICAgICAgdGhyb3cgYDxzZGMtZXJyb3IgZGF0YS1jb2RlPVwiJHtlcnIuc3RhdHVzfVwiPiR7ZXJyLnJlc3BvbnNlVGV4dH08L3NkYy1lcnJvcj5gO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIHJlcGxhY2VBbGxUYWdFbGVtZW50c0luQ29udGFpbmVyIHJlcGxhY2VzIGFsbCByZWdpc3RlcmVkIHRhZ3MgYnkgdGhlIGNvbnRyb2xsZXIuXG4gKiBJbiB0aGlzIHN0ZXAgdGhlIGxpZmUtY3ljbGUgc3RhcnRzLlxuICpcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyIC0gZ2l2ZW4gY29udGFpbmVyXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyIC0gcGFyZW50IGNvbnRvbGxlciBzdXJyb3VuZGVkIHRoZSBjb250YWluZXJcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUFsbFRhZ0VsZW1lbnRzSW5Db250YWluZXIoJGNvbnRhaW5lciwgcGFyZW50Q29udHJvbGxlcikge1xuICAgIHBhcmVudENvbnRyb2xsZXIgPSBwYXJlbnRDb250cm9sbGVyIHx8ICRjb250YWluZXIuZGF0YShEQVRBX0NPTlRST0xMRVJfS0VZKTtcbiAgICByZXR1cm4gcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIoYXBwLnRhZ05hbWVzLCAkY29udGFpbmVyLCBwYXJlbnRDb250cm9sbGVyKTtcbn1cblxuLyoqXG4gKiBwYXJzZUNvbnRlbnRVcmwgdXNlcyB0aGUgY29udGVudCBVUkwgcHJlZml4IHRvIG1hcmdlIHRoZVxuICogY29ycmVjdCBVUkwuIEFsc28gcGFyc2VzIHRoZSB1cmwgcGFyYW1ldGVyXG4gKlxuICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlciAtIGNvbnRyb2xsZXIgb2JqZWN0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBjb3JyZWN0IFVSTCB3aXRoIHByZWZpeC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VDb250ZW50VXJsKGNvbnRyb2xsZXIpIHtcbiAgICBsZXQgdXJsID0gY29udHJvbGxlci5jb250ZW50VXJsO1xuICAgIGlmIChjb250cm9sbGVyICYmIGNvbnRyb2xsZXIuX3VybFBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbGV0IHJlID0gLyVcXCgoW14pXSspXFwpXFx3L2dtO1xuICAgICAgICBsZXQgbWF0Y2hlcztcbiAgICAgICAgY29udHJvbGxlci5fdXJsUGFyYW1zID0gW107XG4gICAgICAgIHdoaWxlICgobWF0Y2hlcyA9IHJlLmV4ZWModXJsKSkpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuX3VybFBhcmFtcy5wdXNoKG1hdGNoZXNbMV0pO1xuICAgICAgICAgICAgY29udHJvbGxlci5jb250ZW50UmVsb2FkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSBnZXRVcmxQYXJhbShjb250cm9sbGVyLCBjb250cm9sbGVyLiRjb250YWluZXIpO1xuICAgIGlmIChjb250cm9sbGVyLl91cmxQYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgIHVybCA9IHJlcGxhY2VQbGFjZWhvbGRlckNvbnRyb2xsZXIoY29udHJvbGxlciwgdXJsLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnRyb2xsZXIucGFyc2VkQ29udGVudFVybCA9IHVybDtcblxuICAgIHJldHVybiB7dXJsOiB1cmwsIGFyZ3M6IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV19O1xufVxuXG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkZWxlbVxuICogQHJldHVybiB7QWJzdHJhY3RTREN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cm9sbGVyKCRlbGVtKSB7XG4gICAgaWYgKCRlbGVtLmhhc0NsYXNzKENPTlRST0xMRVJfQ0xBU1MpKSB7XG4gICAgICAgIHJldHVybiAkZWxlbS5kYXRhKGAke0RBVEFfQ09OVFJPTExFUl9LRVl9YCk7XG4gICAgfVxuICAgIHJldHVybiAkZWxlbS5jbG9zZXN0KGAuJHtDT05UUk9MTEVSX0NMQVNTfWApLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKTtcbn1cblxuLyoqXG4gKiBsb2FkRmlsZXNGcm9tQ29udHJvbGxlciBsb2FkcyB0aGUgY29udGVudCAoSFRNTCkgb2YgYVxuICogQ29udHJvbGxlci4gSWYgeW91IGhhdmUgYW4gYWx0ZXJuYXRpdmUgY29udGVudCBVUkwgaXMgcmVnaXN0ZXJlZCwgZm9yIHRoaXNcbiAqIGNvbnRyb2xsZXIgdGhlIG9yaWdpbiBjb250ZW50IFVSTCBpcyBpZ25vcmVkLlxuICpcbiAqIFRoZSBjb250ZW50IGlzIHNhdmVkIGFzIGpRdWVyeSBvYmplY3QgdG8gdGhlIGNvbnRyb2xsZXIuJGNvbnRlbnQgcHJvcGVydHkgb2ZcbiAqIHRoZSBjb250cm9sbGVyLlxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXIgLSBhIGluc3RhbmNlIG9mIGEgSmF2YVNjcmlwdCBjb250cm9sbGVyIG9iamVjdC5cbiAqIEByZXR1cm5zIHtQcm9taXNlPGpRdWVyeT59IC0gdGhlIHByb21pc2Ugd2FpdHMgdG8gdGhlIGZpbGVzIGFyZSBsb2FkZWQuIGl0IHJldHVybnMgdGhlIGpRdWVyeSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZXNGcm9tQ29udHJvbGxlcihjb250cm9sbGVyKSB7XG4gICAgbGV0IGdldEVsZW1lbnRzID0ge2FyZ3M6IHt9fTtcbiAgICBpZiAoY29udHJvbGxlci5jb250ZW50VXJsKSB7XG4gICAgICAgIGdldEVsZW1lbnRzID0gcGFyc2VDb250ZW50VXJsKGNvbnRyb2xsZXIsIGNvbnRyb2xsZXIuY29udGVudFVybCk7XG4gICAgICAgIGNvbnRyb2xsZXIuY29udGVudFVybCA9IGdldEVsZW1lbnRzLnVybDtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICBsb2FkSFRNTEZpbGUoY29udHJvbGxlci5jb250ZW50VXJsLCBnZXRFbGVtZW50cy5hcmdzLCBjb250cm9sbGVyLl90YWdOYW1lLCBjb250cm9sbGVyLmNvbnRlbnRSZWxvYWQpXG4gICAgXSkudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgICBsZXQgaHRtbEZpbGUgPSByZXN1bHRzWzBdO1xuICAgICAgICBpZiAoaHRtbEZpbGUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoaHRtbEZpbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJzxkaXY+PC9kaXY+JykuYXBwZW5kKGh0bWxGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIHJlbG9hZEhUTUxDb250cm9sbGVyIGxvYWRzIHRoZSBjb250ZW50IChIVE1MKSBvZiBhXG4gKiBDb250cm9sbGVyLiBJZiB5b3UgaGF2ZSBhbiBhbHRlcm5hdGl2ZSBjb250ZW50IFVSTCBpcyByZWdpc3RlcmVkLCBmb3IgdGhpc1xuICogY29udHJvbGxlciB0aGUgb3JpZ2luIGNvbnRlbnQgVVJMIGlzIGlnbm9yZWQuXG4gKlxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXIgLSBhIGluc3RhbmNlIG9mIGEgSmF2YVNjcmlwdCBjb250cm9sbGVyIG9iamVjdC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxqUXVlcnk+fSAtIHRoZSBwcm9taXNlIHdhaXRzIHRvIHRoZSBmaWxlcyBhcmUgbG9hZGVkLiBpdCByZXR1cm5zIHRoZSBqUXVlcnkgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsb2FkSFRNTENvbnRyb2xsZXIoY29udHJvbGxlcikge1xuICAgIGlmIChjb250cm9sbGVyLmNvbnRlbnRVcmwpIHtcbiAgICAgICAgbGV0IGdldEVsZW1lbnRzID0gcGFyc2VDb250ZW50VXJsKGNvbnRyb2xsZXIsIGNvbnRyb2xsZXIuY29udGVudFVybCk7XG4gICAgICAgIGNvbnRyb2xsZXIuY29udGVudFVybCA9IGdldEVsZW1lbnRzLnVybDtcbiAgICAgICAgcmV0dXJuIGxvYWRIVE1MRmlsZShjb250cm9sbGVyLmNvbnRlbnRVcmwsIGdldEVsZW1lbnRzLmFyZ3MsIGNvbnRyb2xsZXIuX3RhZ05hbWUsIGNvbnRyb2xsZXIuY29udGVudFJlbG9hZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICByZXNvbHZlKCQoKSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkZWxlbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IHRhZ05hbWVcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gc3VwZXJUYWdOYW1lTGlzdFxuICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gcGFyZW50Q29udHJvbGxlclxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHJ1blJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKCRlbGVtZW50LCB0YWdOYW1lLCBzdXBlclRhZ05hbWVMaXN0LCBwYXJlbnRDb250cm9sbGVyKSB7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSAkZWxlbWVudC5kYXRhKERBVEFfQ09OVFJPTExFUl9LRVkpO1xuICAgIGlmIChjb250cm9sbGVyKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlQWxsVGFnRWxlbWVudHNJbkNvbnRhaW5lcigkZWxlbWVudCwgY29udHJvbGxlcik7XG4gICAgfVxuXG4gICAgY29udHJvbGxlciA9IGNvbnRyb2xsZXJGYWN0b3J5KHBhcmVudENvbnRyb2xsZXIsICRlbGVtZW50LCB0YWdOYW1lLCBzdXBlclRhZ05hbWVMaXN0KTtcbiAgICAkZWxlbWVudC5kYXRhKERBVEFfQ09OVFJPTExFUl9LRVksIGNvbnRyb2xsZXIpO1xuICAgICRlbGVtZW50LmFkZENsYXNzKENPTlRST0xMRVJfQ0xBU1MpO1xuICAgIHJldHVybiBydW5Db250cm9sRmxvd0Z1bmN0aW9ucyhjb250cm9sbGVyLCAkZWxlbWVudCk7XG59XG5cblxuLyoqXG4gKiBydW5Db250cm9sbGVyRmlsbENvbnRlbnQgZW1wdGllcyB0aGUgcmVnaXN0ZXJlZCB0YWcgYW5kIHJlcGxhY2VzIGl0IGJ5IHRoZSBjb250cm9sbGVyXG4gKiBjb250ZW50LiBJdCBzZXRzIHRoZSBDU1MgdGFncyBmb3IgdGhlIHJlbGF0aW9uIHdpdGggdGhlIENTUyBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyIC0ganMgY29udHJvbGxlciBpbnN0YW5jZVxuICogQHBhcmFtIHtqcXVlcnl9ICRodG1sIC0galF1ZXJ5IGxvYWRlZCBjb250ZW50XG4gKiBAcmV0dXJuIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuQ29udHJvbGxlckZpbGxDb250ZW50KGNvbnRyb2xsZXIsICRodG1sKSB7XG4gICAgaWYgKCRodG1sICYmICRodG1sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29udHJvbGxlci4kY29udGFpbmVyLmVtcHR5KCk7XG4gICAgICAgIGNvbnRyb2xsZXIuJGNvbnRhaW5lci5hdHRyKGNvbnRyb2xsZXIuX3RhZ05hbWUsICcnKTtcbiAgICAgICAgZm9yIChsZXQgbWl4aW5LZXkgaW4gY29udHJvbGxlci5fbWl4aW5zKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLiRjb250YWluZXIuYXR0cihjb250cm9sbGVyLl9taXhpbnNbbWl4aW5LZXldLl90YWdOYW1lLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbGxlci4kY29udGFpbmVyLmFwcGVuZCgkaHRtbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcGxhY2VBbGxUYWdFbGVtZW50c0luQ29udGFpbmVyKGNvbnRyb2xsZXIuJGNvbnRhaW5lciwgY29udHJvbGxlcik7XG59XG5cblxuLyoqXG4gKiByZXBsYWNlVGFnRWxlbWVudHNJbkNvbnRhaW5lciBGaW5kcyBhbGwgcmVnaXN0ZXJlZCB0YWdzIGluIGEgY29udGFpbmVyLiBCdXQgaXQgaWdub3Jlc1xuICogcmVnaXN0ZXJlZCB0YWdzIGluIHJlZ2lzdGVyZWQgdGFncy4gRm9yIGVhY2ggcmVnaXN0ZXJlZCB0YWcgaXQgbG9hZHMgdGhlIGNvbnRlbnQuXG4gKiBBZnRlcndhcmRzIGl0IHN0YXJ0cyB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgY29udHJvbGxlci4gSSB0aGUgbmV4dCBzdGVwIGl0IHN0YXJ0cyB0aGVcbiAqIHByb2NlZHVyZSBmb3IgdGhlIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBjb250cm9sbGVyIHRhZy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHRhZ0xpc3QgLSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIHRhZ3NcbiAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyIC0galF1ZXJ5IGNvbnRhaW5lciB0byBmaW5kIHRoZSB0YWdzXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBwYXJlbnRDb250cm9sbGVyIC0gY29udHJvbGxlciBpbiBzdXJyb3VuZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIodGFnTGlzdCwgJGNvbnRhaW5lciwgcGFyZW50Q29udHJvbGxlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXG4gICAgICAgIGxldCB0YWdEZXNjcmlwdGlvbkVsZW1lbnRzID0gZmluZFNkY1RncygkY29udGFpbmVyLCB0YWdMaXN0LCBwYXJlbnRDb250cm9sbGVyKTtcbiAgICAgICAgbGV0IHRhZ0NvdW50ID0gdGFnRGVzY3JpcHRpb25FbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKHRhZ0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgdGFnRGVzY3JpcHRpb25FbGVtZW50cy5sZW5ndGg7IGVsZW1lbnRJbmRleCsrKSB7XG4gICAgICAgICAgICBydW5SZXBsYWNlVGFnRWxlbWVudHNJbkNvbnRhaW5lcih0YWdEZXNjcmlwdGlvbkVsZW1lbnRzW2VsZW1lbnRJbmRleF0uZG9tLFxuICAgICAgICAgICAgICAgIHRhZ0Rlc2NyaXB0aW9uRWxlbWVudHNbZWxlbWVudEluZGV4XS50YWcsXG4gICAgICAgICAgICAgICAgdGFnRGVzY3JpcHRpb25FbGVtZW50c1tlbGVtZW50SW5kZXhdLnN1cGVyLFxuICAgICAgICAgICAgICAgIHBhcmVudENvbnRyb2xsZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRhZ0NvdW50LS07XG4gICAgICAgICAgICAgICAgaWYgKHRhZ0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbG9hZE1ldGhvZEhUTUwoY29udHJvbGxlciwgJGNvbnRhaW5lcikge1xuICAgIHJldHVybiBfcmVsb2FkTWV0aG9kSFRNTChjb250cm9sbGVyLCAkY29udGFpbmVyID8/IGNvbnRyb2xsZXIuJGNvbnRhaW5lcilcbn1cblxuZnVuY3Rpb24gX3JlbG9hZE1ldGhvZEhUTUwoY29udHJvbGxlciwgJGRvbSkge1xuICAgIGNvbnN0IHBsaXN0ID0gW107XG5cbiAgICAkZG9tLmZpbmQoYC5fYmluZF90b191cGRhdGVfaGFuZGxlci5zZGNfdXVpZF8ke2NvbnRyb2xsZXIuX3V1aWR9YCkuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0ICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKGBfd2l0aF9oYW5kbGVyYCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9ICR0aGlzLmRhdGEoJ2hhbmRsZXInKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBjb250cm9sbGVyX2hhbmRsZXIgPSB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9edGhpcy4vLCAnJyk7XG4gICAgICAgICAgICBpZiAoY29udHJvbGxlcltjb250cm9sbGVyX2hhbmRsZXJdKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29udHJvbGxlcltjb250cm9sbGVyX2hhbmRsZXJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmJpbmQoY29udHJvbGxlcikoJHRoaXMuZGF0YSgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBsaXN0LnB1c2goUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbigoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCAkbmV3Q29udGVudCA9ICQoYDxkaXY+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgJG5ld0NvbnRlbnQuYXBwZW5kKHgpO1xuICAgICAgICAgICAgICAgICRuZXdDb250ZW50ID0gJHRoaXMuY2xvbmUoKS5lbXB0eSgpLmFwcGVuZCgkbmV3Q29udGVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVjb25jaWxlKCRuZXdDb250ZW50LCAkdGhpcyk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHBsaXN0KTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gcmVjb25jaWxlKCR2aXJ0dWFsTm9kZSwgJHJlYWxOb2RlLCBjb250cm9sbGVyKSB7XG4gICAgLy8gU3RlcCAxOiBDaGVjayBub2RlIHR5cGVzIChlLmcuLCBkaXYgdnMgc3BhbilcbiAgICBpZiAoJHZpcnR1YWxOb2RlWzBdLm5vZGVUeXBlICE9PSAgJHJlYWxOb2RlWzBdLm5vZGVUeXBlIHx8XG4gICAgICAgICR2aXJ0dWFsTm9kZS5wcm9wKFwibm9kZU5hbWVcIikgIT09ICRyZWFsTm9kZS5wcm9wKFwibm9kZU5hbWVcIikpIHtcbiAgICAgICAgJHJlYWxOb2RlLnNhZmVSZXBsYWNlKCR2aXJ0dWFsTm9kZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoJHZpcnR1YWxOb2RlWzBdLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGlmICgkdmlydHVhbE5vZGVbMF0ubm9kZVZhbHVlICE9PSAkcmVhbE5vZGVbMF0ubm9kZVZhbHVlKSB7XG4gICAgICAgICAgJHJlYWxOb2RlWzBdLm5vZGVWYWx1ZSA9ICR2aXJ0dWFsTm9kZVswXS5ub2RlVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogQ29tcGFyZSBhdHRyaWJ1dGVzXG4gICAgc3luY0F0dHJpYnV0ZXMoJHJlYWxOb2RlLCAkdmlydHVhbE5vZGUpO1xuXG4gICAgLy8gU3RlcCAzOiBSZWN1cnNlIGNoaWxkcmVuXG4gICAgY29uc3QgdmlydHVhbENoaWxkcmVuID0gJHZpcnR1YWxOb2RlLmNvbnRlbnRzKCk7XG4gICAgY29uc3QgcmVhbENoaWxkcmVuID0gJHJlYWxOb2RlLmNvbnRlbnRzKCk7XG5cbiAgICBjb25zdCBsZW4gPSBNYXRoLm1heCh2aXJ0dWFsQ2hpbGRyZW4ubGVuZ3RoLCByZWFsQ2hpbGRyZW4ubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChpID49IHJlYWxDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICRyZWFsTm9kZS5hcHBlbmQoJCh2aXJ0dWFsQ2hpbGRyZW5baV0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID49IHZpcnR1YWxDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICQocmVhbENoaWxkcmVuW2ldKS5zYWZlUmVtb3ZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWNvbmNpbGUoJCh2aXJ0dWFsQ2hpbGRyZW5baV0pLCAkKHJlYWxDaGlsZHJlbltpXSksIGNvbnRyb2xsZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzeW5jQXR0cmlidXRlcygkcmVhbCwgJHZpcnR1YWwpIHtcbiAgICBjb25zdCByZWFsQXR0cnMgPSAkcmVhbFswXS5hdHRyaWJ1dGVzID8/IFtdO1xuICAgIGNvbnN0IHZpcnR1YWxBdHRycyA9ICR2aXJ0dWFsWzBdLmF0dHJpYnV0ZXMgPz8gW107XG4gICAgLy8gUmVtb3ZlIG1pc3NpbmcgYXR0cnNcbiAgICBbLi4ucmVhbEF0dHJzXS5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgICBpZiAoISR2aXJ0dWFsLmlzKGBbJHthdHRyLm5hbWV9XWApKSB7XG4gICAgICAgICAgICAkcmVhbC5yZW1vdmVBdHRyKGF0dHIubmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFkZCBvciB1cGRhdGVcbiAgICBbLi4udmlydHVhbEF0dHJzXS5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgICBpZiAoIWF0dHIubmFtZS5zdGFydHNXaXRoKGBkYXRhYCkgJiYgJHJlYWwuYXR0cihhdHRyLm5hbWUpICE9PSBhdHRyLnZhbHVlKSB7XG4gICAgICAgICAgICAkcmVhbC5hdHRyKGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5lbnRyaWVzKCR2aXJ0dWFsLmRhdGEoKSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChrZXkgIT09IERBVEFfQ09OVFJPTExFUl9LRVkpIHtcbiAgICAgICAgICAgICRyZWFsLmRhdGEoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0iXSwibmFtZXMiOlsiY29udHJvbGxlckZhY3RvcnkiLCJydW5Db250cm9sRmxvd0Z1bmN0aW9ucyIsInRhZ0xpc3QiLCJnZXRVcmxQYXJhbSIsImFwcCIsInRyaWdnZXIiLCJodG1sRmlsZXMiLCJEQVRBX0NPTlRST0xMRVJfS0VZIiwiQ09OVFJPTExFUl9DTEFTUyIsImNsZWFuQ2FjaGUiLCJmaW5kU2RjVGdzIiwiJGNvbnRhaW5lciIsInRhZ05hbWVMaXN0IiwicGFyZW50Q29udHJvbGxlciIsIiRjaGlsZHJlbiIsImNoaWxkcmVuIiwiZW1wdHlMaXN0IiwiZWFjaCIsIl8iLCJlbGVtZW50IiwiJGVsZW1lbnQiLCIkIiwidGFnTmFtZSIsInByb3AiLCJ0b0xvd2VyQ2FzZSIsInNwbGl0IiwiaW5BcnJheSIsInB1c2giLCJ0YWciLCJzdXBlciIsInNwbGljZSIsImRvbSIsInN0YXJ0c1dpdGgiLCJhZGRDbGFzcyIsIl91dWlkIiwiY29uY2F0IiwicmVwbGFjZVBsYWNlaG9sZGVyQ29udHJvbGxlciIsImNvbnRyb2xsZXIiLCJ1cmwiLCJ1cmxWYWx1ZXMiLCJrZXlfaWR4IiwiX3VybFBhcmFtcyIsImhhc093blByb3BlcnR5Iiwia2V5IiwicmUiLCJSZWdFeHAiLCJyZXBsYWNlIiwic2hpZnQiLCJsb2FkSFRNTEZpbGUiLCJwYXRoIiwiYXJncyIsImhhcmRSZWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIlZFUlNJT04iLCJfbWV0aG9kIiwiZ2V0IiwidGhlbiIsImRhdGEiLCJjYXRjaCIsImVyciIsInN0YXR1cyIsInJlc3BvbnNlSlNPTiIsImNvbnRyb2xsZXJfbmFtZSIsInJlc3BvbnNlVGV4dCIsInJlcGxhY2VBbGxUYWdFbGVtZW50c0luQ29udGFpbmVyIiwicmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIiLCJ0YWdOYW1lcyIsInBhcnNlQ29udGVudFVybCIsImNvbnRlbnRVcmwiLCJsZW5ndGgiLCJtYXRjaGVzIiwiZXhlYyIsImNvbnRlbnRSZWxvYWQiLCJwYXJhbXMiLCJwYXJzZWRDb250ZW50VXJsIiwiZ2V0Q29udHJvbGxlciIsIiRlbGVtIiwiaGFzQ2xhc3MiLCJjbG9zZXN0IiwibG9hZEZpbGVzRnJvbUNvbnRyb2xsZXIiLCJnZXRFbGVtZW50cyIsImFsbCIsIl90YWdOYW1lIiwicmVzdWx0cyIsImh0bWxGaWxlIiwiYXBwZW5kIiwicmVsb2FkSFRNTENvbnRyb2xsZXIiLCJydW5SZXBsYWNlVGFnRWxlbWVudHNJbkNvbnRhaW5lciIsInN1cGVyVGFnTmFtZUxpc3QiLCJydW5Db250cm9sbGVyRmlsbENvbnRlbnQiLCIkaHRtbCIsImVtcHR5IiwiYXR0ciIsIm1peGluS2V5IiwiX21peGlucyIsInRhZ0Rlc2NyaXB0aW9uRWxlbWVudHMiLCJ0YWdDb3VudCIsImVsZW1lbnRJbmRleCIsInJlbG9hZE1ldGhvZEhUTUwiLCJfcmVsb2FkTWV0aG9kSFRNTCIsIiRkb20iLCJwbGlzdCIsImZpbmQiLCIkdGhpcyIsInJlc3VsdCIsInVuZGVmaW5lZCIsImNvbnRyb2xsZXJfaGFuZGxlciIsImJpbmQiLCJ4IiwiJG5ld0NvbnRlbnQiLCJjbG9uZSIsInJlY29uY2lsZSIsIiR2aXJ0dWFsTm9kZSIsIiRyZWFsTm9kZSIsIm5vZGVUeXBlIiwic2FmZVJlcGxhY2UiLCJub2RlVmFsdWUiLCJzeW5jQXR0cmlidXRlcyIsInZpcnR1YWxDaGlsZHJlbiIsImNvbnRlbnRzIiwicmVhbENoaWxkcmVuIiwibGVuIiwiTWF0aCIsIm1heCIsImkiLCJzYWZlUmVtb3ZlIiwiJHJlYWwiLCIkdmlydHVhbCIsInJlYWxBdHRycyIsImF0dHJpYnV0ZXMiLCJ2aXJ0dWFsQXR0cnMiLCJmb3JFYWNoIiwiaXMiLCJuYW1lIiwicmVtb3ZlQXR0ciIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_view.js\n");
|
128
128
|
|
129
129
|
/***/ })
|
130
130
|
|