0 ? cList : null;\n\n // Fill the DOM:\n if (el) {\n el.innerHTML = t;\n } else {\n el = Vizu.vdom ? Vizu.vdom.window.document.body : document.body;\n el.innerHTML = +t;\n }\n // Attach parent element:\n view.el = el;\n\n // Return the rendered object (with a reference to all the web components):\n return view;\n },\n\n /**\n * Replaces a component with another component having the same tag.\n *\n * @method (arg1, arg2)\n * @public\n * @param {Object} the view object,\n * @param {Object} the new component ({ '
': 'new class' }),\n * @returns {} -,\n * @since 0.0.0\n */\n replace(view, component) {\n let id\n , type\n ;\n\n // Check that view is an object with, at least, the properties cList and el:\n if (Object.prototype.toString.call(view) !== '[object Object]' || !view.cList || !view.el) {\n return;\n }\n\n // Check that component is an object:\n if (Object.prototype.toString.call(component) !== '[object Object]') {\n return;\n }\n\n // Process the new component:\n const newctag = Object.keys(component)[0];\n const newcname = newctag.replace(/[^a-zA-z0-9]/g, '');\n const newc = new component[newctag]();\n\n // Check if a component with the same name already exists in the view:\n const path = explore(view, newctag);\n if (path) {\n // Get its id and remove it:\n if (path[newcname]) {\n id = path[newcname].id;\n path[newcname] = null;\n type = 1;\n } else {\n id = path.components[newcname].id;\n path.components[newcname] = null;\n type = 2;\n }\n path.cList[newctag] = null;\n\n // Get its id and clear it:\n const wrapper = Vizu.vdom\n ? Vizu.vdom.window.document.createElement('div')\n : document.createElement('div');\n\n const oldNode = Vizu.vdom\n ? Vizu.vdom.window.document.getElementById(id)\n : document.getElementById(id);\n\n wrapper.innerHTML = newc.rendered;\n oldNode.parentNode.replaceChild(wrapper.firstChild, oldNode);\n\n // Attach the new node to view:\n if (type === 1) {\n path[newcname] = newc;\n } else {\n path.components[newcname] = newc;\n }\n path.cList[newctag] = component[newctag];\n }\n },\n\n /**\n * Extends the class Component.\n *\n * @method (arg1)\n * @public\n * @param {Object} the methods to add to Component,\n * @returns {Object} returns the extended class component,\n * @since 0.0.3\n */\n createClass(methods) {\n // Check that methods is an object:\n if (Object.prototype.toString.call(methods) !== '[object Object]') {\n return null;\n }\n\n // Extract keys:\n const keys = Object.keys(methods);\n const o = [];\n for (let i = 0; i < keys.length; i++) {\n o.push({\n key: keys[i],\n value: methods[keys[i]],\n });\n }\n\n return _subClass(Component, o);\n },\n};\n\nexport default Vizu;\n"],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJpbmRleC5qcyIsInNyYy9jb21wb25lbnQuanMiLCJzcmMvdml6dS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztBQ0FBOzs7O0FBQ0E7Ozs7OztrQkFFZSxFQUFFLDhCQUFGLEVBQWEsb0JBQWIsRTs7Ozs7Ozs7OztxakJDSGY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7OztBQUNBOzs7Ozs7OztBQUVBOztBQUVBOzs7QUFHQTs7O0FBR0E7O0FBRUE7Ozs7O0lBS00sUztBQUNOOzs7Ozs7O0FBT0UsdUJBQWM7QUFBQTs7QUFDWjtBQUNBLFNBQUssRUFBTCxTQUFjLEtBQUssTUFBTCxHQUFjLFFBQWQsQ0FBdUIsRUFBdkIsRUFBMkIsTUFBM0IsQ0FBa0MsQ0FBbEMsRUFBcUMsQ0FBckMsQ0FBZDtBQUNBLFNBQUssS0FBTCxHQUFhLElBQWI7QUFDQSxTQUFLLFVBQUwsR0FBa0IsSUFBbEI7QUFDQSxTQUFLLEtBQUwsR0FBYSxFQUFiO0FBQ0EsU0FBSyxLQUFMLENBQVcsT0FBWCxHQUFxQixFQUFyQjtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7O3NDQVNrQjtBQUNoQjtBQUNBLFdBQUssS0FBTCxHQUFhLEVBQWI7QUFDQSxXQUFLLEtBQUwsQ0FBVyxPQUFYLEdBQXFCLEVBQXJCO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7c0JBVUUsRSxFQUFJO0FBQ0osVUFBTSxPQUFPLElBQWI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQSxVQUFNLGFBQWEsU0FBYixVQUFhLEdBQVc7QUFDNUIsWUFBSSxFQUFKLEVBQVE7QUFDTjtBQUNBLGlCQUFPLGVBQUssSUFBTCxHQUNILGVBQUssSUFBTCxDQUFVLE1BQVYsQ0FBaUIsUUFBakIsQ0FBMEIsYUFBMUIsT0FBNEMsS0FBSyxFQUFqRCxFQUF1RCxhQUF2RCxDQUFxRSxFQUFyRTtBQUNGO0FBRkssWUFHSCxTQUFTLGFBQVQsT0FBMkIsS0FBSyxFQUFo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Q0Q7QUFyS1UsQ0FBYjs7a0JBd0tlLEkiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiaW1wb3J0IENvbXBvbmVudCBmcm9tICcuL3NyYy9jb21wb25lbnQnO1xuaW1wb3J0IFZpenUgZnJvbSAnLi9zcmMvdml6dSc7XG5cbmV4cG9ydCBkZWZhdWx0IHsgQ29tcG9uZW50LCBWaXp1IH07XG4iLCIvKiBnbG9iYWwgZG9jdW1lbnQgKi9cbi8qIGVzbGludCBpbmRlbnQ6IFtcImVycm9yXCIsIDIsIHsgXCJWYXJpYWJsZURlY2xhcmF0b3JcIjogeyBcInZhclwiOiAxLCBcImxldFwiOiAxLCBcImNvbnN0XCI6IDIgfSB9XSAqL1xuLyogZXNsaW50IG9uZS12YXI6IDAgKi9cbi8vIC0tIFZlbmRvciBtb2R1bGVzXG5cbi8vIC0tIExvY2FsIG1vZHVsZXNcbmltcG9ydCBWaXp1IGZyb20gJy4vdml6dSc7XG5cbi8vIC0tIEdsb2JhbCBjb25zdGFudHMgKGluIHRoZSBzY29wZSBvZiB0aGlzIG1vZHVsZSlcblxuLy8gLS0gR2xvYmFsIHZhcmlhYmxlcyAoaW4gdGhlIHNjb3BlIG9mIHRoaXMgbW9kdWxlKVxuXG5cbi8vIC0tIFByaXZhdGUgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuLy8gLS0gUHVibGljIE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4qIFRoaXMgY2xhc3MgZGVmaW5lcyB0aGUgd2ViIGNvbXBvbmVudC5cbipcbiogQG5hbWVzcGFjZSB2aXp1XG4qL1xuY2xhc3MgQ29tcG9uZW50IHtcbi8qKlxuICogQ3JlYXRlcyBhbiB1bmlxdWUgSUQgZm9yIHRoaXMgY29tcG9uZW50LlxuICpcbiAqIEBjb25zdHJ1Y3RvciAoKVxuICogQHB1YmxpY1xuICogQHBhcmFtIHt9ICAgICAgICAgIC0sXG4gKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gQ3JlYXRlIGFuIHVuaXF1ZSBpZCBmb3IgdGhpcyBjb21wb25lbnQ6XG4gICAgdGhpcy5pZCA9IGBpJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgNyl9YDtcbiAgICB0aGlzLmNMaXN0ID0gbnVsbDtcbiAgICB0aGlzLmNvbXBvbmVudHMgPSBudWxsO1xuICAgIHRoaXMucHJvcHMgPSB7fTtcbiAgICB0aGlzLnByb3BzLm9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlcyB0aGUgdmFyaWFibGVzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW5kZXJlZC5cbiAgICpcbiAgICogQG1ldGhvZCAoKVxuICAgKiBAcHVibGljXG4gICAqIEBwYXJhbSB7fSAgICAgICAgLSxcbiAgICogQHJldHVybnMge30gICAgICAtLFxuICAgKiBAc2luY2UgMC4wLjBcbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICAvLyBUbyBhdm9pZCBlc2xpbnQgZXJyb3IhXG4gICAgdGhpcy5wcm9wcyA9IHt9O1xuICAgIHRoaXMucHJvcHMub3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIENTUyBzZWxlY3RvcihzKS5cbiAgICpcbiAgICogQG1ldGhvZCAoYXJnMSlcbiAgICogQHB1YmxpY1xuICAgKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIENTUyBzZWxlY3RvcihzKSxcbiAgICogQHJldHVybnMge09iamVjdH0gIHJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBtYXRjaGVzIGEgc3BlY2lmaWVkXG4gICAqICAgICAgICAgICAgICAgICAgICBDU1Mgc2VsZWN0b3IocyksXG4gICAqIEBzaW5jZSAwLjAuMFxuICAgKi9cbiAgJChlbCkge1xuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgQ1NTIHNlbGVjdG9yKHMpLlxuICAgICAqXG4gICAgICogQG1ldGhvZCAoYXJnMSlcbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtTdHJpbmd9ICAgIHRoZSBDU1Mgc2VsZWN0b3IocyksXG4gICAgICogQHJldHVybnMge09iamVjdH0gIHJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBtYXRjaGVzIGEgc3BlY2lmaWVkXG4gICAgICogICAgICAgICAgICAgICAgICAgIENTUyBzZWxlY3RvcihzKSxcbiAgICAgKiBAc2luY2UgMC4wLjBcbiAgICAgKi9cbiAgICBjb25zdCBnZXRFbGVtZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgLy8gUmV0dXJucyB0aGUgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RvcihzKTpcbiAgICAgICAgcmV0dXJuIFZpenUudmRvbVxuICAgICAgICAgID8gVml6dS52ZG9tLndpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0aGF0LmlkfWApLnF1ZXJ5U2VsZWN0b3IoZWwpXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RoYXQuaWR9YCkucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgICB9XG4gICAgICAvLyBSZXR1cm4gdGhlIGVudGlyZSAnd2ViIGNvbXBvbmVudCc6XG4gICAgICByZXR1cm4gVml6dS52ZG9tXG4gICAgICAgID8gVml6dS52ZG9tLndpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0aGF0LmlkfWApXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhhdC5pZH1gKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgRE9NVG9rZW5MaXN0IGNvbGxlY3Rpb24gb2YgdGhlIGNsYXNzIGF0dHJpYnV0ZXMgb2YgdGhlIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAbWV0aG9kICgpXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7fSAgICAgICAgICAtLFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9ICByZXR1cm5zIHRoZSBET01Ub2tlbkxpc3Qgb2YgdGhlIGVsZW1lbnQsXG4gICAgICogQHNpbmNlIDAuMC4wXG4gICAgICovXG4gICAgY29uc3QgZ2V0Q2xhc3NMaXN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0RWxlbWVudCgpLmNsYXNzTGlzdDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGNsYXNzIG5hbWUgdG8gdGhlIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAbWV0aG9kIChhcmcxKVxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIGNsYXNzIG5hbWUgdG8gYWRkLFxuICAgICAqIEByZXR1cm5zIHt9ICAgICAgICAtLFxuICAgICAqIEBzaW5jZSAwLjAuMFxuICAgICAqL1xuICAgIGNvbnN0IGFkZENsYXNzID0gZnVuY3Rpb24oY2xhc3NOYW1lKSB7XG4gICAgICBnZXRFbGVtZW50KCkuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgY2xhc3MgbmFtZSB0byB0aGUgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBtZXRob2QgKGFyZzEpXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7U3RyaW5nfSAgICB0aGUgY2xhc3MgbmFtZSB0byByZW1vdmUsXG4gICAgICogQHJldHVybnMge30gICAgICAgIC0sXG4gICAgICogQHNpbmNlIDAuMC4wXG4gICAgICovXG4gICAgY29uc3QgcmVtb3ZlQ2xhc3MgPSBmdW5jdGlvbihjbGFzc05hbWUpIHtcbiAgICAgIGdldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgYSBjbGFzcyBuYW1lIGZvciB0aGUgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBtZXRob2QgKGFyZzEpXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7U3RyaW5nfSAgICB0aGUgY2xhc3MgbmFtZSB0byBhZGQvcmVtb3ZlLFxuICAgICAqIEByZXR1cm5zIHt9ICAgICAgICAtLFxuICAgICAqIEBzaW5jZSAwLjAuMFxuICAgICAqL1xuICAgIGNvbnN0IHRvZ2dsZUNsYXNzID0gZnVuY3Rpb24oY2xhc3NOYW1lKSB7XG4gICAgICBnZXRFbGVtZW50KCkuY2xhc3NMaXN0LnRvZ2dsZShjbGFzc05hbWUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIEhUTUwgY29udGVudHMgb2YgdGhlIGVsZW1lbnQsXG4gICAgICpcbiAgICAgKiBAbWV0aG9kIChhcmcxKVxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIGh0bWwgY29udGVudHMgdG8gYWRkLFxuICAgICAqIEByZXR1cm5zIHt9ICAgICAgICAtLFxuICAgICAqIEBzaW5jZSAwLjAuMFxuICAgICAqL1xuICAgIGNvbnN0IGh0bWwgPSBmdW5jdGlvbihodG1sc3RyaW5nKSB7XG4gICAgICBpZiAoaHRtbHN0cmluZykge1xuICAgICAgICBnZXRFbGVtZW50KCkuaW5uZXJIVE1MID0gaHRtbHN0cmluZztcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRFbGVtZW50KCkuaW5uZXJIVE1MO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIHRleHQgY29udGVudHMgb2YgdGhlIGVsZW1lbnQsXG4gICAgICpcbiAgICAgKiBAbWV0aG9kIChhcmcxKVxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIHRleHQgY29udGVudHMgdG8gYWRkLFxuICAgICAqIEByZXR1cm5zIHt9ICAgICAgICAtLFxuICAgICAqIEBzaW5jZSAwLjAuMFxuICAgICAqL1xuICAgIGNvbnN0IHRleHQgPSBmdW5jdGlvbih0ZXh0ZSkge1xuICAgICAgaWYgKHRleHRlKSB7XG4gICAgICAgIGdldEVsZW1lbnQoKS50ZXh0Q29udGVudCA9IHRleHRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdldEVsZW1lbnQoKS50ZXh0Q29udGVudDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHRoZSBzdHlsZSBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQsXG4gICAgICpcbiAgICAgKiBAbWV0aG9kIChhcmcxLCBhcmcyKVxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIHN0eWxlIGF0dHJpYnV0ZSxcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIHN0eWxlIGF0dHJpYnV0ZSB2YWx1ZSxcbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSAgdW5kZWZpbmVkIG9yIHRoZSBzdHlsZSBhdHRyaWJ1dGUgdmFsdWUsXG4gICAgICogQHNpbmNlIDAuMC4zXG4gICAgICovXG4gICAgY29uc3QgY3NzID0gZnVuY3Rpb24oc3R5bGVBdHRyLCB2YWx1ZSkge1xuICAgICAgY29uc3QgYXJyID0gdHlwZW9mIHN0eWxlQXR0ciA9PT0gJ3N0cmluZycgPyBzdHlsZUF0dHIuc3BsaXQoJy0nKSA6IFtdO1xuICAgICAgbGV0IGF0dHIgPSAnJztcblxuICAgICAgLy8gQ29udmVydCBzdHlsZSBhdHRyaWJ1dGUgbmFtZSB3aXRoICctJyAoZXguOiAnZm9udC1zaXplJyB0byAnZm9udFNpemUnKTpcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgYXR0ciArPSBhcnJbaV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXR0ciArPSBhcnJbaV0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBhcnJbaV0uc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAvLyBHZXQgYXR0cmlidXRlOlxuICAgICAgICByZXR1cm4gZ2V0RWxlbWVudCgpLnN0eWxlW2F0dHJdO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgYXR0cmlidXRlOlxuICAgICAgZ2V0RWxlbWVudCgpLnN0eWxlW2F0dHJdID0gdmFsdWU7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCB0aGUgY2hpbGRzIG9mIHRoZSBjdXJyZW50IG5vZGUuXG4gICAgICpcbiAgICAgKiBAbWV0aG9kICgpXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7fSAgICAgICAgICAtLFxuICAgICAqIEByZXR1cm5zIHt9ICAgICAgICAtLFxuICAgICAqIEBzaW5jZSAwLjAuNFxuICAgICAqL1xuICAgIGNvbnN0IGVtcHR5ID0gZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBub2RlID0gZ2V0RWxlbWVudCgpO1xuICAgICAgd2hpbGUgKG5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUuZmlyc3RDaGlsZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFwcGVuZHMgYW4gSFRNTCBzdHJpbmcgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIEBtZXRob2QgKGFyZzEpXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7U3RyaW5nfSAgICBhbiBIVE1MIHN0cmluZyxcbiAgICAgKiBAcmV0dXJucyB7fSAgICAgICAgLSxcbiAgICAgKiBAc2luY2UgMC4wLjRcbiAgICAgKi9cbiAgICBjb25zdCBhcHBlbmQgPSBmdW5jdGlvbihodG1sc3RyaW5nKSB7XG4gICAgICBnZXRFbGVtZW50KCkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBodG1sc3RyaW5nKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBnZXRFbGVtZW50KCkgPyBnZXRFbGVtZW50KCkuaWQgOiBudWxsLFxuICAgICAgZ2V0RWxlbWVudCxcbiAgICAgIGdldENsYXNzTGlzdCxcbiAgICAgIGFkZENsYXNzLFxuICAgICAgcmVtb3ZlQ2xhc3MsXG4gICAgICB0b2dnbGVDbGFzcyxcbiAgICAgIGh0bWwsXG4gICAgICB0ZXh0LFxuICAgICAgY3NzLFxuICAgICAgZW1wdHksXG4gICAgICBhcHBlbmQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZWZpbmVkIHdlYiBjb21wb25lbnQuXG4gICAqXG4gICAqIEBtZXRob2QgKClcbiAgICogQHB1YmxpY1xuICAgKiBAcGFyYW0ge30gICAgICAgICAgLSxcbiAgICogQHJldHVybnMge1N0cmluZ30gIHJldHVybnMgdGhlIHdlYiBjb21wb25lbnQsXG4gICAqIEBzaW5jZSAwLjAuMFxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBgPGRpdj4ke3RoaXMuaWR9PC9kaXY+YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgdGhlIHdlYiBjb21wb25lbnQgdG8gY29udmVydCBjaGlsZChzKSB0byBwbGFpbiBIVE1MLlxuICAgKlxuICAgKiBAbWV0aG9kICgpXG4gICAqIEBwdWJsaWNcbiAgICogQHBhcmFtIHt9ICAgICAgICAgIC0sXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9ICByZXR1cm5zIHRoZSB3ZWIgY29tcG9uZW50LFxuICAgKiBAc2luY2UgMC4wLjBcbiAgICovXG4gIGdldCByZW5kZXJlZCgpIHtcbiAgICBsZXQgdDtcbiAgICAvLyBJbml0aWFsaXplczpcbiAgICB0aGlzLmdldEluaXRpYWxTdGF0ZSgpO1xuICAgIC8vIEFkZCBhbiB1bmlxdWUgSUQgdG8gdGhpcyBjb21wb25lbnQ6XG4gICAgLy8gbGV0IHQgPSB0aGlzLnJlbmRlcigpLnJlcGxhY2UoLzxkaXY+LywgYDxkaXYgaWQ9XCIke3RoaXMuaWR9XCI+YCk7XG4gICAgY29uc3QgY28gPSB0aGlzLnJlbmRlcigpO1xuICAgIGlmIChjby5tYXRjaCgvXlxccyo8ZGl2LykpIHtcbiAgICAgIHQgPSBjby5yZXBsYWNlKC9eXFxzKjxkaXYvLCBgPGRpdiBpZD0gXCIke3RoaXMuaWR9XCJgKTtcbiAgICB9IGVsc2UgaWYgKGNvLm1hdGNoKC9eXFxzKjxoZWFkZXIvKSkge1xuICAgICAgdCA9IGNvLnJlcGxhY2UoL15cXHMqPGhlYWRlci8sIGA8aGVhZGVyIGlkPSBcIiR7dGhpcy5pZH1cImApO1xuICAgIH0gZWxzZSBpZiAoY28ubWF0Y2goL15cXHMqPGZvb3Rlci8pKSB7XG4gICAgICB0ID0gY28ucmVwbGFjZSgvXlxccyo8Zm9vdGVyLywgYDxmb290ZXIgaWQ9IFwiJHt0aGlzLmlkfVwiYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQgPSBjbztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jTGlzdCkge1xuICAgICAgLy8gVGhpcyBjb21wb25lbnQgaW5jbHVkZXMgY29tcG9uZW50cywgcmVuZGVyIHRoZW06XG4gICAgICB0aGlzLmNvbXBvbmVudHMgPSB7fTtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmNMaXN0KTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjID0gbmV3IHRoaXMuY0xpc3Rba2V5c1tpXV0oKTtcbiAgICAgICAgdCA9IHQucmVwbGFjZShrZXlzW2ldLCBjLnJlbmRlcmVkKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzW2tleXNbaV0ucmVwbGFjZSgvW15hLXpBLXowLTldL2csICcnKV0gPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZXR1cm4gdGhlIHJlbmRlcmVkIHdlYiBjb21wb25lbnQ6XG4gICAgcmV0dXJuIHQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50O1xuIiwiLyogZ2xvYmFsIGRvY3VtZW50ICovXG4vKiBlc2xpbnQgaW5kZW50OiBbXCJlcnJvclwiLCAyLCB7IFwiVmFyaWFibGVEZWNsYXJhdG9yXCI6IHsgXCJ2YXJcIjogMSwgXCJsZXRcIjogMSwgXCJjb25zdFwiOiAyIH0gfV0gKi9cbi8qIGVzbGludCBvbmUtdmFyOiAwLCBuby1wYXJhbS1yZWFzc2lnbjogMCwgbWF4LWxlbjogWzEsIDEzMF0sXG4gIG5vLXVudXNlZC1leHByZXNzaW9uczogW1wiZXJyb3JcIiwgeyBcImFsbG93VGVybmFyeVwiOiB0cnVlIH1dLCBuby11bmRlcnNjb3JlLWRhbmdsZTogMCxcbiAgbm8tcHJvdG86IDEsIHByZWZlci1yZXN0LXBhcmFtczogMSAqL1xuXG4vLyAtLSBWZW5kb3IgbW9kdWxlc1xuXG4vLyAtLSBMb2NhbCBtb2R1bGVzXG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50JztcblxuLy8gLS0gR2xvYmFsIGNvbnN0YW50cyAoaW4gdGhlIHNjb3BlIG9mIHRoaXMgbW9kdWxlKVxuXG4vLyAtLSBHbG9iYWwgdmFyaWFibGVzIChpbiB0aGUgc2NvcGUgb2YgdGhpcyBtb2R1bGUpXG5cblxuLy8gLS0gUHJpdmF0ZSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBtYXRjaGluZyBXZWIgQ29tcG9uZW50LlxuICpcbiAqIEBmdW5jdGlvbiAoKVxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSAgICB0aGUgdmlldyBvYmplY3QsXG4gKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIHRhZyBkZWZpbmluZyBhIFdlYiBDb21wb25lbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9ICB0aGUgcGF0aCBvZiB0aGUgbWF0Y2hpbmcgV2ViIENvbXBvbmVudCxcbiAqL1xuY29uc3QgZXhwbG9yZSA9IGZ1bmN0aW9uKHZpZXcsIHRhZykge1xuICBpZiAodmlldy5jTGlzdCAmJiB2aWV3LmNMaXN0W3RhZ10pIHtcbiAgICByZXR1cm4gdmlldztcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmlldyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh2aWV3W2tleXNbaV1dLmNMaXN0KSB7XG4gICAgICBpZiAodmlld1trZXlzW2ldXS5jTGlzdFt0YWddKSB7XG4gICAgICAgIHJldHVybiB2aWV3W2tleXNbaV1dO1xuICAgICAgfVxuICAgICAgaWYgKHZpZXdba2V5c1tpXV0uY29tcG9uZW50cykge1xuICAgICAgICByZXR1cm4gZXhwbG9yZSh2aWV3W2tleXNbaV1dLmNvbXBvbmVudHMsIHRhZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuXG4vKipcbiAqIENvZGUgcmV1c2VkIGZyb20gQmFiZWxcbiAqL1xuY29uc3QgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikge1xuICAgICAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIHtcbiAgICAgIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICB9XG4gICAgaWYgKHN0YXRpY1Byb3BzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCkpO1xuXG4vKipcbiAqIENvZGUgcmV1c2VkIGZyb20gQmFiZWxcbiAqL1xuY29uc3QgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gPSBmdW5jdGlvbihzZWxmLCBjYWxsKSB7XG4gIGlmICghc2VsZikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG4gIHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGNhbGwgPT09ICdmdW5jdGlvbicpID8gY2FsbCA6IHNlbGY7XG59O1xuXG4vKipcbiAqIENvZGUgcmV1c2VkIGZyb20gQmFiZWxcbiAqL1xuY29uc3QgX2luaGVyaXRzID0gZnVuY3Rpb24oc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJHt0eXBlb2Ygc3VwZXJDbGFzc31gKTtcbiAgfVxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9IH0pO1xuXG4gIGlmIChzdXBlckNsYXNzKSB7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7XG4gIH1cbn07XG5cbi8qKlxuICogQ29kZSByZXVzZWQgZnJvbSBCYWJlbFxuICovXG5jb25zdCBfY2xhc3NDYWxsQ2hlY2sgPSBmdW5jdGlvbihpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpO1xuICB9XG59O1xuXG4vKipcbiAqIENvZGUgcmV1c2VkIGZyb20gQmFiZWxcbiAqL1xuY29uc3QgX3N1YkNsYXNzID0gZnVuY3Rpb24oU3VwZXJDbGFzcywgbSkge1xuICBmdW5jdGlvbiBTdWJDbGFzcygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3ViQ2xhc3MpO1xuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoU3ViQ2xhc3MuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihTdWJDbGFzcykpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG4gIF9pbmhlcml0cyhTdWJDbGFzcywgU3VwZXJDbGFzcyk7XG5cbiAgX2NyZWF0ZUNsYXNzKFN1YkNsYXNzLCBtKTtcblxuICByZXR1cm4gU3ViQ2xhc3M7XG59O1xuXG4vLyAtLSBQdWJsaWMgTWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiogVGhpcyBsaWJyYXJ5IHJlbmRlcnMgdGhlIFZpZXcgaW4gdGhlIERPTS5cbipcbiogQG5hbWVzcGFjZSBWaXp1XG4qL1xuY29uc3QgVml6dSA9IHtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGlzIGxpYnJhcnkuXG4gICAqXG4gICAqIEBtZXRob2QgKClcbiAgICogQHB1YmxpY1xuICAgKiBAcGFyYW0ge30gICAgICAgICAgLSxcbiAgICogQHJldHVybnMge1N0cmluZ30gIHJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhpcyBsaWJyYXJ5LFxuICAgKi9cbiAgdmVyc2lvbigpIHtcbiAgICByZXR1cm4gJ3t7bGliOnZlcnNpb259fSc7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIFZpZXcgaW4gdGhlIERPTS5cbiAgICpcbiAgICogQG1ldGhvZCAoYXJnMSwgYXJnMiwgYXJnMylcbiAgICogQHB1YmxpY1xuICAgKiBAcGFyYW0ge1N0cmluZ30gICAgdGhlIGFnZ3JlZ2F0ZWQgd2ViIGNvbXBvbmVudHMsXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAgICB0aGUgbGlzdCBvZiB3ZWIgY29tcG9uZW50cyBhbmQgdGhlaXIgcmVmZXJlbmNlLFxuICAgKiBAcGFyYW0ge09iamVjdH0gICAgdGhlIERPTSBlbGVtZW50IHdoZXJlIHRoZSB2aWV3ICh0aGUgYWdncmVnYXRlIG9mIHdlYiBjb21wb25lbnRzKSBpcyBpbnNlcnRlZCxcbiAgICogQHJldHVybnMge09iamVjdH0gIHJldHVybnMgdGhlIHZpZXcgb2JqZWN0LFxuICAgKiBAc2luY2UgMC4wLjBcbiAgICovXG4gIHJlbmRlcih0ZW1wbGF0ZSwgY0xpc3QsIGVsKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjTGlzdCkgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gT2JqZWN0LmtleXMoY0xpc3QpIDogW11cbiAgICAgICAgLCB2aWV3ID0ge31cbiAgICAgICAgO1xuICAgIGxldCB0O1xuXG4gICAgLy8gUmV0dXJuIG51bGwgaWYgdGhlIHRlbXBsYXRlIGlzIG5vdCBhIHN0cmluZzpcbiAgICBpZiAodHlwZW9mIHRlbXBsYXRlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gY29tcG9uZW50cywgcmVuZGVyIHRoZSB0ZW1wbGF0ZSBhcyBpczpcbiAgICBpZiAoIWNMaXN0KSB7XG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gdGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBWaXp1LnZkb21cbiAgICAgICAgICA/IChWaXp1LnZkb20ud2luZG93LmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MICs9IHRlbXBsYXRlKVxuICAgICAgICAgIDogKGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MICs9IHRlbXBsYXRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFRoaXMgdmlldyBpbmNsdWRlcyBjb21wb25lbnRzLCByZW5kZXIgdGhlbTpcbiAgICB0ID0gdGVtcGxhdGU7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gbmV3IGNMaXN0W2tleXNbaV1dKCk7XG4gICAgICB0ID0gdC5yZXBsYWNlKGtleXNbaV0sIGMucmVuZGVyZWQpO1xuICAgICAgdmlld1trZXlzW2ldLnJlcGxhY2UoL1teYS16QS16MC05XS9nLCAnJyldID0gYztcbiAgICB9XG4gICAgLy8gQXR0YWNoIGNMaXN0OlxuICAgIHZpZXcuY0xpc3QgPSBrZXlzLmxlbmd0aCA+IDAgPyBjTGlzdCA6IG51bGw7XG5cbiAgICAvLyBGaWxsIHRoZSBET006XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbC5pbm5lckhUTUwgPSB0O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbCA9IFZpenUudmRvbSA/IFZpenUudmRvbS53aW5kb3cuZG9jdW1lbnQuYm9keSA6IGRvY3VtZW50LmJvZHk7XG4gICAgICBlbC5pbm5lckhUTUwgPSArdDtcbiAgICB9XG4gICAgLy8gQXR0YWNoIHBhcmVudCBlbGVtZW50OlxuICAgIHZpZXcuZWwgPSBlbDtcblxuICAgIC8vIFJldHVybiB0aGUgcmVuZGVyZWQgb2JqZWN0ICh3aXRoIGEgcmVmZXJlbmNlIHRvIGFsbCB0aGUgd2ViIGNvbXBvbmVudHMpOlxuICAgIHJldHVybiB2aWV3O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIGNvbXBvbmVudCB3aXRoIGFub3RoZXIgY29tcG9uZW50IGhhdmluZyB0aGUgc2FtZSB0YWcuXG4gICAqXG4gICAqIEBtZXRob2QgKGFyZzEsIGFyZzIpXG4gICAqIEBwdWJsaWNcbiAgICogQHBhcmFtIHtPYmplY3R9ICAgIHRoZSB2aWV3IG9iamVjdCxcbiAgICogQHBhcmFtIHtPYmplY3R9ICAgIHRoZSBuZXcgY29tcG9uZW50ICh7ICc8QWFhIC8+JzogJ25ldyBjbGFzcycgfSksXG4gICAqIEByZXR1cm5zIHt9ICAgICAgICAtLFxuICAgKiBAc2luY2UgMC4wLjBcbiAgICovXG4gIHJlcGxhY2UodmlldywgY29tcG9uZW50KSB7XG4gICAgbGV0IGlkXG4gICAgICAsIHR5cGVcbiAgICAgIDtcblxuICAgIC8vIENoZWNrIHRoYXQgdmlldyBpcyBhbiBvYmplY3Qgd2l0aCwgYXQgbGVhc3QsIHRoZSBwcm9wZXJ0aWVzIGNMaXN0IGFuZCBlbDpcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZpZXcpICE9PSAnW29iamVjdCBPYmplY3RdJyB8fCAhdmlldy5jTGlzdCB8fCAhdmlldy5lbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIHRoYXQgY29tcG9uZW50IGlzIGFuIG9iamVjdDpcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGNvbXBvbmVudCkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyB0aGUgbmV3IGNvbXBvbmVudDpcbiAgICBjb25zdCBuZXdjdGFnID0gT2JqZWN0LmtleXMoY29tcG9uZW50KVswXTtcbiAgICBjb25zdCBuZXdjbmFtZSA9IG5ld2N0YWcucmVwbGFjZSgvW15hLXpBLXowLTldL2csICcnKTtcbiAgICBjb25zdCBuZXdjID0gbmV3IGNvbXBvbmVudFtuZXdjdGFnXSgpO1xuXG4gICAgLy8gQ2hlY2sgaWYgYSBjb21wb25lbnQgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzIGluIHRoZSB2aWV3OlxuICAgIGNvbnN0IHBhdGggPSBleHBsb3JlKHZpZXcsIG5ld2N0YWcpO1xuICAgIGlmIChwYXRoKSB7XG4gICAgICAvLyBHZXQgaXRzIGlkIGFuZCByZW1vdmUgaXQ6XG4gICAgICBpZiAocGF0aFtuZXdjbmFtZV0pIHtcbiAgICAgICAgaWQgPSBwYXRoW25ld2NuYW1lXS5pZDtcbiAgICAgICAgcGF0aFtuZXdjbmFtZV0gPSBudWxsO1xuICAgICAgICB0eXBlID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlkID0gcGF0aC5jb21wb25lbnRzW25ld2NuYW1lXS5pZDtcbiAgICAgICAgcGF0aC5jb21wb25lbnRzW25ld2NuYW1lXSA9IG51bGw7XG4gICAgICAgIHR5cGUgPSAyO1xuICAgICAgfVxuICAgICAgcGF0aC5jTGlzdFtuZXdjdGFnXSA9IG51bGw7XG5cbiAgICAgIC8vIEdldCBpdHMgaWQgYW5kIGNsZWFyIGl0OlxuICAgICAgY29uc3Qgd3JhcHBlciA9IFZpenUudmRvbVxuICAgICAgICA/IFZpenUudmRvbS53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICAgICAgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgY29uc3Qgb2xkTm9kZSA9IFZpenUudmRvbVxuICAgICAgICA/IFZpenUudmRvbS53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpXG4gICAgICAgIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuXG4gICAgICB3cmFwcGVyLmlubmVySFRNTCA9IG5ld2MucmVuZGVyZWQ7XG4gICAgICBvbGROb2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdyYXBwZXIuZmlyc3RDaGlsZCwgb2xkTm9kZSk7XG5cbiAgICAgIC8vIEF0dGFjaCB0aGUgbmV3IG5vZGUgdG8gdmlldzpcbiAgICAgIGlmICh0eXBlID09PSAxKSB7XG4gICAgICAgIHBhdGhbbmV3Y25hbWVdID0gbmV3YztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdGguY29tcG9uZW50c1tuZXdjbmFtZV0gPSBuZXdjO1xuICAgICAgfVxuICAgICAgcGF0aC5jTGlzdFtuZXdjdGFnXSA9IGNvbXBvbmVudFtuZXdjdGFnXTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEV4dGVuZHMgdGhlIGNsYXNzIENvbXBvbmVudC5cbiAgICpcbiAgICogQG1ldGhvZCAoYXJnMSlcbiAgICogQHB1YmxpY1xuICAgKiBAcGFyYW0ge09iamVjdH0gICAgdGhlIG1ldGhvZHMgdG8gYWRkIHRvIENvbXBvbmVudCxcbiAgICogQHJldHVybnMge09iamVjdH0gIHJldHVybnMgdGhlIGV4dGVuZGVkIGNsYXNzIGNvbXBvbmVudCxcbiAgICogQHNpbmNlIDAuMC4zXG4gICAqL1xuICBjcmVhdGVDbGFzcyhtZXRob2RzKSB7XG4gICAgLy8gQ2hlY2sgdGhhdCBtZXRob2RzIGlzIGFuIG9iamVjdDpcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1ldGhvZHMpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBrZXlzOlxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhtZXRob2RzKTtcbiAgICBjb25zdCBvID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvLnB1c2goe1xuICAgICAgICBrZXk6IGtleXNbaV0sXG4gICAgICAgIHZhbHVlOiBtZXRob2RzW2tleXNbaV1dLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9zdWJDbGFzcyhDb21wb25lbnQsIG8pO1xuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVml6dTtcbiJdfQ=="}
\ No newline at end of file
+{"version":3,"sources":["node_modules/browser-pack/_prelude.js","index.js","src/component.js","src/vizu.js"],"names":[],"mappings":"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","file":"vizu.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o
${this.id}`;\n }\n\n /**\n * Processes the web component to convert child(s) to plain HTML.\n *\n * @method ()\n * @private\n * @param {} -,\n * @returns {String} returns the web component,\n * @since 0.0.0\n */\n get rendered() {\n let t;\n // Initializes:\n this.getInitialState();\n // Add an unique ID to this component:\n // let t = this.render().replace(/