diff --git a/URL.txt b/URL.txt new file mode 100644 index 0000000..ea98ac6 --- /dev/null +++ b/URL.txt @@ -0,0 +1,12 @@ +------------------------------------------- +JSDoc 3 is an API documentation generator for JavaScript +https://jsdoc.app/ +------------------------------------------- +Building customControllers + +Open "Node.js command prompt" + +d: +cd "D:\My documents\MyProjects\webgl\three.js\GitHub\customController\customController" +npm install +npm run build diff --git a/build/customcontrollers.js b/build/customcontrollers.js index 297b9f4..037671a 100644 --- a/build/customcontrollers.js +++ b/build/customcontrollers.js @@ -1475,38 +1475,6 @@ function hueGradient(elem) { elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; } -var CustomController = function (_Controller) { - inherits$1(CustomController, _Controller); - function CustomController(init) { - classCallCheck$1(this, CustomController); - var _this = possibleConstructorReturn$1(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, {})); - init(_this); - _this.custom = true; - return _this; - } - return CustomController; -}(Controller); -var css = { - load: function load(url, indoc) { - var doc = indoc || document; - var link = doc.createElement('link'); - link.type = 'text/css'; - link.rel = 'stylesheet'; - link.href = url; - doc.getElementsByTagName('head')[0].appendChild(link); - }, - inject: function inject(cssContent, indoc) { - var doc = indoc || document; - var injected = document.createElement('style'); - injected.type = 'text/css'; - injected.innerHTML = cssContent; - var head = doc.getElementsByTagName('head')[0]; - try { - head.appendChild(injected); - } catch (e) {} - } -}; -var saveDialogContents = "
\n\n Here's the new load parameter for your GUI's constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI's constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n
"; var ControllerFactory = function ControllerFactory(object, property) { var initialValue = object[property]; if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) { @@ -1535,6 +1503,40 @@ var ControllerFactory = function ControllerFactory(object, property) { } return null; }; +var CustomController = function (_Controller) { + inherits$1(CustomController, _Controller); + function CustomController(object, property) { + classCallCheck$1(this, CustomController); + var _this = possibleConstructorReturn$1(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, object, property)); + _this.arguments = { + object: object, property: property, opts: Array.prototype.slice.call(arguments, 2) + }; + if (object.property) _this.property = object.property(); + return _this; + } + return CustomController; +}(Controller); +var css = { + load: function load(url, indoc) { + var doc = indoc || document; + var link = doc.createElement('link'); + link.type = 'text/css'; + link.rel = 'stylesheet'; + link.href = url; + doc.getElementsByTagName('head')[0].appendChild(link); + }, + inject: function inject(cssContent, indoc) { + var doc = indoc || document; + var injected = document.createElement('style'); + injected.type = 'text/css'; + injected.innerHTML = cssContent; + var head = doc.getElementsByTagName('head')[0]; + try { + head.appendChild(injected); + } catch (e) {} + } +}; +var saveDialogContents = "
\n\n Here's the new load parameter for your GUI's constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI's constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n
"; function requestAnimationFrame(callback) { setTimeout(callback, 1000 / 60); } @@ -1883,7 +1885,6 @@ dom.bind(window, 'keydown', GUI._keydownHandler, false); Common.extend(GUI.prototype, { add: function add(object, property) { return _add(this, object, property, { - custom: object.custom, factoryArgs: Array.prototype.slice.call(arguments, 2) }); }, @@ -1892,11 +1893,6 @@ Common.extend(GUI.prototype, { color: true }); }, - addCustomController: function addCustomController(init, property) { - return _add(this, new dat.controllers.CustomController(init), property, { - factoryArgs: Array.prototype.slice.call(arguments, 2) - }); - }, remove: function remove(controller) { this.__ul.removeChild(controller.__li); this.__controllers.splice(this.__controllers.indexOf(controller), 1); @@ -2242,28 +2238,41 @@ function recallSavedValue(gui, controller) { } } function _add(gui, object, property, params) { - var customObject = object.custom; - if (!customObject && !params.custom && object[property] === undefined) { + var customObject; + if (object.arguments) { + customObject = object; + object = customObject.arguments.object; + property = customObject.arguments.property; + params = { + factoryArgs: customObject.arguments.opts + }; + } + if (customObject === undefined && object[property] === undefined) { throw new Error('Object "' + object + '" has no property "' + property + '"'); } var controller = void 0; if (params.color) { controller = new ColorController(object, property); - } else if (customObject && property === undefined) { - controller = object; + } else if (customObject !== undefined && typeof customObject.property === "string") { + controller = customObject; } else { - var factoryArgs = customObject ? [property].concat(params.factoryArgs) : [object, property].concat(params.factoryArgs); + var factoryArgs = [object, property].concat(params.factoryArgs); controller = ControllerFactory.apply(gui, factoryArgs); } + if (controller === null) controller = customObject; if (params.before instanceof Controller) { params.before = params.before.__li; } recallSavedValue(gui, controller); dom.addClass(controller.domElement, 'c'); - var container = document.createElement('div'); - var name = customObject ? object.domElement : document.createElement('span'); - if (!customObject) name.innerHTML = controller.property; + var name = document.createElement('span'); dom.addClass(name, 'property-name'); + if (customObject !== undefined && _typeof$1(customObject.property) === "object") { + for (var propertyName in customObject.property) { + name.appendChild(customObject.property[propertyName]); + } + } else name.innerHTML = controller.property; + var container = document.createElement('div'); container.appendChild(name); container.appendChild(controller.domElement); var li = addRow(gui, container, params.before); @@ -2456,31 +2465,49 @@ var controllers = { }; class KnobController extends controllers.CustomController { - constructor(a, b) { - super(function (controller) { - var button = document.createElement('span'); - button.innerHTML = 'Knob Controller'; - button.title = 'Please press knob'; - button.style.cursor = 'pointer'; - button.style.margin = '0px 2px'; - button.onclick = function (value) { - alert('Knob Controller ' + (knobController.a + knobController.b)); - }; - controller.domElement.appendChild(button); - }); - this.a = a; - this.b = b; - var knobController = this; + constructor(object, property, a, b) { + super(object, property); + const _this = this; + this.__input = document.createElement('input'); + this.__input.setAttribute('type', 'number'); + this.__input.style.width = '40%'; + this.updateDisplay(); + this.domElement.appendChild(this.__input); + var button = document.createElement('input'); + button.setAttribute('type', 'button'); + button.value = 'Set ' + property; + button.style.width = '50%'; + button.onclick = function (e) { + object[property] = a + b; + _this.updateDisplay(); + }; + this.domElement.appendChild(button); + } + updateDisplay() { + this.__input.value = this.getValue(); } } class PlayController extends controllers.CustomController { constructor(init) { - super(init); + super({ + playRate: 1, + property: init + }, 'playRate', 1, 25, 1); + if (this.property === undefined) console.error('init() returns ' + this.property); + } +} +class PrevAndNextController extends controllers.CustomController { + constructor(init) { + super({ + property: init + }); + if (this.property === undefined) console.error(' init() returns ' + this.property); } } exports.KnobController = KnobController; exports.PlayController = PlayController; +exports.PrevAndNextController = PrevAndNextController; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/build/customcontrollers.js.map b/build/customcontrollers.js.map index 8ee31d1..e0fd7fd 100644 --- a/build/customcontrollers.js.map +++ b/build/customcontrollers.js.map @@ -1 +1 @@ -{"version":3,"file":"customcontrollers.js","sources":["../../../dat.gui/build/dat.gui.module.js","../index.js"],"sourcesContent":["/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\nfunction ___$insertStyle(css) {\n if (!css) {\n return;\n }\n if (typeof window === 'undefined') {\n return;\n }\n\n var style = document.createElement('style');\n\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n document.head.appendChild(style);\n\n return css;\n}\n\nfunction colorToString (color, forceCSSHex) {\n var colorFormat = color.__state.conversionName.toString();\n var r = Math.round(color.r);\n var g = Math.round(color.g);\n var b = Math.round(color.b);\n var a = color.a;\n var h = Math.round(color.h);\n var s = color.s.toFixed(1);\n var v = color.v.toFixed(1);\n if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') {\n var str = color.hex.toString(16);\n while (str.length < 6) {\n str = '0' + str;\n }\n return '#' + str;\n } else if (colorFormat === 'CSS_RGB') {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else if (colorFormat === 'CSS_RGBA') {\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n } else if (colorFormat === 'HEX') {\n return '0x' + color.hex.toString(16);\n } else if (colorFormat === 'RGB_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ']';\n } else if (colorFormat === 'RGBA_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ',' + a + ']';\n } else if (colorFormat === 'RGB_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + '}';\n } else if (colorFormat === 'RGBA_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}';\n } else if (colorFormat === 'HSV_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + '}';\n } else if (colorFormat === 'HSVA_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}';\n }\n return 'unknown format';\n}\n\nvar ARR_EACH = Array.prototype.forEach;\nvar ARR_SLICE = Array.prototype.slice;\nvar Common = {\n BREAK: {},\n extend: function extend(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (!this.isUndefined(obj[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n defaults: function defaults(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (this.isUndefined(target[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n compose: function compose() {\n var toCall = ARR_SLICE.call(arguments);\n return function () {\n var args = ARR_SLICE.call(arguments);\n for (var i = toCall.length - 1; i >= 0; i--) {\n args = [toCall[i].apply(this, args)];\n }\n return args[0];\n };\n },\n each: function each(obj, itr, scope) {\n if (!obj) {\n return;\n }\n if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) {\n obj.forEach(itr, scope);\n } else if (obj.length === obj.length + 0) {\n var key = void 0;\n var l = void 0;\n for (key = 0, l = obj.length; key < l; key++) {\n if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) {\n return;\n }\n }\n } else {\n for (var _key in obj) {\n if (itr.call(scope, obj[_key], _key) === this.BREAK) {\n return;\n }\n }\n }\n },\n defer: function defer(fnc) {\n setTimeout(fnc, 0);\n },\n debounce: function debounce(func, threshold, callImmediately) {\n var timeout = void 0;\n return function () {\n var obj = this;\n var args = arguments;\n function delayed() {\n timeout = null;\n if (!callImmediately) func.apply(obj, args);\n }\n var callNow = callImmediately || !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(delayed, threshold);\n if (callNow) {\n func.apply(obj, args);\n }\n };\n },\n toArray: function toArray(obj) {\n if (obj.toArray) return obj.toArray();\n return ARR_SLICE.call(obj);\n },\n isUndefined: function isUndefined(obj) {\n return obj === undefined;\n },\n isNull: function isNull(obj) {\n return obj === null;\n },\n isNaN: function (_isNaN) {\n function isNaN(_x) {\n return _isNaN.apply(this, arguments);\n }\n isNaN.toString = function () {\n return _isNaN.toString();\n };\n return isNaN;\n }(function (obj) {\n return isNaN(obj);\n }),\n isArray: Array.isArray || function (obj) {\n return obj.constructor === Array;\n },\n isObject: function isObject(obj) {\n return obj === Object(obj);\n },\n isNumber: function isNumber(obj) {\n return obj === obj + 0;\n },\n isString: function isString(obj) {\n return obj === obj + '';\n },\n isBoolean: function isBoolean(obj) {\n return obj === false || obj === true;\n },\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.call(obj) === '[object Function]';\n }\n};\n\nvar INTERPRETATIONS = [\n{\n litmus: Common.isString,\n conversions: {\n THREE_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0)\n };\n },\n write: colorToString\n },\n SIX_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9]{6})$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString(), 0)\n };\n },\n write: colorToString\n },\n CSS_RGB: {\n read: function read(original) {\n var test = original.match(/^rgb\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3])\n };\n },\n write: colorToString\n },\n CSS_RGBA: {\n read: function read(original) {\n var test = original.match(/^rgba\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3]),\n a: parseFloat(test[4])\n };\n },\n write: colorToString\n }\n }\n},\n{\n litmus: Common.isNumber,\n conversions: {\n HEX: {\n read: function read(original) {\n return {\n space: 'HEX',\n hex: original,\n conversionName: 'HEX'\n };\n },\n write: function write(color) {\n return color.hex;\n }\n }\n }\n},\n{\n litmus: Common.isArray,\n conversions: {\n RGB_ARRAY: {\n read: function read(original) {\n if (original.length !== 3) {\n return false;\n }\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b];\n }\n },\n RGBA_ARRAY: {\n read: function read(original) {\n if (original.length !== 4) return false;\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2],\n a: original[3]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b, color.a];\n }\n }\n }\n},\n{\n litmus: Common.isObject,\n conversions: {\n RGBA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b,\n a: color.a\n };\n }\n },\n RGB_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b\n };\n }\n },\n HSVA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v,\n a: color.a\n };\n }\n },\n HSV_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v\n };\n }\n }\n }\n}];\nvar result = void 0;\nvar toReturn = void 0;\nvar interpret = function interpret() {\n toReturn = false;\n var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0];\n Common.each(INTERPRETATIONS, function (family) {\n if (family.litmus(original)) {\n Common.each(family.conversions, function (conversion, conversionName) {\n result = conversion.read(original);\n if (toReturn === false && result !== false) {\n toReturn = result;\n result.conversionName = conversionName;\n result.conversion = conversion;\n return Common.BREAK;\n }\n });\n return Common.BREAK;\n }\n });\n return toReturn;\n};\n\nvar tmpComponent = void 0;\nvar ColorMath = {\n hsv_to_rgb: function hsv_to_rgb(h, s, v) {\n var hi = Math.floor(h / 60) % 6;\n var f = h / 60 - Math.floor(h / 60);\n var p = v * (1.0 - s);\n var q = v * (1.0 - f * s);\n var t = v * (1.0 - (1.0 - f) * s);\n var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi];\n return {\n r: c[0] * 255,\n g: c[1] * 255,\n b: c[2] * 255\n };\n },\n rgb_to_hsv: function rgb_to_hsv(r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var h = void 0;\n var s = void 0;\n if (max !== 0) {\n s = delta / max;\n } else {\n return {\n h: NaN,\n s: 0,\n v: 0\n };\n }\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n h /= 6;\n if (h < 0) {\n h += 1;\n }\n return {\n h: h * 360,\n s: s,\n v: max / 255\n };\n },\n rgb_to_hex: function rgb_to_hex(r, g, b) {\n var hex = this.hex_with_component(0, 2, r);\n hex = this.hex_with_component(hex, 1, g);\n hex = this.hex_with_component(hex, 0, b);\n return hex;\n },\n component_from_hex: function component_from_hex(hex, componentIndex) {\n return hex >> componentIndex * 8 & 0xFF;\n },\n hex_with_component: function hex_with_component(hex, componentIndex, value) {\n return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent);\n }\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar Color = function () {\n function Color() {\n classCallCheck(this, Color);\n this.__state = interpret.apply(this, arguments);\n if (this.__state === false) {\n throw new Error('Failed to interpret color arguments');\n }\n this.__state.a = this.__state.a || 1;\n }\n createClass(Color, [{\n key: 'toString',\n value: function toString() {\n return colorToString(this);\n }\n }, {\n key: 'toHexString',\n value: function toHexString() {\n return colorToString(this, true);\n }\n }, {\n key: 'toOriginal',\n value: function toOriginal() {\n return this.__state.conversion.write(this);\n }\n }]);\n return Color;\n}();\nfunction defineRGBComponent(target, component, componentHexIndex) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'RGB') {\n return this.__state[component];\n }\n Color.recalculateRGB(this, component, componentHexIndex);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'RGB') {\n Color.recalculateRGB(this, component, componentHexIndex);\n this.__state.space = 'RGB';\n }\n this.__state[component] = v;\n }\n });\n}\nfunction defineHSVComponent(target, component) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'HSV') {\n return this.__state[component];\n }\n Color.recalculateHSV(this);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'HSV') {\n Color.recalculateHSV(this);\n this.__state.space = 'HSV';\n }\n this.__state[component] = v;\n }\n });\n}\nColor.recalculateRGB = function (color, component, componentHexIndex) {\n if (color.__state.space === 'HEX') {\n color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex);\n } else if (color.__state.space === 'HSV') {\n Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v));\n } else {\n throw new Error('Corrupted color state');\n }\n};\nColor.recalculateHSV = function (color) {\n var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b);\n Common.extend(color.__state, {\n s: result.s,\n v: result.v\n });\n if (!Common.isNaN(result.h)) {\n color.__state.h = result.h;\n } else if (Common.isUndefined(color.__state.h)) {\n color.__state.h = 0;\n }\n};\nColor.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];\ndefineRGBComponent(Color.prototype, 'r', 2);\ndefineRGBComponent(Color.prototype, 'g', 1);\ndefineRGBComponent(Color.prototype, 'b', 0);\ndefineHSVComponent(Color.prototype, 'h');\ndefineHSVComponent(Color.prototype, 's');\ndefineHSVComponent(Color.prototype, 'v');\nObject.defineProperty(Color.prototype, 'a', {\n get: function get$$1() {\n return this.__state.a;\n },\n set: function set$$1(v) {\n this.__state.a = v;\n }\n});\nObject.defineProperty(Color.prototype, 'hex', {\n get: function get$$1() {\n if (!this.__state.space !== 'HEX') {\n this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b);\n }\n return this.__state.hex;\n },\n set: function set$$1(v) {\n this.__state.space = 'HEX';\n this.__state.hex = v;\n }\n});\n\nvar Controller = function () {\n function Controller(object, property) {\n classCallCheck(this, Controller);\n this.initialValue = object[property];\n this.domElement = document.createElement('div');\n this.object = object;\n this.property = property;\n this.__onChange = undefined;\n this.__onFinishChange = undefined;\n }\n createClass(Controller, [{\n key: 'onChange',\n value: function onChange(fnc) {\n this.__onChange = fnc;\n return this;\n }\n }, {\n key: 'onFinishChange',\n value: function onFinishChange(fnc) {\n this.__onFinishChange = fnc;\n return this;\n }\n }, {\n key: 'setValue',\n value: function setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.object[this.property];\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n return this;\n }\n }, {\n key: 'isModified',\n value: function isModified() {\n return this.initialValue !== this.getValue();\n }\n }]);\n return Controller;\n}();\n\nvar EVENT_MAP = {\n HTMLEvents: ['change'],\n MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],\n KeyboardEvents: ['keydown']\n};\nvar EVENT_MAP_INV = {};\nCommon.each(EVENT_MAP, function (v, k) {\n Common.each(v, function (e) {\n EVENT_MAP_INV[e] = k;\n });\n});\nvar CSS_VALUE_PIXELS = /(\\d+(\\.\\d+)?)px/;\nfunction cssValueToPixels(val) {\n if (val === '0' || Common.isUndefined(val)) {\n return 0;\n }\n var match = val.match(CSS_VALUE_PIXELS);\n if (!Common.isNull(match)) {\n return parseFloat(match[1]);\n }\n return 0;\n}\nvar dom = {\n makeSelectable: function makeSelectable(elem, selectable) {\n if (elem === undefined || elem.style === undefined) return;\n elem.onselectstart = selectable ? function () {\n return false;\n } : function () {};\n elem.style.MozUserSelect = selectable ? 'auto' : 'none';\n elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';\n elem.unselectable = selectable ? 'on' : 'off';\n },\n makeFullscreen: function makeFullscreen(elem, hor, vert) {\n var vertical = vert;\n var horizontal = hor;\n if (Common.isUndefined(horizontal)) {\n horizontal = true;\n }\n if (Common.isUndefined(vertical)) {\n vertical = true;\n }\n elem.style.position = 'absolute';\n if (horizontal) {\n elem.style.left = 0;\n elem.style.right = 0;\n }\n if (vertical) {\n elem.style.top = 0;\n elem.style.bottom = 0;\n }\n },\n fakeEvent: function fakeEvent(elem, eventType, pars, aux) {\n var params = pars || {};\n var className = EVENT_MAP_INV[eventType];\n if (!className) {\n throw new Error('Event type ' + eventType + ' not supported.');\n }\n var evt = document.createEvent(className);\n switch (className) {\n case 'MouseEvents':\n {\n var clientX = params.x || params.clientX || 0;\n var clientY = params.y || params.clientY || 0;\n evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0,\n 0,\n clientX,\n clientY,\n false, false, false, false, 0, null);\n break;\n }\n case 'KeyboardEvents':\n {\n var init = evt.initKeyboardEvent || evt.initKeyEvent;\n Common.defaults(params, {\n cancelable: true,\n ctrlKey: false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n keyCode: undefined,\n charCode: undefined\n });\n init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode);\n break;\n }\n default:\n {\n evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);\n break;\n }\n }\n Common.defaults(evt, aux);\n elem.dispatchEvent(evt);\n },\n bind: function bind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.addEventListener) {\n elem.addEventListener(event, func, bool);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + event, func);\n }\n return dom;\n },\n unbind: function unbind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.removeEventListener) {\n elem.removeEventListener(event, func, bool);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + event, func);\n }\n return dom;\n },\n addClass: function addClass(elem, className) {\n if (elem.className === undefined) {\n elem.className = className;\n } else if (elem.className !== className) {\n var classes = elem.className.split(/ +/);\n if (classes.indexOf(className) === -1) {\n classes.push(className);\n elem.className = classes.join(' ').replace(/^\\s+/, '').replace(/\\s+$/, '');\n }\n }\n return dom;\n },\n removeClass: function removeClass(elem, className) {\n if (className) {\n if (elem.className === className) {\n elem.removeAttribute('class');\n } else {\n var classes = elem.className.split(/ +/);\n var index = classes.indexOf(className);\n if (index !== -1) {\n classes.splice(index, 1);\n elem.className = classes.join(' ');\n }\n }\n } else {\n elem.className = undefined;\n }\n return dom;\n },\n hasClass: function hasClass(elem, className) {\n return new RegExp('(?:^|\\\\s+)' + className + '(?:\\\\s+|$)').test(elem.className) || false;\n },\n getWidth: function getWidth(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width);\n },\n getHeight: function getHeight(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height);\n },\n getOffset: function getOffset(el) {\n var elem = el;\n var offset = { left: 0, top: 0 };\n if (elem.offsetParent) {\n do {\n offset.left += elem.offsetLeft;\n offset.top += elem.offsetTop;\n elem = elem.offsetParent;\n } while (elem);\n }\n return offset;\n },\n isActive: function isActive(elem) {\n return elem === document.activeElement && (elem.type || elem.href);\n }\n};\n\nvar BooleanController = function (_Controller) {\n inherits(BooleanController, _Controller);\n function BooleanController(object, property) {\n classCallCheck(this, BooleanController);\n var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property));\n var _this = _this2;\n _this2.__prev = _this2.getValue();\n _this2.__checkbox = document.createElement('input');\n _this2.__checkbox.setAttribute('type', 'checkbox');\n function onChange() {\n _this.setValue(!_this.__prev);\n }\n dom.bind(_this2.__checkbox, 'change', onChange, false);\n _this2.domElement.appendChild(_this2.__checkbox);\n _this2.updateDisplay();\n return _this2;\n }\n createClass(BooleanController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n this.__prev = this.getValue();\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (this.getValue() === true) {\n this.__checkbox.setAttribute('checked', 'checked');\n this.__checkbox.checked = true;\n this.__prev = true;\n } else {\n this.__checkbox.checked = false;\n this.__prev = false;\n }\n return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return BooleanController;\n}(Controller);\n\nvar OptionController = function (_Controller) {\n inherits(OptionController, _Controller);\n function OptionController(object, property, opts) {\n classCallCheck(this, OptionController);\n var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property));\n var options = opts;\n var _this = _this2;\n _this2.__select = document.createElement('select');\n if (Common.isArray(options)) {\n var map = {};\n Common.each(options, function (element) {\n map[element] = element;\n });\n options = map;\n }\n Common.each(options, function (value, key) {\n var opt = document.createElement('option');\n opt.innerHTML = key;\n opt.setAttribute('value', value);\n _this.__select.appendChild(opt);\n });\n _this2.updateDisplay();\n dom.bind(_this2.__select, 'change', function () {\n var desiredValue = this.options[this.selectedIndex].value;\n _this.setValue(desiredValue);\n });\n _this2.domElement.appendChild(_this2.__select);\n return _this2;\n }\n createClass(OptionController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (dom.isActive(this.__select)) return this;\n this.__select.value = this.getValue();\n return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return OptionController;\n}(Controller);\n\nvar StringController = function (_Controller) {\n inherits(StringController, _Controller);\n function StringController(object, property) {\n classCallCheck(this, StringController);\n var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property));\n var _this = _this2;\n function onChange() {\n _this.setValue(_this.__input.value);\n }\n function onBlur() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'keyup', onChange);\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n this.blur();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(StringController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (!dom.isActive(this.__input)) {\n this.__input.value = this.getValue();\n }\n return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return StringController;\n}(Controller);\n\nfunction numDecimals(x) {\n var _x = x.toString();\n if (_x.indexOf('.') > -1) {\n return _x.length - _x.indexOf('.') - 1;\n }\n return 0;\n}\nvar NumberController = function (_Controller) {\n inherits(NumberController, _Controller);\n function NumberController(object, property, params) {\n classCallCheck(this, NumberController);\n var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property));\n var _params = params || {};\n _this.__min = _params.min;\n _this.__max = _params.max;\n _this.__step = _params.step;\n if (Common.isUndefined(_this.__step)) {\n if (_this.initialValue === 0) {\n _this.__impliedStep = 1;\n } else {\n _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10;\n }\n } else {\n _this.__impliedStep = _this.__step;\n }\n _this.__precision = numDecimals(_this.__impliedStep);\n return _this;\n }\n createClass(NumberController, [{\n key: 'setValue',\n value: function setValue(v) {\n var _v = v;\n if (this.__min !== undefined && _v < this.__min) {\n _v = this.__min;\n } else if (this.__max !== undefined && _v > this.__max) {\n _v = this.__max;\n }\n if (this.__step !== undefined && _v % this.__step !== 0) {\n _v = Math.round(_v / this.__step) * this.__step;\n }\n return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v);\n }\n }, {\n key: 'min',\n value: function min(minValue) {\n this.__min = minValue;\n return this;\n }\n }, {\n key: 'max',\n value: function max(maxValue) {\n this.__max = maxValue;\n return this;\n }\n }, {\n key: 'step',\n value: function step(stepValue) {\n this.__step = stepValue;\n this.__impliedStep = stepValue;\n this.__precision = numDecimals(stepValue);\n return this;\n }\n }]);\n return NumberController;\n}(Controller);\n\nfunction roundToDecimal(value, decimals) {\n var tenTo = Math.pow(10, decimals);\n return Math.round(value * tenTo) / tenTo;\n}\nvar NumberControllerBox = function (_NumberController) {\n inherits(NumberControllerBox, _NumberController);\n function NumberControllerBox(object, property, params) {\n classCallCheck(this, NumberControllerBox);\n var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params));\n _this2.__truncationSuspended = false;\n var _this = _this2;\n var prevY = void 0;\n function onChange() {\n var attempted = parseFloat(_this.__input.value);\n if (!Common.isNaN(attempted)) {\n _this.setValue(attempted);\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onBlur() {\n onFinish();\n }\n function onMouseDrag(e) {\n var diff = prevY - e.clientY;\n _this.setValue(_this.getValue() + diff * _this.__impliedStep);\n prevY = e.clientY;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n onFinish();\n }\n function onMouseDown(e) {\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n prevY = e.clientY;\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'mousedown', onMouseDown);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n _this.__truncationSuspended = true;\n this.blur();\n _this.__truncationSuspended = false;\n onFinish();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(NumberControllerBox, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);\n return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerBox;\n}(NumberController);\n\nfunction map(v, i1, i2, o1, o2) {\n return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));\n}\nvar NumberControllerSlider = function (_NumberController) {\n inherits(NumberControllerSlider, _NumberController);\n function NumberControllerSlider(object, property, min, max, step) {\n classCallCheck(this, NumberControllerSlider);\n var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step }));\n var _this = _this2;\n _this2.__background = document.createElement('div');\n _this2.__foreground = document.createElement('div');\n dom.bind(_this2.__background, 'mousedown', onMouseDown);\n dom.bind(_this2.__background, 'touchstart', onTouchStart);\n dom.addClass(_this2.__background, 'slider');\n dom.addClass(_this2.__foreground, 'slider-fg');\n function onMouseDown(e) {\n document.activeElement.blur();\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n onMouseDrag(e);\n }\n function onMouseDrag(e) {\n e.preventDefault();\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n return false;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onTouchStart(e) {\n if (e.touches.length !== 1) {\n return;\n }\n dom.bind(window, 'touchmove', onTouchMove);\n dom.bind(window, 'touchend', onTouchEnd);\n onTouchMove(e);\n }\n function onTouchMove(e) {\n var clientX = e.touches[0].clientX;\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n }\n function onTouchEnd() {\n dom.unbind(window, 'touchmove', onTouchMove);\n dom.unbind(window, 'touchend', onTouchEnd);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.updateDisplay();\n _this2.__background.appendChild(_this2.__foreground);\n _this2.domElement.appendChild(_this2.__background);\n return _this2;\n }\n createClass(NumberControllerSlider, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var pct = (this.getValue() - this.__min) / (this.__max - this.__min);\n this.__foreground.style.width = pct * 100 + '%';\n return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerSlider;\n}(NumberController);\n\nvar FunctionController = function (_Controller) {\n inherits(FunctionController, _Controller);\n function FunctionController(object, property, text) {\n classCallCheck(this, FunctionController);\n var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property));\n var _this = _this2;\n _this2.__button = document.createElement('div');\n _this2.__button.innerHTML = text === undefined ? 'Fire' : text;\n dom.bind(_this2.__button, 'click', function (e) {\n e.preventDefault();\n _this.fire();\n return false;\n });\n dom.addClass(_this2.__button, 'button');\n _this2.domElement.appendChild(_this2.__button);\n return _this2;\n }\n createClass(FunctionController, [{\n key: 'fire',\n value: function fire() {\n if (this.__onChange) {\n this.__onChange.call(this);\n }\n this.getValue().call(this.object);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n }\n }]);\n return FunctionController;\n}(Controller);\n\nvar ColorController = function (_Controller) {\n inherits(ColorController, _Controller);\n function ColorController(object, property) {\n classCallCheck(this, ColorController);\n var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property));\n _this2.__color = new Color(_this2.getValue());\n _this2.__temp = new Color(0);\n var _this = _this2;\n _this2.domElement = document.createElement('div');\n dom.makeSelectable(_this2.domElement, false);\n _this2.__selector = document.createElement('div');\n _this2.__selector.className = 'selector';\n _this2.__saturation_field = document.createElement('div');\n _this2.__saturation_field.className = 'saturation-field';\n _this2.__field_knob = document.createElement('div');\n _this2.__field_knob.className = 'field-knob';\n _this2.__field_knob_border = '2px solid ';\n _this2.__hue_knob = document.createElement('div');\n _this2.__hue_knob.className = 'hue-knob';\n _this2.__hue_field = document.createElement('div');\n _this2.__hue_field.className = 'hue-field';\n _this2.__input = document.createElement('input');\n _this2.__input.type = 'text';\n _this2.__input_textShadow = '0 1px 1px ';\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n onBlur.call(this);\n }\n });\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__selector, 'mousedown', function () {\n dom.addClass(this, 'drag').bind(window, 'mouseup', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n dom.bind(_this2.__selector, 'touchstart', function () {\n dom.addClass(this, 'drag').bind(window, 'touchend', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n var valueField = document.createElement('div');\n Common.extend(_this2.__selector.style, {\n width: '122px',\n height: '102px',\n padding: '3px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n Common.extend(_this2.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n Common.extend(_this2.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n Common.extend(_this2.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n cursor: 'pointer'\n });\n Common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n Common.extend(_this2.__hue_field.style, {\n width: '15px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n right: '3px'\n });\n hueGradient(_this2.__hue_field);\n Common.extend(_this2.__input.style, {\n outline: 'none',\n textAlign: 'center',\n color: '#fff',\n border: 0,\n fontWeight: 'bold',\n textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n dom.bind(_this2.__saturation_field, 'mousedown', fieldDown);\n dom.bind(_this2.__saturation_field, 'touchstart', fieldDown);\n dom.bind(_this2.__field_knob, 'mousedown', fieldDown);\n dom.bind(_this2.__field_knob, 'touchstart', fieldDown);\n dom.bind(_this2.__hue_field, 'mousedown', fieldDownH);\n dom.bind(_this2.__hue_field, 'touchstart', fieldDownH);\n function fieldDown(e) {\n setSV(e);\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'touchmove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n dom.bind(window, 'touchend', fieldUpSV);\n }\n function fieldDownH(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'touchmove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n dom.bind(window, 'touchend', fieldUpH);\n }\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'touchmove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n dom.unbind(window, 'touchend', fieldUpSV);\n onFinish();\n }\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'touchmove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n dom.unbind(window, 'touchend', fieldUpH);\n onFinish();\n }\n function onBlur() {\n var i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n _this2.__saturation_field.appendChild(valueField);\n _this2.__selector.appendChild(_this2.__field_knob);\n _this2.__selector.appendChild(_this2.__saturation_field);\n _this2.__selector.appendChild(_this2.__hue_field);\n _this2.__hue_field.appendChild(_this2.__hue_knob);\n _this2.domElement.appendChild(_this2.__input);\n _this2.domElement.appendChild(_this2.__selector);\n _this2.updateDisplay();\n function setSV(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__saturation_field.getBoundingClientRect();\n var _ref = e.touches && e.touches[0] || e,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n _this.__color.v = v;\n _this.__color.s = s;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n function setH(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__hue_field.getBoundingClientRect();\n var _ref2 = e.touches && e.touches[0] || e,\n clientY = _ref2.clientY;\n var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n _this.__color.h = h * 360;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n return _this2;\n }\n createClass(ColorController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var i = interpret(this.getValue());\n if (i !== false) {\n var mismatch = false;\n Common.each(Color.COMPONENTS, function (component) {\n if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {};\n }\n }, this);\n if (mismatch) {\n Common.extend(this.__color.__state, i);\n }\n }\n Common.extend(this.__temp.__state, this.__color.__state);\n this.__temp.a = 1;\n var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0;\n var _flip = 255 - flip;\n Common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n this.__temp.s = 1;\n this.__temp.v = 1;\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n this.__input.value = this.__color.toString();\n Common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n }\n }]);\n return ColorController;\n}(Controller);\nvar vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n Common.each(vendors, function (vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nvar CustomController = function (_Controller) {\n inherits(CustomController, _Controller);\n function CustomController(object, property) {\n classCallCheck(this, CustomController);\n var _this = possibleConstructorReturn(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, object, property));\n object.constructor(_this);\n _this.custom = true;\n return _this;\n }\n return CustomController;\n}(Controller);\n\nvar css = {\n load: function load(url, indoc) {\n var doc = indoc || document;\n var link = doc.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = url;\n doc.getElementsByTagName('head')[0].appendChild(link);\n },\n inject: function inject(cssContent, indoc) {\n var doc = indoc || document;\n var injected = document.createElement('style');\n injected.type = 'text/css';\n injected.innerHTML = cssContent;\n var head = doc.getElementsByTagName('head')[0];\n try {\n head.appendChild(injected);\n } catch (e) {\n }\n }\n};\n\nvar saveDialogContents = \"
\\n\\n Here's the new load parameter for your GUI's constructor:\\n\\n \\n\\n
\\n\\n Automatically save\\n values to localStorage on exit.\\n\\n
The values saved to localStorage will\\n override those passed to dat.GUI's constructor. This makes it\\n easier to work incrementally, but localStorage is fragile,\\n and your friends may not see the same values you do.\\n\\n
\\n\\n
\\n\\n
\";\n\nvar ControllerFactory = function ControllerFactory(object, property) {\n var initialValue = object[property];\n if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) {\n return new OptionController(object, property, arguments[2]);\n }\n if (Common.isNumber(initialValue)) {\n if (Common.isNumber(arguments[2]) && Common.isNumber(arguments[3])) {\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]);\n }\n return new NumberControllerSlider(object, property, arguments[2], arguments[3]);\n }\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3], step: arguments[4] });\n }\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });\n }\n if (Common.isString(initialValue)) {\n return new StringController(object, property);\n }\n if (Common.isFunction(initialValue)) {\n return new FunctionController(object, property, '');\n }\n if (Common.isBoolean(initialValue)) {\n return new BooleanController(object, property);\n }\n return null;\n};\n\nfunction requestAnimationFrame(callback) {\n setTimeout(callback, 1000 / 60);\n}\nvar requestAnimationFrame$1 = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || requestAnimationFrame;\n\nvar CenteredDiv = function () {\n function CenteredDiv() {\n classCallCheck(this, CenteredDiv);\n this.backgroundElement = document.createElement('div');\n Common.extend(this.backgroundElement.style, {\n backgroundColor: 'rgba(0,0,0,0.8)',\n top: 0,\n left: 0,\n display: 'none',\n zIndex: '1000',\n opacity: 0,\n WebkitTransition: 'opacity 0.2s linear',\n transition: 'opacity 0.2s linear'\n });\n dom.makeFullscreen(this.backgroundElement);\n this.backgroundElement.style.position = 'fixed';\n this.domElement = document.createElement('div');\n Common.extend(this.domElement.style, {\n position: 'fixed',\n display: 'none',\n zIndex: '1001',\n opacity: 0,\n WebkitTransition: '-webkit-transform 0.2s ease-out, opacity 0.2s linear',\n transition: 'transform 0.2s ease-out, opacity 0.2s linear'\n });\n document.body.appendChild(this.backgroundElement);\n document.body.appendChild(this.domElement);\n var _this = this;\n dom.bind(this.backgroundElement, 'click', function () {\n _this.hide();\n });\n }\n createClass(CenteredDiv, [{\n key: 'show',\n value: function show() {\n var _this = this;\n this.backgroundElement.style.display = 'block';\n this.domElement.style.display = 'block';\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n this.layout();\n Common.defer(function () {\n _this.backgroundElement.style.opacity = 1;\n _this.domElement.style.opacity = 1;\n _this.domElement.style.webkitTransform = 'scale(1)';\n });\n }\n }, {\n key: 'hide',\n value: function hide() {\n var _this = this;\n var hide = function hide() {\n _this.domElement.style.display = 'none';\n _this.backgroundElement.style.display = 'none';\n dom.unbind(_this.domElement, 'webkitTransitionEnd', hide);\n dom.unbind(_this.domElement, 'transitionend', hide);\n dom.unbind(_this.domElement, 'oTransitionEnd', hide);\n };\n dom.bind(this.domElement, 'webkitTransitionEnd', hide);\n dom.bind(this.domElement, 'transitionend', hide);\n dom.bind(this.domElement, 'oTransitionEnd', hide);\n this.backgroundElement.style.opacity = 0;\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.domElement.style.left = window.innerWidth / 2 - dom.getWidth(this.domElement) / 2 + 'px';\n this.domElement.style.top = window.innerHeight / 2 - dom.getHeight(this.domElement) / 2 + 'px';\n }\n }]);\n return CenteredDiv;\n}();\n\nvar styleSheet = ___$insertStyle(\".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\\n\");\n\ncss.inject(styleSheet);\nvar CSS_NAMESPACE = 'dg';\nvar HIDE_KEY_CODE = 72;\nvar CLOSE_BUTTON_HEIGHT = 20;\nvar DEFAULT_DEFAULT_PRESET_NAME = 'Default';\nvar SUPPORTS_LOCAL_STORAGE = function () {\n try {\n return !!window.localStorage;\n } catch (e) {\n return false;\n }\n}();\nvar SAVE_DIALOGUE = void 0;\nvar autoPlaceVirgin = true;\nvar autoPlaceContainer = void 0;\nvar hide = false;\nvar hideableGuis = [];\nvar GUI = function GUI(pars) {\n var _this = this;\n var params = pars || {};\n this.domElement = document.createElement('div');\n this.__ul = document.createElement('ul');\n this.domElement.appendChild(this.__ul);\n dom.addClass(this.domElement, CSS_NAMESPACE);\n this.__folders = {};\n this.__controllers = [];\n this.__rememberedObjects = [];\n this.__rememberedObjectIndecesToControllers = [];\n this.__listening = [];\n params = Common.defaults(params, {\n closeOnTop: false,\n autoPlace: true,\n width: GUI.DEFAULT_WIDTH\n });\n params = Common.defaults(params, {\n resizable: params.autoPlace,\n hideable: params.autoPlace\n });\n if (!Common.isUndefined(params.load)) {\n if (params.preset) {\n params.load.preset = params.preset;\n }\n } else {\n params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };\n }\n if (Common.isUndefined(params.parent) && params.hideable) {\n hideableGuis.push(this);\n }\n params.resizable = Common.isUndefined(params.parent) && params.resizable;\n if (params.autoPlace && Common.isUndefined(params.scrollable)) {\n params.scrollable = true;\n }\n var useLocalStorage = SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true';\n var saveToLocalStorage = void 0;\n var titleRow = void 0;\n Object.defineProperties(this,\n {\n parent: {\n get: function get$$1() {\n return params.parent;\n }\n },\n scrollable: {\n get: function get$$1() {\n return params.scrollable;\n }\n },\n autoPlace: {\n get: function get$$1() {\n return params.autoPlace;\n }\n },\n closeOnTop: {\n get: function get$$1() {\n return params.closeOnTop;\n }\n },\n preset: {\n get: function get$$1() {\n if (_this.parent) {\n return _this.getRoot().preset;\n }\n return params.load.preset;\n },\n set: function set$$1(v) {\n if (_this.parent) {\n _this.getRoot().preset = v;\n } else {\n params.load.preset = v;\n }\n setPresetSelectIndex(this);\n _this.revert();\n }\n },\n width: {\n get: function get$$1() {\n return params.width;\n },\n set: function set$$1(v) {\n params.width = v;\n setWidth(_this, v);\n }\n },\n name: {\n get: function get$$1() {\n return params.name;\n },\n set: function set$$1(v) {\n params.name = v;\n if (titleRow) {\n titleRow.innerHTML = params.name;\n }\n }\n },\n closed: {\n get: function get$$1() {\n return params.closed;\n },\n set: function set$$1(v) {\n params.closed = v;\n if (params.closed) {\n dom.addClass(_this.__ul, GUI.CLASS_CLOSED);\n } else {\n dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);\n }\n this.onResize();\n if (_this.__closeButton) {\n _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;\n }\n }\n },\n load: {\n get: function get$$1() {\n return params.load;\n }\n },\n useLocalStorage: {\n get: function get$$1() {\n return useLocalStorage;\n },\n set: function set$$1(bool) {\n if (SUPPORTS_LOCAL_STORAGE) {\n useLocalStorage = bool;\n if (bool) {\n dom.bind(window, 'unload', saveToLocalStorage);\n } else {\n dom.unbind(window, 'unload', saveToLocalStorage);\n }\n localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);\n }\n }\n }\n });\n if (Common.isUndefined(params.parent)) {\n this.closed = params.closed || false;\n dom.addClass(this.domElement, GUI.CLASS_MAIN);\n dom.makeSelectable(this.domElement, false);\n if (SUPPORTS_LOCAL_STORAGE) {\n if (useLocalStorage) {\n _this.useLocalStorage = true;\n var savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));\n if (savedGui) {\n params.load = JSON.parse(savedGui);\n }\n }\n }\n this.__closeButton = document.createElement('div');\n this.__closeButton.innerHTML = GUI.TEXT_CLOSED;\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);\n if (params.closeOnTop) {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);\n this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);\n } else {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);\n this.domElement.appendChild(this.__closeButton);\n }\n dom.bind(this.__closeButton, 'click', function () {\n _this.closed = !_this.closed;\n });\n } else {\n if (params.closed === undefined) {\n params.closed = true;\n }\n var titleRowName = document.createTextNode(params.name);\n dom.addClass(titleRowName, 'controller-name');\n titleRow = addRow(_this, titleRowName);\n var onClickTitle = function onClickTitle(e) {\n e.preventDefault();\n _this.closed = !_this.closed;\n return false;\n };\n dom.addClass(this.__ul, GUI.CLASS_CLOSED);\n dom.addClass(titleRow, 'title');\n dom.bind(titleRow, 'click', onClickTitle);\n if (!params.closed) {\n this.closed = false;\n }\n }\n if (params.autoPlace) {\n if (Common.isUndefined(params.parent)) {\n if (autoPlaceVirgin) {\n autoPlaceContainer = document.createElement('div');\n dom.addClass(autoPlaceContainer, CSS_NAMESPACE);\n dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);\n document.body.appendChild(autoPlaceContainer);\n autoPlaceVirgin = false;\n }\n autoPlaceContainer.appendChild(this.domElement);\n dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);\n }\n if (!this.parent) {\n setWidth(_this, params.width);\n }\n }\n this.__resizeHandler = function () {\n _this.onResizeDebounced();\n };\n dom.bind(window, 'resize', this.__resizeHandler);\n dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);\n dom.bind(this.__ul, 'transitionend', this.__resizeHandler);\n dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);\n this.onResize();\n if (params.resizable) {\n addResizeHandle(this);\n }\n saveToLocalStorage = function saveToLocalStorage() {\n if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') {\n localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));\n }\n };\n this.saveToLocalStorageIfPossible = saveToLocalStorage;\n function resetWidth() {\n var root = _this.getRoot();\n root.width += 1;\n Common.defer(function () {\n root.width -= 1;\n });\n }\n if (!params.parent) {\n resetWidth();\n }\n};\nGUI.toggleHide = function () {\n hide = !hide;\n Common.each(hideableGuis, function (gui) {\n gui.domElement.style.display = hide ? 'none' : '';\n });\n};\nGUI.CLASS_AUTO_PLACE = 'a';\nGUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';\nGUI.CLASS_MAIN = 'main';\nGUI.CLASS_CONTROLLER_ROW = 'cr';\nGUI.CLASS_TOO_TALL = 'taller-than-window';\nGUI.CLASS_CLOSED = 'closed';\nGUI.CLASS_CLOSE_BUTTON = 'close-button';\nGUI.CLASS_CLOSE_TOP = 'close-top';\nGUI.CLASS_CLOSE_BOTTOM = 'close-bottom';\nGUI.CLASS_DRAG = 'drag';\nGUI.DEFAULT_WIDTH = 245;\nGUI.TEXT_CLOSED = 'Close Controls';\nGUI.TEXT_OPEN = 'Open Controls';\nGUI._keydownHandler = function (e) {\n if (document.activeElement.type !== 'text' && (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {\n GUI.toggleHide();\n }\n};\ndom.bind(window, 'keydown', GUI._keydownHandler, false);\nCommon.extend(GUI.prototype,\n{\n add: function add(object, property) {\n return _add(this, object, property, {\n custom: object.custom,\n factoryArgs: Array.prototype.slice.call(arguments, 2)\n });\n },\n addColor: function addColor(object, property) {\n return _add(this, object, property, {\n color: true\n });\n },\n addCustomController: function addCustomController(object, property) {\n return _add(this, object, property, {\n custom: true,\n factoryArgs: Array.prototype.slice.call(arguments, 2)\n });\n },\n remove: function remove(controller) {\n this.__ul.removeChild(controller.__li);\n this.__controllers.splice(this.__controllers.indexOf(controller), 1);\n var _this = this;\n Common.defer(function () {\n _this.onResize();\n });\n },\n destroy: function destroy() {\n if (this.parent) {\n throw new Error('Only the root GUI should be removed with .destroy(). ' + 'For subfolders, use gui.removeFolder(folder) instead.');\n }\n if (this.autoPlace) {\n autoPlaceContainer.removeChild(this.domElement);\n }\n var _this = this;\n Common.each(this.__folders, function (subfolder) {\n _this.removeFolder(subfolder);\n });\n dom.unbind(window, 'keydown', GUI._keydownHandler, false);\n removeListeners(this);\n },\n addFolder: function addFolder(name) {\n if (this.__folders[name] !== undefined) {\n throw new Error('You already have a folder in this GUI by the' + ' name \"' + name + '\"');\n }\n var newGuiParams = { name: name, parent: this };\n newGuiParams.autoPlace = this.autoPlace;\n if (this.load &&\n this.load.folders &&\n this.load.folders[name]) {\n newGuiParams.closed = this.load.folders[name].closed;\n newGuiParams.load = this.load.folders[name];\n }\n var gui = new GUI(newGuiParams);\n this.__folders[name] = gui;\n var li = addRow(this, gui.domElement);\n dom.addClass(li, 'folder');\n return gui;\n },\n removeFolder: function removeFolder(folder) {\n this.__ul.removeChild(folder.domElement.parentElement);\n delete this.__folders[folder.name];\n if (this.load &&\n this.load.folders &&\n this.load.folders[folder.name]) {\n delete this.load.folders[folder.name];\n }\n removeListeners(folder);\n var _this = this;\n Common.each(folder.__folders, function (subfolder) {\n folder.removeFolder(subfolder);\n });\n Common.defer(function () {\n _this.onResize();\n });\n },\n open: function open() {\n this.closed = false;\n },\n close: function close() {\n this.closed = true;\n },\n hide: function hide() {\n this.domElement.style.display = 'none';\n },\n show: function show() {\n this.domElement.style.display = '';\n },\n onResize: function onResize() {\n var root = this.getRoot();\n if (root.scrollable) {\n var top = dom.getOffset(root.__ul).top;\n var h = 0;\n Common.each(root.__ul.childNodes, function (node) {\n if (!(root.autoPlace && node === root.__save_row)) {\n h += dom.getHeight(node);\n }\n });\n if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {\n dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';\n } else {\n dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = 'auto';\n }\n }\n if (root.__resize_handle) {\n Common.defer(function () {\n root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';\n });\n }\n if (root.__closeButton) {\n root.__closeButton.style.width = root.width + 'px';\n }\n },\n onResizeDebounced: Common.debounce(function () {\n this.onResize();\n }, 50),\n remember: function remember() {\n if (Common.isUndefined(SAVE_DIALOGUE)) {\n SAVE_DIALOGUE = new CenteredDiv();\n SAVE_DIALOGUE.domElement.innerHTML = saveDialogContents;\n }\n if (this.parent) {\n throw new Error('You can only call remember on a top level GUI.');\n }\n var _this = this;\n Common.each(Array.prototype.slice.call(arguments), function (object) {\n if (_this.__rememberedObjects.length === 0) {\n addSaveMenu(_this);\n }\n if (_this.__rememberedObjects.indexOf(object) === -1) {\n _this.__rememberedObjects.push(object);\n }\n });\n if (this.autoPlace) {\n setWidth(this, this.width);\n }\n },\n getRoot: function getRoot() {\n var gui = this;\n while (gui.parent) {\n gui = gui.parent;\n }\n return gui;\n },\n getSaveObject: function getSaveObject() {\n var toReturn = this.load;\n toReturn.closed = this.closed;\n if (this.__rememberedObjects.length > 0) {\n toReturn.preset = this.preset;\n if (!toReturn.remembered) {\n toReturn.remembered = {};\n }\n toReturn.remembered[this.preset] = getCurrentPreset(this);\n }\n toReturn.folders = {};\n Common.each(this.__folders, function (element, key) {\n toReturn.folders[key] = element.getSaveObject();\n });\n return toReturn;\n },\n save: function save() {\n if (!this.load.remembered) {\n this.load.remembered = {};\n }\n this.load.remembered[this.preset] = getCurrentPreset(this);\n markPresetModified(this, false);\n this.saveToLocalStorageIfPossible();\n },\n saveAs: function saveAs(presetName) {\n if (!this.load.remembered) {\n this.load.remembered = {};\n this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);\n }\n this.load.remembered[presetName] = getCurrentPreset(this);\n this.preset = presetName;\n addPresetOption(this, presetName, true);\n this.saveToLocalStorageIfPossible();\n },\n revert: function revert(gui) {\n Common.each(this.__controllers, function (controller) {\n if (!this.getRoot().load.remembered) {\n controller.setValue(controller.initialValue);\n } else {\n recallSavedValue(gui || this.getRoot(), controller);\n }\n if (controller.__onFinishChange) {\n controller.__onFinishChange.call(controller, controller.getValue());\n }\n }, this);\n Common.each(this.__folders, function (folder) {\n folder.revert(folder);\n });\n if (!gui) {\n markPresetModified(this.getRoot(), false);\n }\n },\n listen: function listen(controller) {\n var init = this.__listening.length === 0;\n this.__listening.push(controller);\n if (init) {\n updateDisplays(this.__listening);\n }\n },\n updateDisplay: function updateDisplay() {\n Common.each(this.__controllers, function (controller) {\n controller.updateDisplay();\n });\n Common.each(this.__folders, function (folder) {\n folder.updateDisplay();\n });\n }\n});\nfunction addRow(gui, newDom, liBefore) {\n var li = document.createElement('li');\n if (newDom) {\n li.appendChild(newDom);\n }\n if (liBefore) {\n gui.__ul.insertBefore(li, liBefore);\n } else {\n gui.__ul.appendChild(li);\n }\n gui.onResize();\n return li;\n}\nfunction removeListeners(gui) {\n dom.unbind(window, 'resize', gui.__resizeHandler);\n if (gui.saveToLocalStorageIfPossible) {\n dom.unbind(window, 'unload', gui.saveToLocalStorageIfPossible);\n }\n}\nfunction markPresetModified(gui, modified) {\n var opt = gui.__preset_select[gui.__preset_select.selectedIndex];\n if (modified) {\n opt.innerHTML = opt.value + '*';\n } else {\n opt.innerHTML = opt.value;\n }\n}\nfunction augmentController(gui, li, controller) {\n controller.__li = li;\n controller.__gui = gui;\n Common.extend(controller, {\n options: function options(_options) {\n if (arguments.length > 1) {\n var nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: nextSibling,\n factoryArgs: [Common.toArray(arguments)]\n });\n }\n if (Common.isArray(_options) || Common.isObject(_options)) {\n var _nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: _nextSibling,\n factoryArgs: [_options]\n });\n }\n },\n name: function name(_name) {\n controller.__li.firstElementChild.firstElementChild.innerHTML = _name;\n return controller;\n },\n listen: function listen() {\n controller.__gui.listen(controller);\n return controller;\n },\n remove: function remove() {\n controller.__gui.remove(controller);\n return controller;\n }\n });\n if (controller instanceof NumberControllerSlider) {\n var box = new NumberControllerBox(controller.object, controller.property, { min: controller.__min, max: controller.__max, step: controller.__step });\n Common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function (method) {\n var pc = controller[method];\n var pb = box[method];\n controller[method] = box[method] = function () {\n var args = Array.prototype.slice.call(arguments);\n pb.apply(box, args);\n return pc.apply(controller, args);\n };\n });\n dom.addClass(li, 'has-slider');\n controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);\n } else if (controller instanceof NumberControllerBox) {\n var r = function r(returned) {\n if (Common.isNumber(controller.__min) && Common.isNumber(controller.__max)) {\n var oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;\n var wasListening = controller.__gui.__listening.indexOf(controller) > -1;\n controller.remove();\n var newController = _add(gui, controller.object, controller.property, {\n before: controller.__li.nextElementSibling,\n factoryArgs: [controller.__min, controller.__max, controller.__step]\n });\n newController.name(oldName);\n if (wasListening) newController.listen();\n return newController;\n }\n return returned;\n };\n controller.min = Common.compose(r, controller.min);\n controller.max = Common.compose(r, controller.max);\n } else if (controller instanceof BooleanController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__checkbox, 'click');\n });\n dom.bind(controller.__checkbox, 'click', function (e) {\n e.stopPropagation();\n });\n } else if (controller instanceof FunctionController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__button, 'click');\n });\n dom.bind(li, 'mouseover', function () {\n dom.addClass(controller.__button, 'hover');\n });\n dom.bind(li, 'mouseout', function () {\n dom.removeClass(controller.__button, 'hover');\n });\n } else if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = Common.compose(function (val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n controller.updateDisplay();\n }\n controller.setValue = Common.compose(function (val) {\n if (gui.getRoot().__preset_select && controller.isModified()) {\n markPresetModified(gui.getRoot(), true);\n }\n return val;\n }, controller.setValue);\n}\nfunction recallSavedValue(gui, controller) {\n var root = gui.getRoot();\n var matchedIndex = root.__rememberedObjects.indexOf(controller.object);\n if (matchedIndex !== -1) {\n var controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];\n if (controllerMap === undefined) {\n controllerMap = {};\n root.__rememberedObjectIndecesToControllers[matchedIndex] = controllerMap;\n }\n controllerMap[controller.property] = controller;\n if (root.load && root.load.remembered) {\n var presetMap = root.load.remembered;\n var preset = void 0;\n if (presetMap[gui.preset]) {\n preset = presetMap[gui.preset];\n } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {\n preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];\n } else {\n return;\n }\n if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {\n var value = preset[matchedIndex][controller.property];\n controller.initialValue = value;\n controller.setValue(value);\n }\n }\n }\n}\nfunction _add(gui, object, property, params) {\n var customObject = object.custom;\n if (!customObject && !params.custom && object[property] === undefined) {\n throw new Error('Object \"' + object + '\" has no property \"' + property + '\"');\n }\n var controller = void 0;\n if (params.color) {\n controller = new ColorController(object, property);\n } else if (customObject && property === undefined) {\n controller = object;\n } else if (!customObject && params.custom && object[property] === undefined) {\n controller = new CustomController(object, property);\n } else {\n var factoryArgs = customObject ? [property].concat(params.factoryArgs) : [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n recallSavedValue(gui, controller);\n dom.addClass(controller.domElement, 'c');\n var container = document.createElement('div');\n var name = params.custom && controller instanceof CustomController === false ? customObject ? object.domElement : new CustomController(object).domElement : document.createElement('span');\n if (!params.custom) name.innerHTML = controller.property;\n dom.addClass(name, 'property-name');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n var li = addRow(gui, container, params.before);\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, _typeof(controller.getValue()));\n }\n augmentController(gui, li, controller);\n gui.__controllers.push(controller);\n return controller;\n}\nfunction getLocalStorageHash(gui, key) {\n return document.location.href + '.' + key;\n}\nfunction addPresetOption(gui, name, setSelected) {\n var opt = document.createElement('option');\n opt.innerHTML = name;\n opt.value = name;\n gui.__preset_select.appendChild(opt);\n if (setSelected) {\n gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;\n }\n}\nfunction showHideExplain(gui, explain) {\n explain.style.display = gui.useLocalStorage ? 'block' : 'none';\n}\nfunction addSaveMenu(gui) {\n var div = gui.__save_row = document.createElement('li');\n dom.addClass(gui.domElement, 'has-save');\n gui.__ul.insertBefore(div, gui.__ul.firstChild);\n dom.addClass(div, 'save-row');\n var gears = document.createElement('span');\n gears.innerHTML = ' ';\n dom.addClass(gears, 'button gears');\n var button = document.createElement('span');\n button.innerHTML = 'Save';\n dom.addClass(button, 'button');\n dom.addClass(button, 'save');\n var button2 = document.createElement('span');\n button2.innerHTML = 'New';\n dom.addClass(button2, 'button');\n dom.addClass(button2, 'save-as');\n var button3 = document.createElement('span');\n button3.innerHTML = 'Revert';\n dom.addClass(button3, 'button');\n dom.addClass(button3, 'revert');\n var select = gui.__preset_select = document.createElement('select');\n if (gui.load && gui.load.remembered) {\n Common.each(gui.load.remembered, function (value, key) {\n addPresetOption(gui, key, key === gui.preset);\n });\n } else {\n addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);\n }\n dom.bind(select, 'change', function () {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;\n }\n gui.preset = this.value;\n });\n div.appendChild(select);\n div.appendChild(gears);\n div.appendChild(button);\n div.appendChild(button2);\n div.appendChild(button3);\n if (SUPPORTS_LOCAL_STORAGE) {\n var explain = document.getElementById('dg-local-explain');\n var localStorageCheckBox = document.getElementById('dg-local-storage');\n var saveLocally = document.getElementById('dg-save-locally');\n saveLocally.style.display = 'block';\n if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {\n localStorageCheckBox.setAttribute('checked', 'checked');\n }\n showHideExplain(gui, explain);\n dom.bind(localStorageCheckBox, 'change', function () {\n gui.useLocalStorage = !gui.useLocalStorage;\n showHideExplain(gui, explain);\n });\n }\n var newConstructorTextArea = document.getElementById('dg-new-constructor');\n dom.bind(newConstructorTextArea, 'keydown', function (e) {\n if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {\n SAVE_DIALOGUE.hide();\n }\n });\n dom.bind(gears, 'click', function () {\n newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);\n SAVE_DIALOGUE.show();\n newConstructorTextArea.focus();\n newConstructorTextArea.select();\n });\n dom.bind(button, 'click', function () {\n gui.save();\n });\n dom.bind(button2, 'click', function () {\n var presetName = prompt('Enter a new preset name.');\n if (presetName) {\n gui.saveAs(presetName);\n }\n });\n dom.bind(button3, 'click', function () {\n gui.revert();\n });\n}\nfunction addResizeHandle(gui) {\n var pmouseX = void 0;\n gui.__resize_handle = document.createElement('div');\n Common.extend(gui.__resize_handle.style, {\n width: '6px',\n marginLeft: '-3px',\n height: '200px',\n cursor: 'ew-resize',\n position: 'absolute'\n });\n function drag(e) {\n e.preventDefault();\n gui.width += pmouseX - e.clientX;\n gui.onResize();\n pmouseX = e.clientX;\n return false;\n }\n function dragStop() {\n dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.unbind(window, 'mousemove', drag);\n dom.unbind(window, 'mouseup', dragStop);\n }\n function dragStart(e) {\n e.preventDefault();\n pmouseX = e.clientX;\n dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.bind(window, 'mousemove', drag);\n dom.bind(window, 'mouseup', dragStop);\n return false;\n }\n dom.bind(gui.__resize_handle, 'mousedown', dragStart);\n dom.bind(gui.__closeButton, 'mousedown', dragStart);\n gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);\n}\nfunction setWidth(gui, w) {\n gui.domElement.style.width = w + 'px';\n if (gui.__save_row && gui.autoPlace) {\n gui.__save_row.style.width = w + 'px';\n }\n if (gui.__closeButton) {\n gui.__closeButton.style.width = w + 'px';\n }\n}\nfunction getCurrentPreset(gui, useInitialValues) {\n var toReturn = {};\n Common.each(gui.__rememberedObjects, function (val, index) {\n var savedValues = {};\n var controllerMap = gui.__rememberedObjectIndecesToControllers[index];\n Common.each(controllerMap, function (controller, property) {\n savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();\n });\n toReturn[index] = savedValues;\n });\n return toReturn;\n}\nfunction setPresetSelectIndex(gui) {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n if (gui.__preset_select[index].value === gui.preset) {\n gui.__preset_select.selectedIndex = index;\n }\n }\n}\nfunction updateDisplays(controllerArray) {\n if (controllerArray.length !== 0) {\n requestAnimationFrame$1.call(window, function () {\n updateDisplays(controllerArray);\n });\n }\n Common.each(controllerArray, function (c) {\n c.updateDisplay();\n });\n}\n\nvar color = {\n Color: Color,\n math: ColorMath,\n interpret: interpret\n};\nvar controllers = {\n Controller: Controller,\n BooleanController: BooleanController,\n OptionController: OptionController,\n StringController: StringController,\n NumberController: NumberController,\n NumberControllerBox: NumberControllerBox,\n NumberControllerSlider: NumberControllerSlider,\n FunctionController: FunctionController,\n ColorController: ColorController,\n CustomController: CustomController\n};\nvar dom$1 = { dom: dom };\nvar gui = { GUI: GUI };\nvar GUI$1 = GUI;\nvar index = {\n color: color,\n controllers: controllers,\n dom: dom$1,\n gui: gui,\n GUI: GUI$1\n};\n\nexport { color, controllers, dom$1 as dom, gui, GUI$1 as GUI };\nexport default index;\n//# sourceMappingURL=dat.gui.module.js.map\n","/**\r\n * Example of using of the dat.gui controllers.CustomController\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport { GUI, controllers } from '../../dat.gui';\r\n\r\nexport class PlayController extends controllers.CustomController {\r\n\tconstructor(object, property) {\r\n\t\tsuper(object, property);\r\n\t}\r\n\t// ...\r\n}\r\n\r\nexport class KnobController extends controllers.CustomController {\r\n\tconstructor(addButton, a, b ) {\r\n\t\tsuper({\r\n\r\n\t\t\tconstructor: function (controller) {\r\n\r\n\t\t\t\taddButton(controller, 'Knob Controller', 'Please press knob', function (value) {\r\n\r\n\t\t\t\t\talert('Knob Controller ' + (a + b));\r\n\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t});\r\n\r\n\t}\r\n\t// ...\r\n}\r\n"],"names":["___$insertStyle","css","window","style","document","createElement","setAttribute","innerHTML","head","appendChild","colorToString","color","forceCSSHex","colorFormat","__state","conversionName","toString","r","Math","round","g","b","a","h","s","toFixed","v","str","hex","length","ARR_EACH","Array","prototype","forEach","ARR_SLICE","slice","Common","extend","target","each","call","arguments","obj","keys","isObject","Object","key","isUndefined","bind","defaults","compose","toCall","args","i","apply","itr","scope","l","BREAK","_key","defer","fnc","debounce","func","threshold","callImmediately","timeout","delayed","callNow","setTimeout","toArray","undefined","isNull","_isNaN","isNaN","_x","isArray","constructor","isNumber","isString","isBoolean","isFunction","INTERPRETATIONS","read","original","test","match","parseInt","parseFloat","write","result","toReturn","interpret","family","litmus","conversions","conversion","tmpComponent","ColorMath","hsv_to_rgb","hi","floor","f","p","q","t","c","rgb_to_hsv","min","max","delta","NaN","rgb_to_hex","hex_with_component","component_from_hex","componentIndex","value","_typeof","Symbol","babelHelpers.typeof","iterator","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","get","object","property","receiver","Function","desc","getOwnPropertyDescriptor","parent","getPrototypeOf","getter","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","Color","Error","toHexString","toOriginal","defineRGBComponent","component","componentHexIndex","get$$1","space","recalculateRGB","set$$1","defineHSVComponent","recalculateHSV","COMPONENTS","Controller","initialValue","domElement","__onChange","__onFinishChange","onChange","onFinishChange","setValue","newValue","updateDisplay","getValue","isModified","EVENT_MAP","EVENT_MAP_INV","k","e","CSS_VALUE_PIXELS","cssValueToPixels","val","dom","makeSelectable","elem","selectable","onselectstart","MozUserSelect","KhtmlUserSelect","unselectable","makeFullscreen","hor","vert","vertical","horizontal","position","left","right","top","bottom","fakeEvent","eventType","pars","aux","params","className","evt","createEvent","clientX","x","clientY","y","initMouseEvent","bubbles","cancelable","clickCount","init","initKeyboardEvent","initKeyEvent","ctrlKey","altKey","shiftKey","metaKey","keyCode","charCode","initEvent","dispatchEvent","event","newBool","bool","addEventListener","attachEvent","unbind","removeEventListener","detachEvent","addClass","classes","split","indexOf","push","join","replace","removeClass","removeAttribute","index","splice","hasClass","RegExp","getWidth","getComputedStyle","width","getHeight","height","getOffset","el","offset","offsetParent","offsetLeft","offsetTop","isActive","activeElement","type","href","BooleanController","_Controller","_this2","_this","__prev","__checkbox","checked","OptionController","opts","options","__select","map","element","opt","desiredValue","selectedIndex","StringController","__input","onBlur","blur","numDecimals","NumberController","_params","__min","__max","__step","step","__impliedStep","pow","log","abs","LN10","__precision","_v","minValue","maxValue","stepValue","roundToDecimal","decimals","tenTo","NumberControllerBox","_NumberController","__truncationSuspended","prevY","attempted","onFinish","onMouseDrag","diff","onMouseUp","onMouseDown","i1","i2","o1","o2","NumberControllerSlider","__background","__foreground","onTouchStart","preventDefault","bgRect","getBoundingClientRect","touches","onTouchMove","onTouchEnd","pct","FunctionController","text","__button","fire","ColorController","__color","__temp","__selector","__saturation_field","__field_knob","__field_knob_border","__hue_knob","__hue_field","__input_textShadow","valueField","fieldDown","fieldDownH","setSV","fieldUpSV","setH","fieldUpH","fieldRect","_ref","_ref2","mismatch","flip","_flip","marginTop","vendors","linearGradient","background","vendor","cssText","hueGradient","CustomController","custom","load","url","indoc","doc","link","rel","getElementsByTagName","inject","cssContent","injected","saveDialogContents","ControllerFactory","requestAnimationFrame","callback","requestAnimationFrame$1","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","CenteredDiv","backgroundElement","body","hide","show","display","opacity","webkitTransform","layout","innerWidth","innerHeight","styleSheet","CSS_NAMESPACE","HIDE_KEY_CODE","CLOSE_BUTTON_HEIGHT","DEFAULT_DEFAULT_PRESET_NAME","SUPPORTS_LOCAL_STORAGE","localStorage","SAVE_DIALOGUE","autoPlaceVirgin","autoPlaceContainer","hideableGuis","GUI","__ul","__folders","__controllers","__rememberedObjects","__rememberedObjectIndecesToControllers","__listening","DEFAULT_WIDTH","autoPlace","preset","hideable","resizable","scrollable","useLocalStorage","getItem","getLocalStorageHash","saveToLocalStorage","titleRow","closeOnTop","getRoot","revert","name","closed","CLASS_CLOSED","onResize","__closeButton","TEXT_OPEN","TEXT_CLOSED","setItem","CLASS_MAIN","savedGui","JSON","parse","CLASS_CLOSE_BUTTON","CLASS_CLOSE_TOP","insertBefore","childNodes","CLASS_CLOSE_BOTTOM","titleRowName","createTextNode","addRow","onClickTitle","CLASS_AUTO_PLACE_CONTAINER","CLASS_AUTO_PLACE","__resizeHandler","onResizeDebounced","stringify","getSaveObject","saveToLocalStorageIfPossible","resetWidth","root","toggleHide","gui","CLASS_CONTROLLER_ROW","CLASS_TOO_TALL","CLASS_DRAG","_keydownHandler","which","add","_add","addColor","addCustomController","remove","controller","removeChild","__li","destroy","subfolder","removeFolder","addFolder","newGuiParams","folders","li","folder","parentElement","open","close","node","__save_row","__resize_handle","offsetHeight","remember","remembered","getCurrentPreset","save","saveAs","presetName","listen","newDom","liBefore","removeListeners","markPresetModified","modified","__preset_select","augmentController","__gui","_options","nextSibling","nextElementSibling","_nextSibling","_name","firstElementChild","box","method","pc","pb","returned","oldName","wasListening","newController","stopPropagation","borderLeftColor","recallSavedValue","matchedIndex","controllerMap","presetMap","customObject","factoryArgs","concat","before","container","location","addPresetOption","setSelected","showHideExplain","explain","addSaveMenu","div","firstChild","gears","button","button2","button3","select","getElementById","localStorageCheckBox","saveLocally","newConstructorTextArea","focus","prompt","addResizeHandle","pmouseX","drag","dragStop","dragStart","setWidth","w","useInitialValues","savedValues","setPresetSelectIndex","updateDisplays","controllerArray","controllers","PlayController","KnobController","addButton"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"customcontrollers.js","sources":["../../../dat.gui/build/dat.gui.module.js","../index.js"],"sourcesContent":["/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\nfunction ___$insertStyle(css) {\n if (!css) {\n return;\n }\n if (typeof window === 'undefined') {\n return;\n }\n\n var style = document.createElement('style');\n\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n document.head.appendChild(style);\n\n return css;\n}\n\nfunction colorToString (color, forceCSSHex) {\n var colorFormat = color.__state.conversionName.toString();\n var r = Math.round(color.r);\n var g = Math.round(color.g);\n var b = Math.round(color.b);\n var a = color.a;\n var h = Math.round(color.h);\n var s = color.s.toFixed(1);\n var v = color.v.toFixed(1);\n if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') {\n var str = color.hex.toString(16);\n while (str.length < 6) {\n str = '0' + str;\n }\n return '#' + str;\n } else if (colorFormat === 'CSS_RGB') {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else if (colorFormat === 'CSS_RGBA') {\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n } else if (colorFormat === 'HEX') {\n return '0x' + color.hex.toString(16);\n } else if (colorFormat === 'RGB_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ']';\n } else if (colorFormat === 'RGBA_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ',' + a + ']';\n } else if (colorFormat === 'RGB_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + '}';\n } else if (colorFormat === 'RGBA_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}';\n } else if (colorFormat === 'HSV_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + '}';\n } else if (colorFormat === 'HSVA_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}';\n }\n return 'unknown format';\n}\n\nvar ARR_EACH = Array.prototype.forEach;\nvar ARR_SLICE = Array.prototype.slice;\nvar Common = {\n BREAK: {},\n extend: function extend(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (!this.isUndefined(obj[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n defaults: function defaults(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (this.isUndefined(target[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n compose: function compose() {\n var toCall = ARR_SLICE.call(arguments);\n return function () {\n var args = ARR_SLICE.call(arguments);\n for (var i = toCall.length - 1; i >= 0; i--) {\n args = [toCall[i].apply(this, args)];\n }\n return args[0];\n };\n },\n each: function each(obj, itr, scope) {\n if (!obj) {\n return;\n }\n if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) {\n obj.forEach(itr, scope);\n } else if (obj.length === obj.length + 0) {\n var key = void 0;\n var l = void 0;\n for (key = 0, l = obj.length; key < l; key++) {\n if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) {\n return;\n }\n }\n } else {\n for (var _key in obj) {\n if (itr.call(scope, obj[_key], _key) === this.BREAK) {\n return;\n }\n }\n }\n },\n defer: function defer(fnc) {\n setTimeout(fnc, 0);\n },\n debounce: function debounce(func, threshold, callImmediately) {\n var timeout = void 0;\n return function () {\n var obj = this;\n var args = arguments;\n function delayed() {\n timeout = null;\n if (!callImmediately) func.apply(obj, args);\n }\n var callNow = callImmediately || !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(delayed, threshold);\n if (callNow) {\n func.apply(obj, args);\n }\n };\n },\n toArray: function toArray(obj) {\n if (obj.toArray) return obj.toArray();\n return ARR_SLICE.call(obj);\n },\n isUndefined: function isUndefined(obj) {\n return obj === undefined;\n },\n isNull: function isNull(obj) {\n return obj === null;\n },\n isNaN: function (_isNaN) {\n function isNaN(_x) {\n return _isNaN.apply(this, arguments);\n }\n isNaN.toString = function () {\n return _isNaN.toString();\n };\n return isNaN;\n }(function (obj) {\n return isNaN(obj);\n }),\n isArray: Array.isArray || function (obj) {\n return obj.constructor === Array;\n },\n isObject: function isObject(obj) {\n return obj === Object(obj);\n },\n isNumber: function isNumber(obj) {\n return obj === obj + 0;\n },\n isString: function isString(obj) {\n return obj === obj + '';\n },\n isBoolean: function isBoolean(obj) {\n return obj === false || obj === true;\n },\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.call(obj) === '[object Function]';\n }\n};\n\nvar INTERPRETATIONS = [\n{\n litmus: Common.isString,\n conversions: {\n THREE_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0)\n };\n },\n write: colorToString\n },\n SIX_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9]{6})$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString(), 0)\n };\n },\n write: colorToString\n },\n CSS_RGB: {\n read: function read(original) {\n var test = original.match(/^rgb\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3])\n };\n },\n write: colorToString\n },\n CSS_RGBA: {\n read: function read(original) {\n var test = original.match(/^rgba\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3]),\n a: parseFloat(test[4])\n };\n },\n write: colorToString\n }\n }\n},\n{\n litmus: Common.isNumber,\n conversions: {\n HEX: {\n read: function read(original) {\n return {\n space: 'HEX',\n hex: original,\n conversionName: 'HEX'\n };\n },\n write: function write(color) {\n return color.hex;\n }\n }\n }\n},\n{\n litmus: Common.isArray,\n conversions: {\n RGB_ARRAY: {\n read: function read(original) {\n if (original.length !== 3) {\n return false;\n }\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b];\n }\n },\n RGBA_ARRAY: {\n read: function read(original) {\n if (original.length !== 4) return false;\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2],\n a: original[3]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b, color.a];\n }\n }\n }\n},\n{\n litmus: Common.isObject,\n conversions: {\n RGBA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b,\n a: color.a\n };\n }\n },\n RGB_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b\n };\n }\n },\n HSVA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v,\n a: color.a\n };\n }\n },\n HSV_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v\n };\n }\n }\n }\n}];\nvar result = void 0;\nvar toReturn = void 0;\nvar interpret = function interpret() {\n toReturn = false;\n var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0];\n Common.each(INTERPRETATIONS, function (family) {\n if (family.litmus(original)) {\n Common.each(family.conversions, function (conversion, conversionName) {\n result = conversion.read(original);\n if (toReturn === false && result !== false) {\n toReturn = result;\n result.conversionName = conversionName;\n result.conversion = conversion;\n return Common.BREAK;\n }\n });\n return Common.BREAK;\n }\n });\n return toReturn;\n};\n\nvar tmpComponent = void 0;\nvar ColorMath = {\n hsv_to_rgb: function hsv_to_rgb(h, s, v) {\n var hi = Math.floor(h / 60) % 6;\n var f = h / 60 - Math.floor(h / 60);\n var p = v * (1.0 - s);\n var q = v * (1.0 - f * s);\n var t = v * (1.0 - (1.0 - f) * s);\n var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi];\n return {\n r: c[0] * 255,\n g: c[1] * 255,\n b: c[2] * 255\n };\n },\n rgb_to_hsv: function rgb_to_hsv(r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var h = void 0;\n var s = void 0;\n if (max !== 0) {\n s = delta / max;\n } else {\n return {\n h: NaN,\n s: 0,\n v: 0\n };\n }\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n h /= 6;\n if (h < 0) {\n h += 1;\n }\n return {\n h: h * 360,\n s: s,\n v: max / 255\n };\n },\n rgb_to_hex: function rgb_to_hex(r, g, b) {\n var hex = this.hex_with_component(0, 2, r);\n hex = this.hex_with_component(hex, 1, g);\n hex = this.hex_with_component(hex, 0, b);\n return hex;\n },\n component_from_hex: function component_from_hex(hex, componentIndex) {\n return hex >> componentIndex * 8 & 0xFF;\n },\n hex_with_component: function hex_with_component(hex, componentIndex, value) {\n return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent);\n }\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar Color = function () {\n function Color() {\n classCallCheck(this, Color);\n this.__state = interpret.apply(this, arguments);\n if (this.__state === false) {\n throw new Error('Failed to interpret color arguments');\n }\n this.__state.a = this.__state.a || 1;\n }\n createClass(Color, [{\n key: 'toString',\n value: function toString() {\n return colorToString(this);\n }\n }, {\n key: 'toHexString',\n value: function toHexString() {\n return colorToString(this, true);\n }\n }, {\n key: 'toOriginal',\n value: function toOriginal() {\n return this.__state.conversion.write(this);\n }\n }]);\n return Color;\n}();\nfunction defineRGBComponent(target, component, componentHexIndex) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'RGB') {\n return this.__state[component];\n }\n Color.recalculateRGB(this, component, componentHexIndex);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'RGB') {\n Color.recalculateRGB(this, component, componentHexIndex);\n this.__state.space = 'RGB';\n }\n this.__state[component] = v;\n }\n });\n}\nfunction defineHSVComponent(target, component) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'HSV') {\n return this.__state[component];\n }\n Color.recalculateHSV(this);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'HSV') {\n Color.recalculateHSV(this);\n this.__state.space = 'HSV';\n }\n this.__state[component] = v;\n }\n });\n}\nColor.recalculateRGB = function (color, component, componentHexIndex) {\n if (color.__state.space === 'HEX') {\n color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex);\n } else if (color.__state.space === 'HSV') {\n Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v));\n } else {\n throw new Error('Corrupted color state');\n }\n};\nColor.recalculateHSV = function (color) {\n var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b);\n Common.extend(color.__state, {\n s: result.s,\n v: result.v\n });\n if (!Common.isNaN(result.h)) {\n color.__state.h = result.h;\n } else if (Common.isUndefined(color.__state.h)) {\n color.__state.h = 0;\n }\n};\nColor.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];\ndefineRGBComponent(Color.prototype, 'r', 2);\ndefineRGBComponent(Color.prototype, 'g', 1);\ndefineRGBComponent(Color.prototype, 'b', 0);\ndefineHSVComponent(Color.prototype, 'h');\ndefineHSVComponent(Color.prototype, 's');\ndefineHSVComponent(Color.prototype, 'v');\nObject.defineProperty(Color.prototype, 'a', {\n get: function get$$1() {\n return this.__state.a;\n },\n set: function set$$1(v) {\n this.__state.a = v;\n }\n});\nObject.defineProperty(Color.prototype, 'hex', {\n get: function get$$1() {\n if (!this.__state.space !== 'HEX') {\n this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b);\n }\n return this.__state.hex;\n },\n set: function set$$1(v) {\n this.__state.space = 'HEX';\n this.__state.hex = v;\n }\n});\n\nvar Controller = function () {\n function Controller(object, property) {\n classCallCheck(this, Controller);\n this.initialValue = object[property];\n this.domElement = document.createElement('div');\n this.object = object;\n this.property = property;\n this.__onChange = undefined;\n this.__onFinishChange = undefined;\n }\n createClass(Controller, [{\n key: 'onChange',\n value: function onChange(fnc) {\n this.__onChange = fnc;\n return this;\n }\n }, {\n key: 'onFinishChange',\n value: function onFinishChange(fnc) {\n this.__onFinishChange = fnc;\n return this;\n }\n }, {\n key: 'setValue',\n value: function setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.object[this.property];\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n return this;\n }\n }, {\n key: 'isModified',\n value: function isModified() {\n return this.initialValue !== this.getValue();\n }\n }]);\n return Controller;\n}();\n\nvar EVENT_MAP = {\n HTMLEvents: ['change'],\n MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],\n KeyboardEvents: ['keydown']\n};\nvar EVENT_MAP_INV = {};\nCommon.each(EVENT_MAP, function (v, k) {\n Common.each(v, function (e) {\n EVENT_MAP_INV[e] = k;\n });\n});\nvar CSS_VALUE_PIXELS = /(\\d+(\\.\\d+)?)px/;\nfunction cssValueToPixels(val) {\n if (val === '0' || Common.isUndefined(val)) {\n return 0;\n }\n var match = val.match(CSS_VALUE_PIXELS);\n if (!Common.isNull(match)) {\n return parseFloat(match[1]);\n }\n return 0;\n}\nvar dom = {\n makeSelectable: function makeSelectable(elem, selectable) {\n if (elem === undefined || elem.style === undefined) return;\n elem.onselectstart = selectable ? function () {\n return false;\n } : function () {};\n elem.style.MozUserSelect = selectable ? 'auto' : 'none';\n elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';\n elem.unselectable = selectable ? 'on' : 'off';\n },\n makeFullscreen: function makeFullscreen(elem, hor, vert) {\n var vertical = vert;\n var horizontal = hor;\n if (Common.isUndefined(horizontal)) {\n horizontal = true;\n }\n if (Common.isUndefined(vertical)) {\n vertical = true;\n }\n elem.style.position = 'absolute';\n if (horizontal) {\n elem.style.left = 0;\n elem.style.right = 0;\n }\n if (vertical) {\n elem.style.top = 0;\n elem.style.bottom = 0;\n }\n },\n fakeEvent: function fakeEvent(elem, eventType, pars, aux) {\n var params = pars || {};\n var className = EVENT_MAP_INV[eventType];\n if (!className) {\n throw new Error('Event type ' + eventType + ' not supported.');\n }\n var evt = document.createEvent(className);\n switch (className) {\n case 'MouseEvents':\n {\n var clientX = params.x || params.clientX || 0;\n var clientY = params.y || params.clientY || 0;\n evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0,\n 0,\n clientX,\n clientY,\n false, false, false, false, 0, null);\n break;\n }\n case 'KeyboardEvents':\n {\n var init = evt.initKeyboardEvent || evt.initKeyEvent;\n Common.defaults(params, {\n cancelable: true,\n ctrlKey: false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n keyCode: undefined,\n charCode: undefined\n });\n init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode);\n break;\n }\n default:\n {\n evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);\n break;\n }\n }\n Common.defaults(evt, aux);\n elem.dispatchEvent(evt);\n },\n bind: function bind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.addEventListener) {\n elem.addEventListener(event, func, bool);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + event, func);\n }\n return dom;\n },\n unbind: function unbind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.removeEventListener) {\n elem.removeEventListener(event, func, bool);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + event, func);\n }\n return dom;\n },\n addClass: function addClass(elem, className) {\n if (elem.className === undefined) {\n elem.className = className;\n } else if (elem.className !== className) {\n var classes = elem.className.split(/ +/);\n if (classes.indexOf(className) === -1) {\n classes.push(className);\n elem.className = classes.join(' ').replace(/^\\s+/, '').replace(/\\s+$/, '');\n }\n }\n return dom;\n },\n removeClass: function removeClass(elem, className) {\n if (className) {\n if (elem.className === className) {\n elem.removeAttribute('class');\n } else {\n var classes = elem.className.split(/ +/);\n var index = classes.indexOf(className);\n if (index !== -1) {\n classes.splice(index, 1);\n elem.className = classes.join(' ');\n }\n }\n } else {\n elem.className = undefined;\n }\n return dom;\n },\n hasClass: function hasClass(elem, className) {\n return new RegExp('(?:^|\\\\s+)' + className + '(?:\\\\s+|$)').test(elem.className) || false;\n },\n getWidth: function getWidth(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width);\n },\n getHeight: function getHeight(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height);\n },\n getOffset: function getOffset(el) {\n var elem = el;\n var offset = { left: 0, top: 0 };\n if (elem.offsetParent) {\n do {\n offset.left += elem.offsetLeft;\n offset.top += elem.offsetTop;\n elem = elem.offsetParent;\n } while (elem);\n }\n return offset;\n },\n isActive: function isActive(elem) {\n return elem === document.activeElement && (elem.type || elem.href);\n }\n};\n\nvar BooleanController = function (_Controller) {\n inherits(BooleanController, _Controller);\n function BooleanController(object, property) {\n classCallCheck(this, BooleanController);\n var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property));\n var _this = _this2;\n _this2.__prev = _this2.getValue();\n _this2.__checkbox = document.createElement('input');\n _this2.__checkbox.setAttribute('type', 'checkbox');\n function onChange() {\n _this.setValue(!_this.__prev);\n }\n dom.bind(_this2.__checkbox, 'change', onChange, false);\n _this2.domElement.appendChild(_this2.__checkbox);\n _this2.updateDisplay();\n return _this2;\n }\n createClass(BooleanController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n this.__prev = this.getValue();\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (this.getValue() === true) {\n this.__checkbox.setAttribute('checked', 'checked');\n this.__checkbox.checked = true;\n this.__prev = true;\n } else {\n this.__checkbox.checked = false;\n this.__prev = false;\n }\n return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return BooleanController;\n}(Controller);\n\nvar OptionController = function (_Controller) {\n inherits(OptionController, _Controller);\n function OptionController(object, property, opts) {\n classCallCheck(this, OptionController);\n var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property));\n var options = opts;\n var _this = _this2;\n _this2.__select = document.createElement('select');\n if (Common.isArray(options)) {\n var map = {};\n Common.each(options, function (element) {\n map[element] = element;\n });\n options = map;\n }\n Common.each(options, function (value, key) {\n var opt = document.createElement('option');\n opt.innerHTML = key;\n opt.setAttribute('value', value);\n _this.__select.appendChild(opt);\n });\n _this2.updateDisplay();\n dom.bind(_this2.__select, 'change', function () {\n var desiredValue = this.options[this.selectedIndex].value;\n _this.setValue(desiredValue);\n });\n _this2.domElement.appendChild(_this2.__select);\n return _this2;\n }\n createClass(OptionController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (dom.isActive(this.__select)) return this;\n this.__select.value = this.getValue();\n return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return OptionController;\n}(Controller);\n\nvar StringController = function (_Controller) {\n inherits(StringController, _Controller);\n function StringController(object, property) {\n classCallCheck(this, StringController);\n var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property));\n var _this = _this2;\n function onChange() {\n _this.setValue(_this.__input.value);\n }\n function onBlur() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'keyup', onChange);\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n this.blur();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(StringController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (!dom.isActive(this.__input)) {\n this.__input.value = this.getValue();\n }\n return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return StringController;\n}(Controller);\n\nfunction numDecimals(x) {\n var _x = x.toString();\n if (_x.indexOf('.') > -1) {\n return _x.length - _x.indexOf('.') - 1;\n }\n return 0;\n}\nvar NumberController = function (_Controller) {\n inherits(NumberController, _Controller);\n function NumberController(object, property, params) {\n classCallCheck(this, NumberController);\n var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property));\n var _params = params || {};\n _this.__min = _params.min;\n _this.__max = _params.max;\n _this.__step = _params.step;\n if (Common.isUndefined(_this.__step)) {\n if (_this.initialValue === 0) {\n _this.__impliedStep = 1;\n } else {\n _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10;\n }\n } else {\n _this.__impliedStep = _this.__step;\n }\n _this.__precision = numDecimals(_this.__impliedStep);\n return _this;\n }\n createClass(NumberController, [{\n key: 'setValue',\n value: function setValue(v) {\n var _v = v;\n if (this.__min !== undefined && _v < this.__min) {\n _v = this.__min;\n } else if (this.__max !== undefined && _v > this.__max) {\n _v = this.__max;\n }\n if (this.__step !== undefined && _v % this.__step !== 0) {\n _v = Math.round(_v / this.__step) * this.__step;\n }\n return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v);\n }\n }, {\n key: 'min',\n value: function min(minValue) {\n this.__min = minValue;\n return this;\n }\n }, {\n key: 'max',\n value: function max(maxValue) {\n this.__max = maxValue;\n return this;\n }\n }, {\n key: 'step',\n value: function step(stepValue) {\n this.__step = stepValue;\n this.__impliedStep = stepValue;\n this.__precision = numDecimals(stepValue);\n return this;\n }\n }]);\n return NumberController;\n}(Controller);\n\nfunction roundToDecimal(value, decimals) {\n var tenTo = Math.pow(10, decimals);\n return Math.round(value * tenTo) / tenTo;\n}\nvar NumberControllerBox = function (_NumberController) {\n inherits(NumberControllerBox, _NumberController);\n function NumberControllerBox(object, property, params) {\n classCallCheck(this, NumberControllerBox);\n var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params));\n _this2.__truncationSuspended = false;\n var _this = _this2;\n var prevY = void 0;\n function onChange() {\n var attempted = parseFloat(_this.__input.value);\n if (!Common.isNaN(attempted)) {\n _this.setValue(attempted);\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onBlur() {\n onFinish();\n }\n function onMouseDrag(e) {\n var diff = prevY - e.clientY;\n _this.setValue(_this.getValue() + diff * _this.__impliedStep);\n prevY = e.clientY;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n onFinish();\n }\n function onMouseDown(e) {\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n prevY = e.clientY;\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'mousedown', onMouseDown);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n _this.__truncationSuspended = true;\n this.blur();\n _this.__truncationSuspended = false;\n onFinish();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(NumberControllerBox, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);\n return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerBox;\n}(NumberController);\n\nfunction map(v, i1, i2, o1, o2) {\n return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));\n}\nvar NumberControllerSlider = function (_NumberController) {\n inherits(NumberControllerSlider, _NumberController);\n function NumberControllerSlider(object, property, min, max, step) {\n classCallCheck(this, NumberControllerSlider);\n var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step }));\n var _this = _this2;\n _this2.__background = document.createElement('div');\n _this2.__foreground = document.createElement('div');\n dom.bind(_this2.__background, 'mousedown', onMouseDown);\n dom.bind(_this2.__background, 'touchstart', onTouchStart);\n dom.addClass(_this2.__background, 'slider');\n dom.addClass(_this2.__foreground, 'slider-fg');\n function onMouseDown(e) {\n document.activeElement.blur();\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n onMouseDrag(e);\n }\n function onMouseDrag(e) {\n e.preventDefault();\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n return false;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onTouchStart(e) {\n if (e.touches.length !== 1) {\n return;\n }\n dom.bind(window, 'touchmove', onTouchMove);\n dom.bind(window, 'touchend', onTouchEnd);\n onTouchMove(e);\n }\n function onTouchMove(e) {\n var clientX = e.touches[0].clientX;\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n }\n function onTouchEnd() {\n dom.unbind(window, 'touchmove', onTouchMove);\n dom.unbind(window, 'touchend', onTouchEnd);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.updateDisplay();\n _this2.__background.appendChild(_this2.__foreground);\n _this2.domElement.appendChild(_this2.__background);\n return _this2;\n }\n createClass(NumberControllerSlider, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var pct = (this.getValue() - this.__min) / (this.__max - this.__min);\n this.__foreground.style.width = pct * 100 + '%';\n return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerSlider;\n}(NumberController);\n\nvar FunctionController = function (_Controller) {\n inherits(FunctionController, _Controller);\n function FunctionController(object, property, text) {\n classCallCheck(this, FunctionController);\n var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property));\n var _this = _this2;\n _this2.__button = document.createElement('div');\n _this2.__button.innerHTML = text === undefined ? 'Fire' : text;\n dom.bind(_this2.__button, 'click', function (e) {\n e.preventDefault();\n _this.fire();\n return false;\n });\n dom.addClass(_this2.__button, 'button');\n _this2.domElement.appendChild(_this2.__button);\n return _this2;\n }\n createClass(FunctionController, [{\n key: 'fire',\n value: function fire() {\n if (this.__onChange) {\n this.__onChange.call(this);\n }\n this.getValue().call(this.object);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n }\n }]);\n return FunctionController;\n}(Controller);\n\nvar ColorController = function (_Controller) {\n inherits(ColorController, _Controller);\n function ColorController(object, property) {\n classCallCheck(this, ColorController);\n var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property));\n _this2.__color = new Color(_this2.getValue());\n _this2.__temp = new Color(0);\n var _this = _this2;\n _this2.domElement = document.createElement('div');\n dom.makeSelectable(_this2.domElement, false);\n _this2.__selector = document.createElement('div');\n _this2.__selector.className = 'selector';\n _this2.__saturation_field = document.createElement('div');\n _this2.__saturation_field.className = 'saturation-field';\n _this2.__field_knob = document.createElement('div');\n _this2.__field_knob.className = 'field-knob';\n _this2.__field_knob_border = '2px solid ';\n _this2.__hue_knob = document.createElement('div');\n _this2.__hue_knob.className = 'hue-knob';\n _this2.__hue_field = document.createElement('div');\n _this2.__hue_field.className = 'hue-field';\n _this2.__input = document.createElement('input');\n _this2.__input.type = 'text';\n _this2.__input_textShadow = '0 1px 1px ';\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n onBlur.call(this);\n }\n });\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__selector, 'mousedown', function () {\n dom.addClass(this, 'drag').bind(window, 'mouseup', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n dom.bind(_this2.__selector, 'touchstart', function () {\n dom.addClass(this, 'drag').bind(window, 'touchend', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n var valueField = document.createElement('div');\n Common.extend(_this2.__selector.style, {\n width: '122px',\n height: '102px',\n padding: '3px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n Common.extend(_this2.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n Common.extend(_this2.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n Common.extend(_this2.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n cursor: 'pointer'\n });\n Common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n Common.extend(_this2.__hue_field.style, {\n width: '15px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n right: '3px'\n });\n hueGradient(_this2.__hue_field);\n Common.extend(_this2.__input.style, {\n outline: 'none',\n textAlign: 'center',\n color: '#fff',\n border: 0,\n fontWeight: 'bold',\n textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n dom.bind(_this2.__saturation_field, 'mousedown', fieldDown);\n dom.bind(_this2.__saturation_field, 'touchstart', fieldDown);\n dom.bind(_this2.__field_knob, 'mousedown', fieldDown);\n dom.bind(_this2.__field_knob, 'touchstart', fieldDown);\n dom.bind(_this2.__hue_field, 'mousedown', fieldDownH);\n dom.bind(_this2.__hue_field, 'touchstart', fieldDownH);\n function fieldDown(e) {\n setSV(e);\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'touchmove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n dom.bind(window, 'touchend', fieldUpSV);\n }\n function fieldDownH(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'touchmove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n dom.bind(window, 'touchend', fieldUpH);\n }\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'touchmove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n dom.unbind(window, 'touchend', fieldUpSV);\n onFinish();\n }\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'touchmove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n dom.unbind(window, 'touchend', fieldUpH);\n onFinish();\n }\n function onBlur() {\n var i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n _this2.__saturation_field.appendChild(valueField);\n _this2.__selector.appendChild(_this2.__field_knob);\n _this2.__selector.appendChild(_this2.__saturation_field);\n _this2.__selector.appendChild(_this2.__hue_field);\n _this2.__hue_field.appendChild(_this2.__hue_knob);\n _this2.domElement.appendChild(_this2.__input);\n _this2.domElement.appendChild(_this2.__selector);\n _this2.updateDisplay();\n function setSV(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__saturation_field.getBoundingClientRect();\n var _ref = e.touches && e.touches[0] || e,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n _this.__color.v = v;\n _this.__color.s = s;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n function setH(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__hue_field.getBoundingClientRect();\n var _ref2 = e.touches && e.touches[0] || e,\n clientY = _ref2.clientY;\n var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n _this.__color.h = h * 360;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n return _this2;\n }\n createClass(ColorController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var i = interpret(this.getValue());\n if (i !== false) {\n var mismatch = false;\n Common.each(Color.COMPONENTS, function (component) {\n if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {};\n }\n }, this);\n if (mismatch) {\n Common.extend(this.__color.__state, i);\n }\n }\n Common.extend(this.__temp.__state, this.__color.__state);\n this.__temp.a = 1;\n var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0;\n var _flip = 255 - flip;\n Common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n this.__temp.s = 1;\n this.__temp.v = 1;\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n this.__input.value = this.__color.toString();\n Common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n }\n }]);\n return ColorController;\n}(Controller);\nvar vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n Common.each(vendors, function (vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nvar ControllerFactory = function ControllerFactory(object, property) {\n var initialValue = object[property];\n if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) {\n return new OptionController(object, property, arguments[2]);\n }\n if (Common.isNumber(initialValue)) {\n if (Common.isNumber(arguments[2]) && Common.isNumber(arguments[3])) {\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]);\n }\n return new NumberControllerSlider(object, property, arguments[2], arguments[3]);\n }\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3], step: arguments[4] });\n }\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });\n }\n if (Common.isString(initialValue)) {\n return new StringController(object, property);\n }\n if (Common.isFunction(initialValue)) {\n return new FunctionController(object, property, '');\n }\n if (Common.isBoolean(initialValue)) {\n return new BooleanController(object, property);\n }\n return null;\n};\n\nvar CustomController = function (_Controller) {\n inherits(CustomController, _Controller);\n function CustomController(object, property) {\n classCallCheck(this, CustomController);\n var _this = possibleConstructorReturn(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, object, property));\n _this.arguments = {\n object: object, property: property, opts: Array.prototype.slice.call(arguments, 2)\n };\n if (object.property) _this.property = object.property();\n return _this;\n }\n return CustomController;\n}(Controller);\n\nvar css = {\n load: function load(url, indoc) {\n var doc = indoc || document;\n var link = doc.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = url;\n doc.getElementsByTagName('head')[0].appendChild(link);\n },\n inject: function inject(cssContent, indoc) {\n var doc = indoc || document;\n var injected = document.createElement('style');\n injected.type = 'text/css';\n injected.innerHTML = cssContent;\n var head = doc.getElementsByTagName('head')[0];\n try {\n head.appendChild(injected);\n } catch (e) {\n }\n }\n};\n\nvar saveDialogContents = \"
\\n\\n Here's the new load parameter for your GUI's constructor:\\n\\n \\n\\n
\\n\\n Automatically save\\n values to localStorage on exit.\\n\\n
The values saved to localStorage will\\n override those passed to dat.GUI's constructor. This makes it\\n easier to work incrementally, but localStorage is fragile,\\n and your friends may not see the same values you do.\\n\\n
\\n\\n
\\n\\n
\";\n\nfunction requestAnimationFrame(callback) {\n setTimeout(callback, 1000 / 60);\n}\nvar requestAnimationFrame$1 = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || requestAnimationFrame;\n\nvar CenteredDiv = function () {\n function CenteredDiv() {\n classCallCheck(this, CenteredDiv);\n this.backgroundElement = document.createElement('div');\n Common.extend(this.backgroundElement.style, {\n backgroundColor: 'rgba(0,0,0,0.8)',\n top: 0,\n left: 0,\n display: 'none',\n zIndex: '1000',\n opacity: 0,\n WebkitTransition: 'opacity 0.2s linear',\n transition: 'opacity 0.2s linear'\n });\n dom.makeFullscreen(this.backgroundElement);\n this.backgroundElement.style.position = 'fixed';\n this.domElement = document.createElement('div');\n Common.extend(this.domElement.style, {\n position: 'fixed',\n display: 'none',\n zIndex: '1001',\n opacity: 0,\n WebkitTransition: '-webkit-transform 0.2s ease-out, opacity 0.2s linear',\n transition: 'transform 0.2s ease-out, opacity 0.2s linear'\n });\n document.body.appendChild(this.backgroundElement);\n document.body.appendChild(this.domElement);\n var _this = this;\n dom.bind(this.backgroundElement, 'click', function () {\n _this.hide();\n });\n }\n createClass(CenteredDiv, [{\n key: 'show',\n value: function show() {\n var _this = this;\n this.backgroundElement.style.display = 'block';\n this.domElement.style.display = 'block';\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n this.layout();\n Common.defer(function () {\n _this.backgroundElement.style.opacity = 1;\n _this.domElement.style.opacity = 1;\n _this.domElement.style.webkitTransform = 'scale(1)';\n });\n }\n }, {\n key: 'hide',\n value: function hide() {\n var _this = this;\n var hide = function hide() {\n _this.domElement.style.display = 'none';\n _this.backgroundElement.style.display = 'none';\n dom.unbind(_this.domElement, 'webkitTransitionEnd', hide);\n dom.unbind(_this.domElement, 'transitionend', hide);\n dom.unbind(_this.domElement, 'oTransitionEnd', hide);\n };\n dom.bind(this.domElement, 'webkitTransitionEnd', hide);\n dom.bind(this.domElement, 'transitionend', hide);\n dom.bind(this.domElement, 'oTransitionEnd', hide);\n this.backgroundElement.style.opacity = 0;\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.domElement.style.left = window.innerWidth / 2 - dom.getWidth(this.domElement) / 2 + 'px';\n this.domElement.style.top = window.innerHeight / 2 - dom.getHeight(this.domElement) / 2 + 'px';\n }\n }]);\n return CenteredDiv;\n}();\n\nvar styleSheet = ___$insertStyle(\".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\\n\");\n\ncss.inject(styleSheet);\nvar CSS_NAMESPACE = 'dg';\nvar HIDE_KEY_CODE = 72;\nvar CLOSE_BUTTON_HEIGHT = 20;\nvar DEFAULT_DEFAULT_PRESET_NAME = 'Default';\nvar SUPPORTS_LOCAL_STORAGE = function () {\n try {\n return !!window.localStorage;\n } catch (e) {\n return false;\n }\n}();\nvar SAVE_DIALOGUE = void 0;\nvar autoPlaceVirgin = true;\nvar autoPlaceContainer = void 0;\nvar hide = false;\nvar hideableGuis = [];\nvar GUI = function GUI(pars) {\n var _this = this;\n var params = pars || {};\n this.domElement = document.createElement('div');\n this.__ul = document.createElement('ul');\n this.domElement.appendChild(this.__ul);\n dom.addClass(this.domElement, CSS_NAMESPACE);\n this.__folders = {};\n this.__controllers = [];\n this.__rememberedObjects = [];\n this.__rememberedObjectIndecesToControllers = [];\n this.__listening = [];\n params = Common.defaults(params, {\n closeOnTop: false,\n autoPlace: true,\n width: GUI.DEFAULT_WIDTH\n });\n params = Common.defaults(params, {\n resizable: params.autoPlace,\n hideable: params.autoPlace\n });\n if (!Common.isUndefined(params.load)) {\n if (params.preset) {\n params.load.preset = params.preset;\n }\n } else {\n params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };\n }\n if (Common.isUndefined(params.parent) && params.hideable) {\n hideableGuis.push(this);\n }\n params.resizable = Common.isUndefined(params.parent) && params.resizable;\n if (params.autoPlace && Common.isUndefined(params.scrollable)) {\n params.scrollable = true;\n }\n var useLocalStorage = SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true';\n var saveToLocalStorage = void 0;\n var titleRow = void 0;\n Object.defineProperties(this,\n {\n parent: {\n get: function get$$1() {\n return params.parent;\n }\n },\n scrollable: {\n get: function get$$1() {\n return params.scrollable;\n }\n },\n autoPlace: {\n get: function get$$1() {\n return params.autoPlace;\n }\n },\n closeOnTop: {\n get: function get$$1() {\n return params.closeOnTop;\n }\n },\n preset: {\n get: function get$$1() {\n if (_this.parent) {\n return _this.getRoot().preset;\n }\n return params.load.preset;\n },\n set: function set$$1(v) {\n if (_this.parent) {\n _this.getRoot().preset = v;\n } else {\n params.load.preset = v;\n }\n setPresetSelectIndex(this);\n _this.revert();\n }\n },\n width: {\n get: function get$$1() {\n return params.width;\n },\n set: function set$$1(v) {\n params.width = v;\n setWidth(_this, v);\n }\n },\n name: {\n get: function get$$1() {\n return params.name;\n },\n set: function set$$1(v) {\n params.name = v;\n if (titleRow) {\n titleRow.innerHTML = params.name;\n }\n }\n },\n closed: {\n get: function get$$1() {\n return params.closed;\n },\n set: function set$$1(v) {\n params.closed = v;\n if (params.closed) {\n dom.addClass(_this.__ul, GUI.CLASS_CLOSED);\n } else {\n dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);\n }\n this.onResize();\n if (_this.__closeButton) {\n _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;\n }\n }\n },\n load: {\n get: function get$$1() {\n return params.load;\n }\n },\n useLocalStorage: {\n get: function get$$1() {\n return useLocalStorage;\n },\n set: function set$$1(bool) {\n if (SUPPORTS_LOCAL_STORAGE) {\n useLocalStorage = bool;\n if (bool) {\n dom.bind(window, 'unload', saveToLocalStorage);\n } else {\n dom.unbind(window, 'unload', saveToLocalStorage);\n }\n localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);\n }\n }\n }\n });\n if (Common.isUndefined(params.parent)) {\n this.closed = params.closed || false;\n dom.addClass(this.domElement, GUI.CLASS_MAIN);\n dom.makeSelectable(this.domElement, false);\n if (SUPPORTS_LOCAL_STORAGE) {\n if (useLocalStorage) {\n _this.useLocalStorage = true;\n var savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));\n if (savedGui) {\n params.load = JSON.parse(savedGui);\n }\n }\n }\n this.__closeButton = document.createElement('div');\n this.__closeButton.innerHTML = GUI.TEXT_CLOSED;\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);\n if (params.closeOnTop) {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);\n this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);\n } else {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);\n this.domElement.appendChild(this.__closeButton);\n }\n dom.bind(this.__closeButton, 'click', function () {\n _this.closed = !_this.closed;\n });\n } else {\n if (params.closed === undefined) {\n params.closed = true;\n }\n var titleRowName = document.createTextNode(params.name);\n dom.addClass(titleRowName, 'controller-name');\n titleRow = addRow(_this, titleRowName);\n var onClickTitle = function onClickTitle(e) {\n e.preventDefault();\n _this.closed = !_this.closed;\n return false;\n };\n dom.addClass(this.__ul, GUI.CLASS_CLOSED);\n dom.addClass(titleRow, 'title');\n dom.bind(titleRow, 'click', onClickTitle);\n if (!params.closed) {\n this.closed = false;\n }\n }\n if (params.autoPlace) {\n if (Common.isUndefined(params.parent)) {\n if (autoPlaceVirgin) {\n autoPlaceContainer = document.createElement('div');\n dom.addClass(autoPlaceContainer, CSS_NAMESPACE);\n dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);\n document.body.appendChild(autoPlaceContainer);\n autoPlaceVirgin = false;\n }\n autoPlaceContainer.appendChild(this.domElement);\n dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);\n }\n if (!this.parent) {\n setWidth(_this, params.width);\n }\n }\n this.__resizeHandler = function () {\n _this.onResizeDebounced();\n };\n dom.bind(window, 'resize', this.__resizeHandler);\n dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);\n dom.bind(this.__ul, 'transitionend', this.__resizeHandler);\n dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);\n this.onResize();\n if (params.resizable) {\n addResizeHandle(this);\n }\n saveToLocalStorage = function saveToLocalStorage() {\n if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') {\n localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));\n }\n };\n this.saveToLocalStorageIfPossible = saveToLocalStorage;\n function resetWidth() {\n var root = _this.getRoot();\n root.width += 1;\n Common.defer(function () {\n root.width -= 1;\n });\n }\n if (!params.parent) {\n resetWidth();\n }\n};\nGUI.toggleHide = function () {\n hide = !hide;\n Common.each(hideableGuis, function (gui) {\n gui.domElement.style.display = hide ? 'none' : '';\n });\n};\nGUI.CLASS_AUTO_PLACE = 'a';\nGUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';\nGUI.CLASS_MAIN = 'main';\nGUI.CLASS_CONTROLLER_ROW = 'cr';\nGUI.CLASS_TOO_TALL = 'taller-than-window';\nGUI.CLASS_CLOSED = 'closed';\nGUI.CLASS_CLOSE_BUTTON = 'close-button';\nGUI.CLASS_CLOSE_TOP = 'close-top';\nGUI.CLASS_CLOSE_BOTTOM = 'close-bottom';\nGUI.CLASS_DRAG = 'drag';\nGUI.DEFAULT_WIDTH = 245;\nGUI.TEXT_CLOSED = 'Close Controls';\nGUI.TEXT_OPEN = 'Open Controls';\nGUI._keydownHandler = function (e) {\n if (document.activeElement.type !== 'text' && (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {\n GUI.toggleHide();\n }\n};\ndom.bind(window, 'keydown', GUI._keydownHandler, false);\nCommon.extend(GUI.prototype,\n{\n add: function add(object, property) {\n return _add(this, object, property, {\n factoryArgs: Array.prototype.slice.call(arguments, 2)\n });\n },\n addColor: function addColor(object, property) {\n return _add(this, object, property, {\n color: true\n });\n },\n remove: function remove(controller) {\n this.__ul.removeChild(controller.__li);\n this.__controllers.splice(this.__controllers.indexOf(controller), 1);\n var _this = this;\n Common.defer(function () {\n _this.onResize();\n });\n },\n destroy: function destroy() {\n if (this.parent) {\n throw new Error('Only the root GUI should be removed with .destroy(). ' + 'For subfolders, use gui.removeFolder(folder) instead.');\n }\n if (this.autoPlace) {\n autoPlaceContainer.removeChild(this.domElement);\n }\n var _this = this;\n Common.each(this.__folders, function (subfolder) {\n _this.removeFolder(subfolder);\n });\n dom.unbind(window, 'keydown', GUI._keydownHandler, false);\n removeListeners(this);\n },\n addFolder: function addFolder(name) {\n if (this.__folders[name] !== undefined) {\n throw new Error('You already have a folder in this GUI by the' + ' name \"' + name + '\"');\n }\n var newGuiParams = { name: name, parent: this };\n newGuiParams.autoPlace = this.autoPlace;\n if (this.load &&\n this.load.folders &&\n this.load.folders[name]) {\n newGuiParams.closed = this.load.folders[name].closed;\n newGuiParams.load = this.load.folders[name];\n }\n var gui = new GUI(newGuiParams);\n this.__folders[name] = gui;\n var li = addRow(this, gui.domElement);\n dom.addClass(li, 'folder');\n return gui;\n },\n removeFolder: function removeFolder(folder) {\n this.__ul.removeChild(folder.domElement.parentElement);\n delete this.__folders[folder.name];\n if (this.load &&\n this.load.folders &&\n this.load.folders[folder.name]) {\n delete this.load.folders[folder.name];\n }\n removeListeners(folder);\n var _this = this;\n Common.each(folder.__folders, function (subfolder) {\n folder.removeFolder(subfolder);\n });\n Common.defer(function () {\n _this.onResize();\n });\n },\n open: function open() {\n this.closed = false;\n },\n close: function close() {\n this.closed = true;\n },\n hide: function hide() {\n this.domElement.style.display = 'none';\n },\n show: function show() {\n this.domElement.style.display = '';\n },\n onResize: function onResize() {\n var root = this.getRoot();\n if (root.scrollable) {\n var top = dom.getOffset(root.__ul).top;\n var h = 0;\n Common.each(root.__ul.childNodes, function (node) {\n if (!(root.autoPlace && node === root.__save_row)) {\n h += dom.getHeight(node);\n }\n });\n if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {\n dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';\n } else {\n dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = 'auto';\n }\n }\n if (root.__resize_handle) {\n Common.defer(function () {\n root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';\n });\n }\n if (root.__closeButton) {\n root.__closeButton.style.width = root.width + 'px';\n }\n },\n onResizeDebounced: Common.debounce(function () {\n this.onResize();\n }, 50),\n remember: function remember() {\n if (Common.isUndefined(SAVE_DIALOGUE)) {\n SAVE_DIALOGUE = new CenteredDiv();\n SAVE_DIALOGUE.domElement.innerHTML = saveDialogContents;\n }\n if (this.parent) {\n throw new Error('You can only call remember on a top level GUI.');\n }\n var _this = this;\n Common.each(Array.prototype.slice.call(arguments), function (object) {\n if (_this.__rememberedObjects.length === 0) {\n addSaveMenu(_this);\n }\n if (_this.__rememberedObjects.indexOf(object) === -1) {\n _this.__rememberedObjects.push(object);\n }\n });\n if (this.autoPlace) {\n setWidth(this, this.width);\n }\n },\n getRoot: function getRoot() {\n var gui = this;\n while (gui.parent) {\n gui = gui.parent;\n }\n return gui;\n },\n getSaveObject: function getSaveObject() {\n var toReturn = this.load;\n toReturn.closed = this.closed;\n if (this.__rememberedObjects.length > 0) {\n toReturn.preset = this.preset;\n if (!toReturn.remembered) {\n toReturn.remembered = {};\n }\n toReturn.remembered[this.preset] = getCurrentPreset(this);\n }\n toReturn.folders = {};\n Common.each(this.__folders, function (element, key) {\n toReturn.folders[key] = element.getSaveObject();\n });\n return toReturn;\n },\n save: function save() {\n if (!this.load.remembered) {\n this.load.remembered = {};\n }\n this.load.remembered[this.preset] = getCurrentPreset(this);\n markPresetModified(this, false);\n this.saveToLocalStorageIfPossible();\n },\n saveAs: function saveAs(presetName) {\n if (!this.load.remembered) {\n this.load.remembered = {};\n this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);\n }\n this.load.remembered[presetName] = getCurrentPreset(this);\n this.preset = presetName;\n addPresetOption(this, presetName, true);\n this.saveToLocalStorageIfPossible();\n },\n revert: function revert(gui) {\n Common.each(this.__controllers, function (controller) {\n if (!this.getRoot().load.remembered) {\n controller.setValue(controller.initialValue);\n } else {\n recallSavedValue(gui || this.getRoot(), controller);\n }\n if (controller.__onFinishChange) {\n controller.__onFinishChange.call(controller, controller.getValue());\n }\n }, this);\n Common.each(this.__folders, function (folder) {\n folder.revert(folder);\n });\n if (!gui) {\n markPresetModified(this.getRoot(), false);\n }\n },\n listen: function listen(controller) {\n var init = this.__listening.length === 0;\n this.__listening.push(controller);\n if (init) {\n updateDisplays(this.__listening);\n }\n },\n updateDisplay: function updateDisplay() {\n Common.each(this.__controllers, function (controller) {\n controller.updateDisplay();\n });\n Common.each(this.__folders, function (folder) {\n folder.updateDisplay();\n });\n }\n});\nfunction addRow(gui, newDom, liBefore) {\n var li = document.createElement('li');\n if (newDom) {\n li.appendChild(newDom);\n }\n if (liBefore) {\n gui.__ul.insertBefore(li, liBefore);\n } else {\n gui.__ul.appendChild(li);\n }\n gui.onResize();\n return li;\n}\nfunction removeListeners(gui) {\n dom.unbind(window, 'resize', gui.__resizeHandler);\n if (gui.saveToLocalStorageIfPossible) {\n dom.unbind(window, 'unload', gui.saveToLocalStorageIfPossible);\n }\n}\nfunction markPresetModified(gui, modified) {\n var opt = gui.__preset_select[gui.__preset_select.selectedIndex];\n if (modified) {\n opt.innerHTML = opt.value + '*';\n } else {\n opt.innerHTML = opt.value;\n }\n}\nfunction augmentController(gui, li, controller) {\n controller.__li = li;\n controller.__gui = gui;\n Common.extend(controller, {\n options: function options(_options) {\n if (arguments.length > 1) {\n var nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: nextSibling,\n factoryArgs: [Common.toArray(arguments)]\n });\n }\n if (Common.isArray(_options) || Common.isObject(_options)) {\n var _nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: _nextSibling,\n factoryArgs: [_options]\n });\n }\n },\n name: function name(_name) {\n controller.__li.firstElementChild.firstElementChild.innerHTML = _name;\n return controller;\n },\n listen: function listen() {\n controller.__gui.listen(controller);\n return controller;\n },\n remove: function remove() {\n controller.__gui.remove(controller);\n return controller;\n }\n });\n if (controller instanceof NumberControllerSlider) {\n var box = new NumberControllerBox(controller.object, controller.property, { min: controller.__min, max: controller.__max, step: controller.__step });\n Common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function (method) {\n var pc = controller[method];\n var pb = box[method];\n controller[method] = box[method] = function () {\n var args = Array.prototype.slice.call(arguments);\n pb.apply(box, args);\n return pc.apply(controller, args);\n };\n });\n dom.addClass(li, 'has-slider');\n controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);\n } else if (controller instanceof NumberControllerBox) {\n var r = function r(returned) {\n if (Common.isNumber(controller.__min) && Common.isNumber(controller.__max)) {\n var oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;\n var wasListening = controller.__gui.__listening.indexOf(controller) > -1;\n controller.remove();\n var newController = _add(gui, controller.object, controller.property, {\n before: controller.__li.nextElementSibling,\n factoryArgs: [controller.__min, controller.__max, controller.__step]\n });\n newController.name(oldName);\n if (wasListening) newController.listen();\n return newController;\n }\n return returned;\n };\n controller.min = Common.compose(r, controller.min);\n controller.max = Common.compose(r, controller.max);\n } else if (controller instanceof BooleanController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__checkbox, 'click');\n });\n dom.bind(controller.__checkbox, 'click', function (e) {\n e.stopPropagation();\n });\n } else if (controller instanceof FunctionController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__button, 'click');\n });\n dom.bind(li, 'mouseover', function () {\n dom.addClass(controller.__button, 'hover');\n });\n dom.bind(li, 'mouseout', function () {\n dom.removeClass(controller.__button, 'hover');\n });\n } else if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = Common.compose(function (val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n controller.updateDisplay();\n }\n controller.setValue = Common.compose(function (val) {\n if (gui.getRoot().__preset_select && controller.isModified()) {\n markPresetModified(gui.getRoot(), true);\n }\n return val;\n }, controller.setValue);\n}\nfunction recallSavedValue(gui, controller) {\n var root = gui.getRoot();\n var matchedIndex = root.__rememberedObjects.indexOf(controller.object);\n if (matchedIndex !== -1) {\n var controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];\n if (controllerMap === undefined) {\n controllerMap = {};\n root.__rememberedObjectIndecesToControllers[matchedIndex] = controllerMap;\n }\n controllerMap[controller.property] = controller;\n if (root.load && root.load.remembered) {\n var presetMap = root.load.remembered;\n var preset = void 0;\n if (presetMap[gui.preset]) {\n preset = presetMap[gui.preset];\n } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {\n preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];\n } else {\n return;\n }\n if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {\n var value = preset[matchedIndex][controller.property];\n controller.initialValue = value;\n controller.setValue(value);\n }\n }\n }\n}\nfunction _add(gui, object, property, params) {\n var customObject;\n if (object.arguments) {\n customObject = object;\n object = customObject.arguments.object;\n property = customObject.arguments.property;\n params = {\n factoryArgs: customObject.arguments.opts\n };\n }\n if (customObject === undefined && object[property] === undefined) {\n throw new Error('Object \"' + object + '\" has no property \"' + property + '\"');\n }\n var controller = void 0;\n if (params.color) {\n controller = new ColorController(object, property);\n } else if (customObject !== undefined && typeof customObject.property === \"string\") {\n controller = customObject;\n } else {\n var factoryArgs = [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n if (controller === null) controller = customObject;\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n recallSavedValue(gui, controller);\n dom.addClass(controller.domElement, 'c');\n var name = document.createElement('span');\n dom.addClass(name, 'property-name');\n if (customObject !== undefined && _typeof(customObject.property) === \"object\") {\n for (var propertyName in customObject.property) {\n name.appendChild(customObject.property[propertyName]);\n }\n } else name.innerHTML = controller.property;\n var container = document.createElement('div');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n var li = addRow(gui, container, params.before);\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, _typeof(controller.getValue()));\n }\n augmentController(gui, li, controller);\n gui.__controllers.push(controller);\n return controller;\n}\nfunction getLocalStorageHash(gui, key) {\n return document.location.href + '.' + key;\n}\nfunction addPresetOption(gui, name, setSelected) {\n var opt = document.createElement('option');\n opt.innerHTML = name;\n opt.value = name;\n gui.__preset_select.appendChild(opt);\n if (setSelected) {\n gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;\n }\n}\nfunction showHideExplain(gui, explain) {\n explain.style.display = gui.useLocalStorage ? 'block' : 'none';\n}\nfunction addSaveMenu(gui) {\n var div = gui.__save_row = document.createElement('li');\n dom.addClass(gui.domElement, 'has-save');\n gui.__ul.insertBefore(div, gui.__ul.firstChild);\n dom.addClass(div, 'save-row');\n var gears = document.createElement('span');\n gears.innerHTML = ' ';\n dom.addClass(gears, 'button gears');\n var button = document.createElement('span');\n button.innerHTML = 'Save';\n dom.addClass(button, 'button');\n dom.addClass(button, 'save');\n var button2 = document.createElement('span');\n button2.innerHTML = 'New';\n dom.addClass(button2, 'button');\n dom.addClass(button2, 'save-as');\n var button3 = document.createElement('span');\n button3.innerHTML = 'Revert';\n dom.addClass(button3, 'button');\n dom.addClass(button3, 'revert');\n var select = gui.__preset_select = document.createElement('select');\n if (gui.load && gui.load.remembered) {\n Common.each(gui.load.remembered, function (value, key) {\n addPresetOption(gui, key, key === gui.preset);\n });\n } else {\n addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);\n }\n dom.bind(select, 'change', function () {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;\n }\n gui.preset = this.value;\n });\n div.appendChild(select);\n div.appendChild(gears);\n div.appendChild(button);\n div.appendChild(button2);\n div.appendChild(button3);\n if (SUPPORTS_LOCAL_STORAGE) {\n var explain = document.getElementById('dg-local-explain');\n var localStorageCheckBox = document.getElementById('dg-local-storage');\n var saveLocally = document.getElementById('dg-save-locally');\n saveLocally.style.display = 'block';\n if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {\n localStorageCheckBox.setAttribute('checked', 'checked');\n }\n showHideExplain(gui, explain);\n dom.bind(localStorageCheckBox, 'change', function () {\n gui.useLocalStorage = !gui.useLocalStorage;\n showHideExplain(gui, explain);\n });\n }\n var newConstructorTextArea = document.getElementById('dg-new-constructor');\n dom.bind(newConstructorTextArea, 'keydown', function (e) {\n if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {\n SAVE_DIALOGUE.hide();\n }\n });\n dom.bind(gears, 'click', function () {\n newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);\n SAVE_DIALOGUE.show();\n newConstructorTextArea.focus();\n newConstructorTextArea.select();\n });\n dom.bind(button, 'click', function () {\n gui.save();\n });\n dom.bind(button2, 'click', function () {\n var presetName = prompt('Enter a new preset name.');\n if (presetName) {\n gui.saveAs(presetName);\n }\n });\n dom.bind(button3, 'click', function () {\n gui.revert();\n });\n}\nfunction addResizeHandle(gui) {\n var pmouseX = void 0;\n gui.__resize_handle = document.createElement('div');\n Common.extend(gui.__resize_handle.style, {\n width: '6px',\n marginLeft: '-3px',\n height: '200px',\n cursor: 'ew-resize',\n position: 'absolute'\n });\n function drag(e) {\n e.preventDefault();\n gui.width += pmouseX - e.clientX;\n gui.onResize();\n pmouseX = e.clientX;\n return false;\n }\n function dragStop() {\n dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.unbind(window, 'mousemove', drag);\n dom.unbind(window, 'mouseup', dragStop);\n }\n function dragStart(e) {\n e.preventDefault();\n pmouseX = e.clientX;\n dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.bind(window, 'mousemove', drag);\n dom.bind(window, 'mouseup', dragStop);\n return false;\n }\n dom.bind(gui.__resize_handle, 'mousedown', dragStart);\n dom.bind(gui.__closeButton, 'mousedown', dragStart);\n gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);\n}\nfunction setWidth(gui, w) {\n gui.domElement.style.width = w + 'px';\n if (gui.__save_row && gui.autoPlace) {\n gui.__save_row.style.width = w + 'px';\n }\n if (gui.__closeButton) {\n gui.__closeButton.style.width = w + 'px';\n }\n}\nfunction getCurrentPreset(gui, useInitialValues) {\n var toReturn = {};\n Common.each(gui.__rememberedObjects, function (val, index) {\n var savedValues = {};\n var controllerMap = gui.__rememberedObjectIndecesToControllers[index];\n Common.each(controllerMap, function (controller, property) {\n savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();\n });\n toReturn[index] = savedValues;\n });\n return toReturn;\n}\nfunction setPresetSelectIndex(gui) {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n if (gui.__preset_select[index].value === gui.preset) {\n gui.__preset_select.selectedIndex = index;\n }\n }\n}\nfunction updateDisplays(controllerArray) {\n if (controllerArray.length !== 0) {\n requestAnimationFrame$1.call(window, function () {\n updateDisplays(controllerArray);\n });\n }\n Common.each(controllerArray, function (c) {\n c.updateDisplay();\n });\n}\n\nvar color = {\n Color: Color,\n math: ColorMath,\n interpret: interpret\n};\nvar controllers = {\n Controller: Controller,\n BooleanController: BooleanController,\n OptionController: OptionController,\n StringController: StringController,\n NumberController: NumberController,\n NumberControllerBox: NumberControllerBox,\n NumberControllerSlider: NumberControllerSlider,\n FunctionController: FunctionController,\n ColorController: ColorController,\n CustomController: CustomController\n};\nvar dom$1 = { dom: dom };\nvar gui = { GUI: GUI };\nvar GUI$1 = GUI;\nvar index = {\n color: color,\n controllers: controllers,\n dom: dom$1,\n gui: gui,\n GUI: GUI$1\n};\n\nexport { color, controllers, dom$1 as dom, gui, GUI$1 as GUI };\nexport default index;\n//# sourceMappingURL=dat.gui.module.js.map\n","/**\r\n * Example of using of the dat.gui controllers.CustomController\r\n * https://github.com/anhr/dat.gui\r\n * @author Andrej Hristoliubov https://anhr.github.io/AboutMe/\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport { GUI, controllers } from '../../dat.gui';\r\n\r\n/**\r\n * @class Example of subtype of CustomController class.\r\n *\r\n * @extends dat.controllers.CustomController\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {number} a\r\n * @param {number} b\r\n */\r\nexport class KnobController extends controllers.CustomController {\r\n\tconstructor( object, property, a, b ) {\r\n\t\tsuper( object, property );\r\n\r\n\t\t// ... set up options if needed\r\n\r\n\t\tconst _this = this;\r\n\r\n\t\t//input element\r\n\t\tthis.__input = document.createElement( 'input' );\r\n\t\tthis.__input.setAttribute( 'type', 'number' );\r\n\t\tthis.__input.style.width = '40%';\r\n\t\tthis.updateDisplay();\r\n\t\tthis.domElement.appendChild( this.__input );\r\n\r\n\t\t//button element\r\n\t\tvar button = document.createElement( 'input' );\r\n\t\tbutton.setAttribute( 'type', 'button' );\r\n\t\tbutton.value = 'Set ' + property;\r\n\t\tbutton.style.width = '50%';\r\n\t\tbutton.onclick = function ( e ) {\r\n\t\t\tobject[property] = a + b;\r\n\t\t\t_this.updateDisplay();\r\n\t\t}\r\n\t\tthis.domElement.appendChild( button );\r\n\t}\r\n\r\n\tupdateDisplay() {\r\n\t\tthis.__input.value = this.getValue();\r\n\t}\r\n}\r\n\r\n/**\r\n * @class Example of subtype of CustomController class.\r\n * Periodically changes the selected 3D object.\r\n * Adds NumberControllerSlider controller into PlayController for changing of the rate of changing of 3D obects per second.\r\n *\r\n * @extends dat.controllers.CustomController\r\n *\r\n * @param {Function} init Returns an object with elements for adding into \"property-name\" class element.\r\n */\r\nexport class PlayController extends controllers.CustomController {\r\n\tconstructor( init ) {\r\n\t\tsuper( {\r\n\r\n\t\t\tplayRate: 1,//Default play rate is 1 changes per second\r\n\t\t\tproperty: init,\r\n\r\n\t\t}, 'playRate', 1, 25, 1 );\r\n\t\t//\t\tthis.property = init();\r\n\t\tif ( this.property === undefined )\r\n\t\t\tconsole.error( 'init() returns ' + this.property );\r\n\t}\r\n}\r\n\r\n/**\r\n * @class Example of subtype of CustomController class.\r\n * Selects previous or next 3D object\r\n *\r\n * @extends dat.controllers.CustomController\r\n *\r\n * @param {Function} init Returns an object with elements for adding into \"property-name\" class element.\r\n */\r\nexport class PrevAndNextController extends controllers.CustomController {\r\n\tconstructor( init ) {\r\n\t\tsuper( {\r\n\t\t\tproperty: init,\r\n\t\t} );\r\n\t\t//\t\tthis.property = init();\r\n\t\tif ( this.property === undefined )\r\n\t\t\tconsole.error( ' init() returns ' + this.property );\r\n\t}\r\n}\r\n"],"names":["___$insertStyle","css","window","style","document","createElement","setAttribute","innerHTML","head","appendChild","colorToString","color","forceCSSHex","colorFormat","__state","conversionName","toString","r","Math","round","g","b","a","h","s","toFixed","v","str","hex","length","ARR_EACH","Array","prototype","forEach","ARR_SLICE","slice","Common","extend","target","each","call","arguments","obj","keys","isObject","Object","key","isUndefined","bind","defaults","compose","toCall","args","i","apply","itr","scope","l","BREAK","_key","defer","fnc","debounce","func","threshold","callImmediately","timeout","delayed","callNow","setTimeout","toArray","undefined","isNull","_isNaN","isNaN","_x","isArray","constructor","isNumber","isString","isBoolean","isFunction","INTERPRETATIONS","read","original","test","match","parseInt","parseFloat","write","result","toReturn","interpret","family","litmus","conversions","conversion","tmpComponent","ColorMath","hsv_to_rgb","hi","floor","f","p","q","t","c","rgb_to_hsv","min","max","delta","NaN","rgb_to_hex","hex_with_component","component_from_hex","componentIndex","value","_typeof","Symbol","babelHelpers.typeof","iterator","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","get","object","property","receiver","Function","desc","getOwnPropertyDescriptor","parent","getPrototypeOf","getter","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","Color","Error","toHexString","toOriginal","defineRGBComponent","component","componentHexIndex","get$$1","space","recalculateRGB","set$$1","defineHSVComponent","recalculateHSV","COMPONENTS","Controller","initialValue","domElement","__onChange","__onFinishChange","onChange","onFinishChange","setValue","newValue","updateDisplay","getValue","isModified","EVENT_MAP","EVENT_MAP_INV","k","e","CSS_VALUE_PIXELS","cssValueToPixels","val","dom","makeSelectable","elem","selectable","onselectstart","MozUserSelect","KhtmlUserSelect","unselectable","makeFullscreen","hor","vert","vertical","horizontal","position","left","right","top","bottom","fakeEvent","eventType","pars","aux","params","className","evt","createEvent","clientX","x","clientY","y","initMouseEvent","bubbles","cancelable","clickCount","init","initKeyboardEvent","initKeyEvent","ctrlKey","altKey","shiftKey","metaKey","keyCode","charCode","initEvent","dispatchEvent","event","newBool","bool","addEventListener","attachEvent","unbind","removeEventListener","detachEvent","addClass","classes","split","indexOf","push","join","replace","removeClass","removeAttribute","index","splice","hasClass","RegExp","getWidth","getComputedStyle","width","getHeight","height","getOffset","el","offset","offsetParent","offsetLeft","offsetTop","isActive","activeElement","type","href","BooleanController","_Controller","_this2","_this","__prev","__checkbox","checked","OptionController","opts","options","__select","map","element","opt","desiredValue","selectedIndex","StringController","__input","onBlur","blur","numDecimals","NumberController","_params","__min","__max","__step","step","__impliedStep","pow","log","abs","LN10","__precision","_v","minValue","maxValue","stepValue","roundToDecimal","decimals","tenTo","NumberControllerBox","_NumberController","__truncationSuspended","prevY","attempted","onFinish","onMouseDrag","diff","onMouseUp","onMouseDown","i1","i2","o1","o2","NumberControllerSlider","__background","__foreground","onTouchStart","preventDefault","bgRect","getBoundingClientRect","touches","onTouchMove","onTouchEnd","pct","FunctionController","text","__button","fire","ColorController","__color","__temp","__selector","__saturation_field","__field_knob","__field_knob_border","__hue_knob","__hue_field","__input_textShadow","valueField","fieldDown","fieldDownH","setSV","fieldUpSV","setH","fieldUpH","fieldRect","_ref","_ref2","mismatch","flip","_flip","marginTop","vendors","linearGradient","background","vendor","cssText","hueGradient","ControllerFactory","CustomController","load","url","indoc","doc","link","rel","getElementsByTagName","inject","cssContent","injected","saveDialogContents","requestAnimationFrame","callback","requestAnimationFrame$1","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","CenteredDiv","backgroundElement","body","hide","show","display","opacity","webkitTransform","layout","innerWidth","innerHeight","styleSheet","CSS_NAMESPACE","HIDE_KEY_CODE","CLOSE_BUTTON_HEIGHT","DEFAULT_DEFAULT_PRESET_NAME","SUPPORTS_LOCAL_STORAGE","localStorage","SAVE_DIALOGUE","autoPlaceVirgin","autoPlaceContainer","hideableGuis","GUI","__ul","__folders","__controllers","__rememberedObjects","__rememberedObjectIndecesToControllers","__listening","DEFAULT_WIDTH","autoPlace","preset","hideable","resizable","scrollable","useLocalStorage","getItem","getLocalStorageHash","saveToLocalStorage","titleRow","closeOnTop","getRoot","revert","name","closed","CLASS_CLOSED","onResize","__closeButton","TEXT_OPEN","TEXT_CLOSED","setItem","CLASS_MAIN","savedGui","JSON","parse","CLASS_CLOSE_BUTTON","CLASS_CLOSE_TOP","insertBefore","childNodes","CLASS_CLOSE_BOTTOM","titleRowName","createTextNode","addRow","onClickTitle","CLASS_AUTO_PLACE_CONTAINER","CLASS_AUTO_PLACE","__resizeHandler","onResizeDebounced","stringify","getSaveObject","saveToLocalStorageIfPossible","resetWidth","root","toggleHide","gui","CLASS_CONTROLLER_ROW","CLASS_TOO_TALL","CLASS_DRAG","_keydownHandler","which","add","_add","addColor","remove","controller","removeChild","__li","destroy","subfolder","removeFolder","addFolder","newGuiParams","folders","li","folder","parentElement","open","close","node","__save_row","__resize_handle","offsetHeight","remember","remembered","getCurrentPreset","save","saveAs","presetName","listen","newDom","liBefore","removeListeners","markPresetModified","modified","__preset_select","augmentController","__gui","_options","nextSibling","nextElementSibling","_nextSibling","_name","firstElementChild","box","method","pc","pb","returned","oldName","wasListening","newController","stopPropagation","borderLeftColor","recallSavedValue","matchedIndex","controllerMap","presetMap","customObject","factoryArgs","concat","before","propertyName","container","location","addPresetOption","setSelected","showHideExplain","explain","addSaveMenu","div","firstChild","gears","button","button2","button3","select","getElementById","localStorageCheckBox","saveLocally","newConstructorTextArea","focus","prompt","addResizeHandle","pmouseX","drag","dragStop","dragStart","setWidth","w","useInitialValues","savedValues","setPresetSelectIndex","updateDisplays","controllerArray","controllers","KnobController","onclick","PlayController","console","error","PrevAndNextController"],"mappings":"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"} \ No newline at end of file diff --git a/build/customcontrollers.module.js b/build/customcontrollers.module.js index ce1226c..2c6116a 100644 --- a/build/customcontrollers.module.js +++ b/build/customcontrollers.module.js @@ -1,6 +1,7 @@ /** * JavaScript Custom comtroller for dat-gui Controller Library * https://github.com/anhr/customController + * @author Andrej Hristoliubov https://anhr.github.io/AboutMe/ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,66 +16,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - - - - - - - - - - -var classCallCheck = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; - - - - - - - - - - - -var inherits = function (subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; -}; - - - - - - - - - - - -var possibleConstructorReturn = function (self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; -}; - function ___$insertStyle(css) { if (!css) { return; @@ -1528,13 +1469,43 @@ function hueGradient(elem) { elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; } +var ControllerFactory = function ControllerFactory(object, property) { + var initialValue = object[property]; + if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) { + return new OptionController(object, property, arguments[2]); + } + if (Common.isNumber(initialValue)) { + if (Common.isNumber(arguments[2]) && Common.isNumber(arguments[3])) { + if (Common.isNumber(arguments[4])) { + return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]); + } + return new NumberControllerSlider(object, property, arguments[2], arguments[3]); + } + if (Common.isNumber(arguments[4])) { + return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3], step: arguments[4] }); + } + return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] }); + } + if (Common.isString(initialValue)) { + return new StringController(object, property); + } + if (Common.isFunction(initialValue)) { + return new FunctionController(object, property, ''); + } + if (Common.isBoolean(initialValue)) { + return new BooleanController(object, property); + } + return null; +}; var CustomController = function (_Controller) { inherits$1(CustomController, _Controller); function CustomController(object, property) { classCallCheck$1(this, CustomController); var _this = possibleConstructorReturn$1(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, object, property)); - object.constructor(_this); - _this.custom = true; + _this.arguments = { + object: object, property: property, opts: Array.prototype.slice.call(arguments, 2) + }; + if (object.property) _this.property = object.property(); return _this; } return CustomController; @@ -1560,34 +1531,6 @@ var css = { } }; var saveDialogContents = "
\n\n Here's the new load parameter for your GUI's constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI's constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n
"; -var ControllerFactory = function ControllerFactory(object, property) { - var initialValue = object[property]; - if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) { - return new OptionController(object, property, arguments[2]); - } - if (Common.isNumber(initialValue)) { - if (Common.isNumber(arguments[2]) && Common.isNumber(arguments[3])) { - if (Common.isNumber(arguments[4])) { - return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]); - } - return new NumberControllerSlider(object, property, arguments[2], arguments[3]); - } - if (Common.isNumber(arguments[4])) { - return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3], step: arguments[4] }); - } - return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] }); - } - if (Common.isString(initialValue)) { - return new StringController(object, property); - } - if (Common.isFunction(initialValue)) { - return new FunctionController(object, property, ''); - } - if (Common.isBoolean(initialValue)) { - return new BooleanController(object, property); - } - return null; -}; function requestAnimationFrame(callback) { setTimeout(callback, 1000 / 60); } @@ -1936,7 +1879,6 @@ dom.bind(window, 'keydown', GUI._keydownHandler, false); Common.extend(GUI.prototype, { add: function add(object, property) { return _add(this, object, property, { - custom: object.custom, factoryArgs: Array.prototype.slice.call(arguments, 2) }); }, @@ -1945,12 +1887,6 @@ Common.extend(GUI.prototype, { color: true }); }, - addCustomController: function addCustomController(object, property) { - return _add(this, object, property, { - custom: true, - factoryArgs: Array.prototype.slice.call(arguments, 2) - }); - }, remove: function remove(controller) { this.__ul.removeChild(controller.__li); this.__controllers.splice(this.__controllers.indexOf(controller), 1); @@ -2296,30 +2232,41 @@ function recallSavedValue(gui, controller) { } } function _add(gui, object, property, params) { - var customObject = object.custom; - if (!customObject && !params.custom && object[property] === undefined) { + var customObject; + if (object.arguments) { + customObject = object; + object = customObject.arguments.object; + property = customObject.arguments.property; + params = { + factoryArgs: customObject.arguments.opts + }; + } + if (customObject === undefined && object[property] === undefined) { throw new Error('Object "' + object + '" has no property "' + property + '"'); } var controller = void 0; if (params.color) { controller = new ColorController(object, property); - } else if (customObject && property === undefined) { - controller = object; - } else if (!customObject && params.custom && object[property] === undefined) { - controller = new CustomController(object, property); + } else if (customObject !== undefined && typeof customObject.property === "string") { + controller = customObject; } else { - var factoryArgs = customObject ? [property].concat(params.factoryArgs) : [object, property].concat(params.factoryArgs); + var factoryArgs = [object, property].concat(params.factoryArgs); controller = ControllerFactory.apply(gui, factoryArgs); } + if (controller === null) controller = customObject; if (params.before instanceof Controller) { params.before = params.before.__li; } recallSavedValue(gui, controller); dom.addClass(controller.domElement, 'c'); - var container = document.createElement('div'); - var name = params.custom && controller instanceof CustomController === false ? customObject ? object.domElement : new CustomController(object).domElement : document.createElement('span'); - if (!params.custom) name.innerHTML = controller.property; + var name = document.createElement('span'); dom.addClass(name, 'property-name'); + if (customObject !== undefined && _typeof$1(customObject.property) === "object") { + for (var propertyName in customObject.property) { + name.appendChild(customObject.property[propertyName]); + } + } else name.innerHTML = controller.property; + var container = document.createElement('div'); container.appendChild(name); container.appendChild(controller.domElement); var li = addRow(gui, container, params.before); @@ -2511,28 +2458,46 @@ var controllers = { CustomController: CustomController }; -var PlayController = function (_controllers$CustomCo) { - inherits(PlayController, _controllers$CustomCo); - function PlayController(object, property) { - classCallCheck(this, PlayController); - return possibleConstructorReturn(this, (PlayController.__proto__ || Object.getPrototypeOf(PlayController)).call(this, object, property)); +class KnobController extends controllers.CustomController { + constructor(object, property, a, b) { + super(object, property); + const _this = this; + this.__input = document.createElement('input'); + this.__input.setAttribute('type', 'number'); + this.__input.style.width = '40%'; + this.updateDisplay(); + this.domElement.appendChild(this.__input); + var button = document.createElement('input'); + button.setAttribute('type', 'button'); + button.value = 'Set ' + property; + button.style.width = '50%'; + button.onclick = function (e) { + object[property] = a + b; + _this.updateDisplay(); + }; + this.domElement.appendChild(button); } - return PlayController; -}(controllers.CustomController); -var KnobController = function (_controllers$CustomCo2) { - inherits(KnobController, _controllers$CustomCo2); - function KnobController(addButton, a, b) { - classCallCheck(this, KnobController); - return possibleConstructorReturn(this, (KnobController.__proto__ || Object.getPrototypeOf(KnobController)).call(this, { - constructor: function constructor(controller) { - addButton(controller, 'Knob Controller', 'Please press knob', function (value) { - alert('Knob Controller ' + (a + b)); - }); - } - })); + updateDisplay() { + this.__input.value = this.getValue(); + } +} +class PlayController extends controllers.CustomController { + constructor(init) { + super({ + playRate: 1, + property: init + }, 'playRate', 1, 25, 1); + if (this.property === undefined) console.error('init() returns ' + this.property); } - return KnobController; -}(controllers.CustomController); +} +class PrevAndNextController extends controllers.CustomController { + constructor(init) { + super({ + property: init + }); + if (this.property === undefined) console.error(' init() returns ' + this.property); + } +} -export { PlayController, KnobController }; +export { KnobController, PlayController, PrevAndNextController }; //# sourceMappingURL=customcontrollers.module.js.map diff --git a/build/customcontrollers.module.js.map b/build/customcontrollers.module.js.map index 71c5671..c682838 100644 --- a/build/customcontrollers.module.js.map +++ b/build/customcontrollers.module.js.map @@ -1 +1 @@ -{"version":3,"file":"customcontrollers.module.js","sources":["../../../dat.gui/build/dat.gui.module.js","../index.js"],"sourcesContent":["/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\nfunction ___$insertStyle(css) {\n if (!css) {\n return;\n }\n if (typeof window === 'undefined') {\n return;\n }\n\n var style = document.createElement('style');\n\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n document.head.appendChild(style);\n\n return css;\n}\n\nfunction colorToString (color, forceCSSHex) {\n var colorFormat = color.__state.conversionName.toString();\n var r = Math.round(color.r);\n var g = Math.round(color.g);\n var b = Math.round(color.b);\n var a = color.a;\n var h = Math.round(color.h);\n var s = color.s.toFixed(1);\n var v = color.v.toFixed(1);\n if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') {\n var str = color.hex.toString(16);\n while (str.length < 6) {\n str = '0' + str;\n }\n return '#' + str;\n } else if (colorFormat === 'CSS_RGB') {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else if (colorFormat === 'CSS_RGBA') {\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n } else if (colorFormat === 'HEX') {\n return '0x' + color.hex.toString(16);\n } else if (colorFormat === 'RGB_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ']';\n } else if (colorFormat === 'RGBA_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ',' + a + ']';\n } else if (colorFormat === 'RGB_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + '}';\n } else if (colorFormat === 'RGBA_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}';\n } else if (colorFormat === 'HSV_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + '}';\n } else if (colorFormat === 'HSVA_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}';\n }\n return 'unknown format';\n}\n\nvar ARR_EACH = Array.prototype.forEach;\nvar ARR_SLICE = Array.prototype.slice;\nvar Common = {\n BREAK: {},\n extend: function extend(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (!this.isUndefined(obj[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n defaults: function defaults(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (this.isUndefined(target[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n compose: function compose() {\n var toCall = ARR_SLICE.call(arguments);\n return function () {\n var args = ARR_SLICE.call(arguments);\n for (var i = toCall.length - 1; i >= 0; i--) {\n args = [toCall[i].apply(this, args)];\n }\n return args[0];\n };\n },\n each: function each(obj, itr, scope) {\n if (!obj) {\n return;\n }\n if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) {\n obj.forEach(itr, scope);\n } else if (obj.length === obj.length + 0) {\n var key = void 0;\n var l = void 0;\n for (key = 0, l = obj.length; key < l; key++) {\n if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) {\n return;\n }\n }\n } else {\n for (var _key in obj) {\n if (itr.call(scope, obj[_key], _key) === this.BREAK) {\n return;\n }\n }\n }\n },\n defer: function defer(fnc) {\n setTimeout(fnc, 0);\n },\n debounce: function debounce(func, threshold, callImmediately) {\n var timeout = void 0;\n return function () {\n var obj = this;\n var args = arguments;\n function delayed() {\n timeout = null;\n if (!callImmediately) func.apply(obj, args);\n }\n var callNow = callImmediately || !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(delayed, threshold);\n if (callNow) {\n func.apply(obj, args);\n }\n };\n },\n toArray: function toArray(obj) {\n if (obj.toArray) return obj.toArray();\n return ARR_SLICE.call(obj);\n },\n isUndefined: function isUndefined(obj) {\n return obj === undefined;\n },\n isNull: function isNull(obj) {\n return obj === null;\n },\n isNaN: function (_isNaN) {\n function isNaN(_x) {\n return _isNaN.apply(this, arguments);\n }\n isNaN.toString = function () {\n return _isNaN.toString();\n };\n return isNaN;\n }(function (obj) {\n return isNaN(obj);\n }),\n isArray: Array.isArray || function (obj) {\n return obj.constructor === Array;\n },\n isObject: function isObject(obj) {\n return obj === Object(obj);\n },\n isNumber: function isNumber(obj) {\n return obj === obj + 0;\n },\n isString: function isString(obj) {\n return obj === obj + '';\n },\n isBoolean: function isBoolean(obj) {\n return obj === false || obj === true;\n },\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.call(obj) === '[object Function]';\n }\n};\n\nvar INTERPRETATIONS = [\n{\n litmus: Common.isString,\n conversions: {\n THREE_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0)\n };\n },\n write: colorToString\n },\n SIX_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9]{6})$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString(), 0)\n };\n },\n write: colorToString\n },\n CSS_RGB: {\n read: function read(original) {\n var test = original.match(/^rgb\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3])\n };\n },\n write: colorToString\n },\n CSS_RGBA: {\n read: function read(original) {\n var test = original.match(/^rgba\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3]),\n a: parseFloat(test[4])\n };\n },\n write: colorToString\n }\n }\n},\n{\n litmus: Common.isNumber,\n conversions: {\n HEX: {\n read: function read(original) {\n return {\n space: 'HEX',\n hex: original,\n conversionName: 'HEX'\n };\n },\n write: function write(color) {\n return color.hex;\n }\n }\n }\n},\n{\n litmus: Common.isArray,\n conversions: {\n RGB_ARRAY: {\n read: function read(original) {\n if (original.length !== 3) {\n return false;\n }\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b];\n }\n },\n RGBA_ARRAY: {\n read: function read(original) {\n if (original.length !== 4) return false;\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2],\n a: original[3]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b, color.a];\n }\n }\n }\n},\n{\n litmus: Common.isObject,\n conversions: {\n RGBA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b,\n a: color.a\n };\n }\n },\n RGB_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b\n };\n }\n },\n HSVA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v,\n a: color.a\n };\n }\n },\n HSV_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v\n };\n }\n }\n }\n}];\nvar result = void 0;\nvar toReturn = void 0;\nvar interpret = function interpret() {\n toReturn = false;\n var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0];\n Common.each(INTERPRETATIONS, function (family) {\n if (family.litmus(original)) {\n Common.each(family.conversions, function (conversion, conversionName) {\n result = conversion.read(original);\n if (toReturn === false && result !== false) {\n toReturn = result;\n result.conversionName = conversionName;\n result.conversion = conversion;\n return Common.BREAK;\n }\n });\n return Common.BREAK;\n }\n });\n return toReturn;\n};\n\nvar tmpComponent = void 0;\nvar ColorMath = {\n hsv_to_rgb: function hsv_to_rgb(h, s, v) {\n var hi = Math.floor(h / 60) % 6;\n var f = h / 60 - Math.floor(h / 60);\n var p = v * (1.0 - s);\n var q = v * (1.0 - f * s);\n var t = v * (1.0 - (1.0 - f) * s);\n var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi];\n return {\n r: c[0] * 255,\n g: c[1] * 255,\n b: c[2] * 255\n };\n },\n rgb_to_hsv: function rgb_to_hsv(r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var h = void 0;\n var s = void 0;\n if (max !== 0) {\n s = delta / max;\n } else {\n return {\n h: NaN,\n s: 0,\n v: 0\n };\n }\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n h /= 6;\n if (h < 0) {\n h += 1;\n }\n return {\n h: h * 360,\n s: s,\n v: max / 255\n };\n },\n rgb_to_hex: function rgb_to_hex(r, g, b) {\n var hex = this.hex_with_component(0, 2, r);\n hex = this.hex_with_component(hex, 1, g);\n hex = this.hex_with_component(hex, 0, b);\n return hex;\n },\n component_from_hex: function component_from_hex(hex, componentIndex) {\n return hex >> componentIndex * 8 & 0xFF;\n },\n hex_with_component: function hex_with_component(hex, componentIndex, value) {\n return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent);\n }\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar Color = function () {\n function Color() {\n classCallCheck(this, Color);\n this.__state = interpret.apply(this, arguments);\n if (this.__state === false) {\n throw new Error('Failed to interpret color arguments');\n }\n this.__state.a = this.__state.a || 1;\n }\n createClass(Color, [{\n key: 'toString',\n value: function toString() {\n return colorToString(this);\n }\n }, {\n key: 'toHexString',\n value: function toHexString() {\n return colorToString(this, true);\n }\n }, {\n key: 'toOriginal',\n value: function toOriginal() {\n return this.__state.conversion.write(this);\n }\n }]);\n return Color;\n}();\nfunction defineRGBComponent(target, component, componentHexIndex) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'RGB') {\n return this.__state[component];\n }\n Color.recalculateRGB(this, component, componentHexIndex);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'RGB') {\n Color.recalculateRGB(this, component, componentHexIndex);\n this.__state.space = 'RGB';\n }\n this.__state[component] = v;\n }\n });\n}\nfunction defineHSVComponent(target, component) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'HSV') {\n return this.__state[component];\n }\n Color.recalculateHSV(this);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'HSV') {\n Color.recalculateHSV(this);\n this.__state.space = 'HSV';\n }\n this.__state[component] = v;\n }\n });\n}\nColor.recalculateRGB = function (color, component, componentHexIndex) {\n if (color.__state.space === 'HEX') {\n color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex);\n } else if (color.__state.space === 'HSV') {\n Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v));\n } else {\n throw new Error('Corrupted color state');\n }\n};\nColor.recalculateHSV = function (color) {\n var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b);\n Common.extend(color.__state, {\n s: result.s,\n v: result.v\n });\n if (!Common.isNaN(result.h)) {\n color.__state.h = result.h;\n } else if (Common.isUndefined(color.__state.h)) {\n color.__state.h = 0;\n }\n};\nColor.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];\ndefineRGBComponent(Color.prototype, 'r', 2);\ndefineRGBComponent(Color.prototype, 'g', 1);\ndefineRGBComponent(Color.prototype, 'b', 0);\ndefineHSVComponent(Color.prototype, 'h');\ndefineHSVComponent(Color.prototype, 's');\ndefineHSVComponent(Color.prototype, 'v');\nObject.defineProperty(Color.prototype, 'a', {\n get: function get$$1() {\n return this.__state.a;\n },\n set: function set$$1(v) {\n this.__state.a = v;\n }\n});\nObject.defineProperty(Color.prototype, 'hex', {\n get: function get$$1() {\n if (!this.__state.space !== 'HEX') {\n this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b);\n }\n return this.__state.hex;\n },\n set: function set$$1(v) {\n this.__state.space = 'HEX';\n this.__state.hex = v;\n }\n});\n\nvar Controller = function () {\n function Controller(object, property) {\n classCallCheck(this, Controller);\n this.initialValue = object[property];\n this.domElement = document.createElement('div');\n this.object = object;\n this.property = property;\n this.__onChange = undefined;\n this.__onFinishChange = undefined;\n }\n createClass(Controller, [{\n key: 'onChange',\n value: function onChange(fnc) {\n this.__onChange = fnc;\n return this;\n }\n }, {\n key: 'onFinishChange',\n value: function onFinishChange(fnc) {\n this.__onFinishChange = fnc;\n return this;\n }\n }, {\n key: 'setValue',\n value: function setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.object[this.property];\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n return this;\n }\n }, {\n key: 'isModified',\n value: function isModified() {\n return this.initialValue !== this.getValue();\n }\n }]);\n return Controller;\n}();\n\nvar EVENT_MAP = {\n HTMLEvents: ['change'],\n MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],\n KeyboardEvents: ['keydown']\n};\nvar EVENT_MAP_INV = {};\nCommon.each(EVENT_MAP, function (v, k) {\n Common.each(v, function (e) {\n EVENT_MAP_INV[e] = k;\n });\n});\nvar CSS_VALUE_PIXELS = /(\\d+(\\.\\d+)?)px/;\nfunction cssValueToPixels(val) {\n if (val === '0' || Common.isUndefined(val)) {\n return 0;\n }\n var match = val.match(CSS_VALUE_PIXELS);\n if (!Common.isNull(match)) {\n return parseFloat(match[1]);\n }\n return 0;\n}\nvar dom = {\n makeSelectable: function makeSelectable(elem, selectable) {\n if (elem === undefined || elem.style === undefined) return;\n elem.onselectstart = selectable ? function () {\n return false;\n } : function () {};\n elem.style.MozUserSelect = selectable ? 'auto' : 'none';\n elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';\n elem.unselectable = selectable ? 'on' : 'off';\n },\n makeFullscreen: function makeFullscreen(elem, hor, vert) {\n var vertical = vert;\n var horizontal = hor;\n if (Common.isUndefined(horizontal)) {\n horizontal = true;\n }\n if (Common.isUndefined(vertical)) {\n vertical = true;\n }\n elem.style.position = 'absolute';\n if (horizontal) {\n elem.style.left = 0;\n elem.style.right = 0;\n }\n if (vertical) {\n elem.style.top = 0;\n elem.style.bottom = 0;\n }\n },\n fakeEvent: function fakeEvent(elem, eventType, pars, aux) {\n var params = pars || {};\n var className = EVENT_MAP_INV[eventType];\n if (!className) {\n throw new Error('Event type ' + eventType + ' not supported.');\n }\n var evt = document.createEvent(className);\n switch (className) {\n case 'MouseEvents':\n {\n var clientX = params.x || params.clientX || 0;\n var clientY = params.y || params.clientY || 0;\n evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0,\n 0,\n clientX,\n clientY,\n false, false, false, false, 0, null);\n break;\n }\n case 'KeyboardEvents':\n {\n var init = evt.initKeyboardEvent || evt.initKeyEvent;\n Common.defaults(params, {\n cancelable: true,\n ctrlKey: false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n keyCode: undefined,\n charCode: undefined\n });\n init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode);\n break;\n }\n default:\n {\n evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);\n break;\n }\n }\n Common.defaults(evt, aux);\n elem.dispatchEvent(evt);\n },\n bind: function bind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.addEventListener) {\n elem.addEventListener(event, func, bool);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + event, func);\n }\n return dom;\n },\n unbind: function unbind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.removeEventListener) {\n elem.removeEventListener(event, func, bool);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + event, func);\n }\n return dom;\n },\n addClass: function addClass(elem, className) {\n if (elem.className === undefined) {\n elem.className = className;\n } else if (elem.className !== className) {\n var classes = elem.className.split(/ +/);\n if (classes.indexOf(className) === -1) {\n classes.push(className);\n elem.className = classes.join(' ').replace(/^\\s+/, '').replace(/\\s+$/, '');\n }\n }\n return dom;\n },\n removeClass: function removeClass(elem, className) {\n if (className) {\n if (elem.className === className) {\n elem.removeAttribute('class');\n } else {\n var classes = elem.className.split(/ +/);\n var index = classes.indexOf(className);\n if (index !== -1) {\n classes.splice(index, 1);\n elem.className = classes.join(' ');\n }\n }\n } else {\n elem.className = undefined;\n }\n return dom;\n },\n hasClass: function hasClass(elem, className) {\n return new RegExp('(?:^|\\\\s+)' + className + '(?:\\\\s+|$)').test(elem.className) || false;\n },\n getWidth: function getWidth(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width);\n },\n getHeight: function getHeight(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height);\n },\n getOffset: function getOffset(el) {\n var elem = el;\n var offset = { left: 0, top: 0 };\n if (elem.offsetParent) {\n do {\n offset.left += elem.offsetLeft;\n offset.top += elem.offsetTop;\n elem = elem.offsetParent;\n } while (elem);\n }\n return offset;\n },\n isActive: function isActive(elem) {\n return elem === document.activeElement && (elem.type || elem.href);\n }\n};\n\nvar BooleanController = function (_Controller) {\n inherits(BooleanController, _Controller);\n function BooleanController(object, property) {\n classCallCheck(this, BooleanController);\n var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property));\n var _this = _this2;\n _this2.__prev = _this2.getValue();\n _this2.__checkbox = document.createElement('input');\n _this2.__checkbox.setAttribute('type', 'checkbox');\n function onChange() {\n _this.setValue(!_this.__prev);\n }\n dom.bind(_this2.__checkbox, 'change', onChange, false);\n _this2.domElement.appendChild(_this2.__checkbox);\n _this2.updateDisplay();\n return _this2;\n }\n createClass(BooleanController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n this.__prev = this.getValue();\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (this.getValue() === true) {\n this.__checkbox.setAttribute('checked', 'checked');\n this.__checkbox.checked = true;\n this.__prev = true;\n } else {\n this.__checkbox.checked = false;\n this.__prev = false;\n }\n return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return BooleanController;\n}(Controller);\n\nvar OptionController = function (_Controller) {\n inherits(OptionController, _Controller);\n function OptionController(object, property, opts) {\n classCallCheck(this, OptionController);\n var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property));\n var options = opts;\n var _this = _this2;\n _this2.__select = document.createElement('select');\n if (Common.isArray(options)) {\n var map = {};\n Common.each(options, function (element) {\n map[element] = element;\n });\n options = map;\n }\n Common.each(options, function (value, key) {\n var opt = document.createElement('option');\n opt.innerHTML = key;\n opt.setAttribute('value', value);\n _this.__select.appendChild(opt);\n });\n _this2.updateDisplay();\n dom.bind(_this2.__select, 'change', function () {\n var desiredValue = this.options[this.selectedIndex].value;\n _this.setValue(desiredValue);\n });\n _this2.domElement.appendChild(_this2.__select);\n return _this2;\n }\n createClass(OptionController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (dom.isActive(this.__select)) return this;\n this.__select.value = this.getValue();\n return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return OptionController;\n}(Controller);\n\nvar StringController = function (_Controller) {\n inherits(StringController, _Controller);\n function StringController(object, property) {\n classCallCheck(this, StringController);\n var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property));\n var _this = _this2;\n function onChange() {\n _this.setValue(_this.__input.value);\n }\n function onBlur() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'keyup', onChange);\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n this.blur();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(StringController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (!dom.isActive(this.__input)) {\n this.__input.value = this.getValue();\n }\n return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return StringController;\n}(Controller);\n\nfunction numDecimals(x) {\n var _x = x.toString();\n if (_x.indexOf('.') > -1) {\n return _x.length - _x.indexOf('.') - 1;\n }\n return 0;\n}\nvar NumberController = function (_Controller) {\n inherits(NumberController, _Controller);\n function NumberController(object, property, params) {\n classCallCheck(this, NumberController);\n var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property));\n var _params = params || {};\n _this.__min = _params.min;\n _this.__max = _params.max;\n _this.__step = _params.step;\n if (Common.isUndefined(_this.__step)) {\n if (_this.initialValue === 0) {\n _this.__impliedStep = 1;\n } else {\n _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10;\n }\n } else {\n _this.__impliedStep = _this.__step;\n }\n _this.__precision = numDecimals(_this.__impliedStep);\n return _this;\n }\n createClass(NumberController, [{\n key: 'setValue',\n value: function setValue(v) {\n var _v = v;\n if (this.__min !== undefined && _v < this.__min) {\n _v = this.__min;\n } else if (this.__max !== undefined && _v > this.__max) {\n _v = this.__max;\n }\n if (this.__step !== undefined && _v % this.__step !== 0) {\n _v = Math.round(_v / this.__step) * this.__step;\n }\n return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v);\n }\n }, {\n key: 'min',\n value: function min(minValue) {\n this.__min = minValue;\n return this;\n }\n }, {\n key: 'max',\n value: function max(maxValue) {\n this.__max = maxValue;\n return this;\n }\n }, {\n key: 'step',\n value: function step(stepValue) {\n this.__step = stepValue;\n this.__impliedStep = stepValue;\n this.__precision = numDecimals(stepValue);\n return this;\n }\n }]);\n return NumberController;\n}(Controller);\n\nfunction roundToDecimal(value, decimals) {\n var tenTo = Math.pow(10, decimals);\n return Math.round(value * tenTo) / tenTo;\n}\nvar NumberControllerBox = function (_NumberController) {\n inherits(NumberControllerBox, _NumberController);\n function NumberControllerBox(object, property, params) {\n classCallCheck(this, NumberControllerBox);\n var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params));\n _this2.__truncationSuspended = false;\n var _this = _this2;\n var prevY = void 0;\n function onChange() {\n var attempted = parseFloat(_this.__input.value);\n if (!Common.isNaN(attempted)) {\n _this.setValue(attempted);\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onBlur() {\n onFinish();\n }\n function onMouseDrag(e) {\n var diff = prevY - e.clientY;\n _this.setValue(_this.getValue() + diff * _this.__impliedStep);\n prevY = e.clientY;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n onFinish();\n }\n function onMouseDown(e) {\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n prevY = e.clientY;\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'mousedown', onMouseDown);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n _this.__truncationSuspended = true;\n this.blur();\n _this.__truncationSuspended = false;\n onFinish();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(NumberControllerBox, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);\n return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerBox;\n}(NumberController);\n\nfunction map(v, i1, i2, o1, o2) {\n return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));\n}\nvar NumberControllerSlider = function (_NumberController) {\n inherits(NumberControllerSlider, _NumberController);\n function NumberControllerSlider(object, property, min, max, step) {\n classCallCheck(this, NumberControllerSlider);\n var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step }));\n var _this = _this2;\n _this2.__background = document.createElement('div');\n _this2.__foreground = document.createElement('div');\n dom.bind(_this2.__background, 'mousedown', onMouseDown);\n dom.bind(_this2.__background, 'touchstart', onTouchStart);\n dom.addClass(_this2.__background, 'slider');\n dom.addClass(_this2.__foreground, 'slider-fg');\n function onMouseDown(e) {\n document.activeElement.blur();\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n onMouseDrag(e);\n }\n function onMouseDrag(e) {\n e.preventDefault();\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n return false;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onTouchStart(e) {\n if (e.touches.length !== 1) {\n return;\n }\n dom.bind(window, 'touchmove', onTouchMove);\n dom.bind(window, 'touchend', onTouchEnd);\n onTouchMove(e);\n }\n function onTouchMove(e) {\n var clientX = e.touches[0].clientX;\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n }\n function onTouchEnd() {\n dom.unbind(window, 'touchmove', onTouchMove);\n dom.unbind(window, 'touchend', onTouchEnd);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.updateDisplay();\n _this2.__background.appendChild(_this2.__foreground);\n _this2.domElement.appendChild(_this2.__background);\n return _this2;\n }\n createClass(NumberControllerSlider, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var pct = (this.getValue() - this.__min) / (this.__max - this.__min);\n this.__foreground.style.width = pct * 100 + '%';\n return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerSlider;\n}(NumberController);\n\nvar FunctionController = function (_Controller) {\n inherits(FunctionController, _Controller);\n function FunctionController(object, property, text) {\n classCallCheck(this, FunctionController);\n var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property));\n var _this = _this2;\n _this2.__button = document.createElement('div');\n _this2.__button.innerHTML = text === undefined ? 'Fire' : text;\n dom.bind(_this2.__button, 'click', function (e) {\n e.preventDefault();\n _this.fire();\n return false;\n });\n dom.addClass(_this2.__button, 'button');\n _this2.domElement.appendChild(_this2.__button);\n return _this2;\n }\n createClass(FunctionController, [{\n key: 'fire',\n value: function fire() {\n if (this.__onChange) {\n this.__onChange.call(this);\n }\n this.getValue().call(this.object);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n }\n }]);\n return FunctionController;\n}(Controller);\n\nvar ColorController = function (_Controller) {\n inherits(ColorController, _Controller);\n function ColorController(object, property) {\n classCallCheck(this, ColorController);\n var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property));\n _this2.__color = new Color(_this2.getValue());\n _this2.__temp = new Color(0);\n var _this = _this2;\n _this2.domElement = document.createElement('div');\n dom.makeSelectable(_this2.domElement, false);\n _this2.__selector = document.createElement('div');\n _this2.__selector.className = 'selector';\n _this2.__saturation_field = document.createElement('div');\n _this2.__saturation_field.className = 'saturation-field';\n _this2.__field_knob = document.createElement('div');\n _this2.__field_knob.className = 'field-knob';\n _this2.__field_knob_border = '2px solid ';\n _this2.__hue_knob = document.createElement('div');\n _this2.__hue_knob.className = 'hue-knob';\n _this2.__hue_field = document.createElement('div');\n _this2.__hue_field.className = 'hue-field';\n _this2.__input = document.createElement('input');\n _this2.__input.type = 'text';\n _this2.__input_textShadow = '0 1px 1px ';\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n onBlur.call(this);\n }\n });\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__selector, 'mousedown', function () {\n dom.addClass(this, 'drag').bind(window, 'mouseup', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n dom.bind(_this2.__selector, 'touchstart', function () {\n dom.addClass(this, 'drag').bind(window, 'touchend', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n var valueField = document.createElement('div');\n Common.extend(_this2.__selector.style, {\n width: '122px',\n height: '102px',\n padding: '3px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n Common.extend(_this2.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n Common.extend(_this2.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n Common.extend(_this2.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n cursor: 'pointer'\n });\n Common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n Common.extend(_this2.__hue_field.style, {\n width: '15px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n right: '3px'\n });\n hueGradient(_this2.__hue_field);\n Common.extend(_this2.__input.style, {\n outline: 'none',\n textAlign: 'center',\n color: '#fff',\n border: 0,\n fontWeight: 'bold',\n textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n dom.bind(_this2.__saturation_field, 'mousedown', fieldDown);\n dom.bind(_this2.__saturation_field, 'touchstart', fieldDown);\n dom.bind(_this2.__field_knob, 'mousedown', fieldDown);\n dom.bind(_this2.__field_knob, 'touchstart', fieldDown);\n dom.bind(_this2.__hue_field, 'mousedown', fieldDownH);\n dom.bind(_this2.__hue_field, 'touchstart', fieldDownH);\n function fieldDown(e) {\n setSV(e);\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'touchmove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n dom.bind(window, 'touchend', fieldUpSV);\n }\n function fieldDownH(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'touchmove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n dom.bind(window, 'touchend', fieldUpH);\n }\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'touchmove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n dom.unbind(window, 'touchend', fieldUpSV);\n onFinish();\n }\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'touchmove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n dom.unbind(window, 'touchend', fieldUpH);\n onFinish();\n }\n function onBlur() {\n var i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n _this2.__saturation_field.appendChild(valueField);\n _this2.__selector.appendChild(_this2.__field_knob);\n _this2.__selector.appendChild(_this2.__saturation_field);\n _this2.__selector.appendChild(_this2.__hue_field);\n _this2.__hue_field.appendChild(_this2.__hue_knob);\n _this2.domElement.appendChild(_this2.__input);\n _this2.domElement.appendChild(_this2.__selector);\n _this2.updateDisplay();\n function setSV(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__saturation_field.getBoundingClientRect();\n var _ref = e.touches && e.touches[0] || e,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n _this.__color.v = v;\n _this.__color.s = s;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n function setH(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__hue_field.getBoundingClientRect();\n var _ref2 = e.touches && e.touches[0] || e,\n clientY = _ref2.clientY;\n var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n _this.__color.h = h * 360;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n return _this2;\n }\n createClass(ColorController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var i = interpret(this.getValue());\n if (i !== false) {\n var mismatch = false;\n Common.each(Color.COMPONENTS, function (component) {\n if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {};\n }\n }, this);\n if (mismatch) {\n Common.extend(this.__color.__state, i);\n }\n }\n Common.extend(this.__temp.__state, this.__color.__state);\n this.__temp.a = 1;\n var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0;\n var _flip = 255 - flip;\n Common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n this.__temp.s = 1;\n this.__temp.v = 1;\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n this.__input.value = this.__color.toString();\n Common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n }\n }]);\n return ColorController;\n}(Controller);\nvar vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n Common.each(vendors, function (vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nvar CustomController = function (_Controller) {\n inherits(CustomController, _Controller);\n function CustomController(object, property) {\n classCallCheck(this, CustomController);\n var _this = possibleConstructorReturn(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, object, property));\n object.constructor(_this);\n _this.custom = true;\n return _this;\n }\n return CustomController;\n}(Controller);\n\nvar css = {\n load: function load(url, indoc) {\n var doc = indoc || document;\n var link = doc.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = url;\n doc.getElementsByTagName('head')[0].appendChild(link);\n },\n inject: function inject(cssContent, indoc) {\n var doc = indoc || document;\n var injected = document.createElement('style');\n injected.type = 'text/css';\n injected.innerHTML = cssContent;\n var head = doc.getElementsByTagName('head')[0];\n try {\n head.appendChild(injected);\n } catch (e) {\n }\n }\n};\n\nvar saveDialogContents = \"
\\n\\n Here's the new load parameter for your GUI's constructor:\\n\\n \\n\\n
\\n\\n Automatically save\\n values to localStorage on exit.\\n\\n
The values saved to localStorage will\\n override those passed to dat.GUI's constructor. This makes it\\n easier to work incrementally, but localStorage is fragile,\\n and your friends may not see the same values you do.\\n\\n
\\n\\n
\\n\\n
\";\n\nvar ControllerFactory = function ControllerFactory(object, property) {\n var initialValue = object[property];\n if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) {\n return new OptionController(object, property, arguments[2]);\n }\n if (Common.isNumber(initialValue)) {\n if (Common.isNumber(arguments[2]) && Common.isNumber(arguments[3])) {\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]);\n }\n return new NumberControllerSlider(object, property, arguments[2], arguments[3]);\n }\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3], step: arguments[4] });\n }\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });\n }\n if (Common.isString(initialValue)) {\n return new StringController(object, property);\n }\n if (Common.isFunction(initialValue)) {\n return new FunctionController(object, property, '');\n }\n if (Common.isBoolean(initialValue)) {\n return new BooleanController(object, property);\n }\n return null;\n};\n\nfunction requestAnimationFrame(callback) {\n setTimeout(callback, 1000 / 60);\n}\nvar requestAnimationFrame$1 = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || requestAnimationFrame;\n\nvar CenteredDiv = function () {\n function CenteredDiv() {\n classCallCheck(this, CenteredDiv);\n this.backgroundElement = document.createElement('div');\n Common.extend(this.backgroundElement.style, {\n backgroundColor: 'rgba(0,0,0,0.8)',\n top: 0,\n left: 0,\n display: 'none',\n zIndex: '1000',\n opacity: 0,\n WebkitTransition: 'opacity 0.2s linear',\n transition: 'opacity 0.2s linear'\n });\n dom.makeFullscreen(this.backgroundElement);\n this.backgroundElement.style.position = 'fixed';\n this.domElement = document.createElement('div');\n Common.extend(this.domElement.style, {\n position: 'fixed',\n display: 'none',\n zIndex: '1001',\n opacity: 0,\n WebkitTransition: '-webkit-transform 0.2s ease-out, opacity 0.2s linear',\n transition: 'transform 0.2s ease-out, opacity 0.2s linear'\n });\n document.body.appendChild(this.backgroundElement);\n document.body.appendChild(this.domElement);\n var _this = this;\n dom.bind(this.backgroundElement, 'click', function () {\n _this.hide();\n });\n }\n createClass(CenteredDiv, [{\n key: 'show',\n value: function show() {\n var _this = this;\n this.backgroundElement.style.display = 'block';\n this.domElement.style.display = 'block';\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n this.layout();\n Common.defer(function () {\n _this.backgroundElement.style.opacity = 1;\n _this.domElement.style.opacity = 1;\n _this.domElement.style.webkitTransform = 'scale(1)';\n });\n }\n }, {\n key: 'hide',\n value: function hide() {\n var _this = this;\n var hide = function hide() {\n _this.domElement.style.display = 'none';\n _this.backgroundElement.style.display = 'none';\n dom.unbind(_this.domElement, 'webkitTransitionEnd', hide);\n dom.unbind(_this.domElement, 'transitionend', hide);\n dom.unbind(_this.domElement, 'oTransitionEnd', hide);\n };\n dom.bind(this.domElement, 'webkitTransitionEnd', hide);\n dom.bind(this.domElement, 'transitionend', hide);\n dom.bind(this.domElement, 'oTransitionEnd', hide);\n this.backgroundElement.style.opacity = 0;\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.domElement.style.left = window.innerWidth / 2 - dom.getWidth(this.domElement) / 2 + 'px';\n this.domElement.style.top = window.innerHeight / 2 - dom.getHeight(this.domElement) / 2 + 'px';\n }\n }]);\n return CenteredDiv;\n}();\n\nvar styleSheet = ___$insertStyle(\".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\\n\");\n\ncss.inject(styleSheet);\nvar CSS_NAMESPACE = 'dg';\nvar HIDE_KEY_CODE = 72;\nvar CLOSE_BUTTON_HEIGHT = 20;\nvar DEFAULT_DEFAULT_PRESET_NAME = 'Default';\nvar SUPPORTS_LOCAL_STORAGE = function () {\n try {\n return !!window.localStorage;\n } catch (e) {\n return false;\n }\n}();\nvar SAVE_DIALOGUE = void 0;\nvar autoPlaceVirgin = true;\nvar autoPlaceContainer = void 0;\nvar hide = false;\nvar hideableGuis = [];\nvar GUI = function GUI(pars) {\n var _this = this;\n var params = pars || {};\n this.domElement = document.createElement('div');\n this.__ul = document.createElement('ul');\n this.domElement.appendChild(this.__ul);\n dom.addClass(this.domElement, CSS_NAMESPACE);\n this.__folders = {};\n this.__controllers = [];\n this.__rememberedObjects = [];\n this.__rememberedObjectIndecesToControllers = [];\n this.__listening = [];\n params = Common.defaults(params, {\n closeOnTop: false,\n autoPlace: true,\n width: GUI.DEFAULT_WIDTH\n });\n params = Common.defaults(params, {\n resizable: params.autoPlace,\n hideable: params.autoPlace\n });\n if (!Common.isUndefined(params.load)) {\n if (params.preset) {\n params.load.preset = params.preset;\n }\n } else {\n params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };\n }\n if (Common.isUndefined(params.parent) && params.hideable) {\n hideableGuis.push(this);\n }\n params.resizable = Common.isUndefined(params.parent) && params.resizable;\n if (params.autoPlace && Common.isUndefined(params.scrollable)) {\n params.scrollable = true;\n }\n var useLocalStorage = SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true';\n var saveToLocalStorage = void 0;\n var titleRow = void 0;\n Object.defineProperties(this,\n {\n parent: {\n get: function get$$1() {\n return params.parent;\n }\n },\n scrollable: {\n get: function get$$1() {\n return params.scrollable;\n }\n },\n autoPlace: {\n get: function get$$1() {\n return params.autoPlace;\n }\n },\n closeOnTop: {\n get: function get$$1() {\n return params.closeOnTop;\n }\n },\n preset: {\n get: function get$$1() {\n if (_this.parent) {\n return _this.getRoot().preset;\n }\n return params.load.preset;\n },\n set: function set$$1(v) {\n if (_this.parent) {\n _this.getRoot().preset = v;\n } else {\n params.load.preset = v;\n }\n setPresetSelectIndex(this);\n _this.revert();\n }\n },\n width: {\n get: function get$$1() {\n return params.width;\n },\n set: function set$$1(v) {\n params.width = v;\n setWidth(_this, v);\n }\n },\n name: {\n get: function get$$1() {\n return params.name;\n },\n set: function set$$1(v) {\n params.name = v;\n if (titleRow) {\n titleRow.innerHTML = params.name;\n }\n }\n },\n closed: {\n get: function get$$1() {\n return params.closed;\n },\n set: function set$$1(v) {\n params.closed = v;\n if (params.closed) {\n dom.addClass(_this.__ul, GUI.CLASS_CLOSED);\n } else {\n dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);\n }\n this.onResize();\n if (_this.__closeButton) {\n _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;\n }\n }\n },\n load: {\n get: function get$$1() {\n return params.load;\n }\n },\n useLocalStorage: {\n get: function get$$1() {\n return useLocalStorage;\n },\n set: function set$$1(bool) {\n if (SUPPORTS_LOCAL_STORAGE) {\n useLocalStorage = bool;\n if (bool) {\n dom.bind(window, 'unload', saveToLocalStorage);\n } else {\n dom.unbind(window, 'unload', saveToLocalStorage);\n }\n localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);\n }\n }\n }\n });\n if (Common.isUndefined(params.parent)) {\n this.closed = params.closed || false;\n dom.addClass(this.domElement, GUI.CLASS_MAIN);\n dom.makeSelectable(this.domElement, false);\n if (SUPPORTS_LOCAL_STORAGE) {\n if (useLocalStorage) {\n _this.useLocalStorage = true;\n var savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));\n if (savedGui) {\n params.load = JSON.parse(savedGui);\n }\n }\n }\n this.__closeButton = document.createElement('div');\n this.__closeButton.innerHTML = GUI.TEXT_CLOSED;\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);\n if (params.closeOnTop) {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);\n this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);\n } else {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);\n this.domElement.appendChild(this.__closeButton);\n }\n dom.bind(this.__closeButton, 'click', function () {\n _this.closed = !_this.closed;\n });\n } else {\n if (params.closed === undefined) {\n params.closed = true;\n }\n var titleRowName = document.createTextNode(params.name);\n dom.addClass(titleRowName, 'controller-name');\n titleRow = addRow(_this, titleRowName);\n var onClickTitle = function onClickTitle(e) {\n e.preventDefault();\n _this.closed = !_this.closed;\n return false;\n };\n dom.addClass(this.__ul, GUI.CLASS_CLOSED);\n dom.addClass(titleRow, 'title');\n dom.bind(titleRow, 'click', onClickTitle);\n if (!params.closed) {\n this.closed = false;\n }\n }\n if (params.autoPlace) {\n if (Common.isUndefined(params.parent)) {\n if (autoPlaceVirgin) {\n autoPlaceContainer = document.createElement('div');\n dom.addClass(autoPlaceContainer, CSS_NAMESPACE);\n dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);\n document.body.appendChild(autoPlaceContainer);\n autoPlaceVirgin = false;\n }\n autoPlaceContainer.appendChild(this.domElement);\n dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);\n }\n if (!this.parent) {\n setWidth(_this, params.width);\n }\n }\n this.__resizeHandler = function () {\n _this.onResizeDebounced();\n };\n dom.bind(window, 'resize', this.__resizeHandler);\n dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);\n dom.bind(this.__ul, 'transitionend', this.__resizeHandler);\n dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);\n this.onResize();\n if (params.resizable) {\n addResizeHandle(this);\n }\n saveToLocalStorage = function saveToLocalStorage() {\n if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') {\n localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));\n }\n };\n this.saveToLocalStorageIfPossible = saveToLocalStorage;\n function resetWidth() {\n var root = _this.getRoot();\n root.width += 1;\n Common.defer(function () {\n root.width -= 1;\n });\n }\n if (!params.parent) {\n resetWidth();\n }\n};\nGUI.toggleHide = function () {\n hide = !hide;\n Common.each(hideableGuis, function (gui) {\n gui.domElement.style.display = hide ? 'none' : '';\n });\n};\nGUI.CLASS_AUTO_PLACE = 'a';\nGUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';\nGUI.CLASS_MAIN = 'main';\nGUI.CLASS_CONTROLLER_ROW = 'cr';\nGUI.CLASS_TOO_TALL = 'taller-than-window';\nGUI.CLASS_CLOSED = 'closed';\nGUI.CLASS_CLOSE_BUTTON = 'close-button';\nGUI.CLASS_CLOSE_TOP = 'close-top';\nGUI.CLASS_CLOSE_BOTTOM = 'close-bottom';\nGUI.CLASS_DRAG = 'drag';\nGUI.DEFAULT_WIDTH = 245;\nGUI.TEXT_CLOSED = 'Close Controls';\nGUI.TEXT_OPEN = 'Open Controls';\nGUI._keydownHandler = function (e) {\n if (document.activeElement.type !== 'text' && (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {\n GUI.toggleHide();\n }\n};\ndom.bind(window, 'keydown', GUI._keydownHandler, false);\nCommon.extend(GUI.prototype,\n{\n add: function add(object, property) {\n return _add(this, object, property, {\n custom: object.custom,\n factoryArgs: Array.prototype.slice.call(arguments, 2)\n });\n },\n addColor: function addColor(object, property) {\n return _add(this, object, property, {\n color: true\n });\n },\n addCustomController: function addCustomController(object, property) {\n return _add(this, object, property, {\n custom: true,\n factoryArgs: Array.prototype.slice.call(arguments, 2)\n });\n },\n remove: function remove(controller) {\n this.__ul.removeChild(controller.__li);\n this.__controllers.splice(this.__controllers.indexOf(controller), 1);\n var _this = this;\n Common.defer(function () {\n _this.onResize();\n });\n },\n destroy: function destroy() {\n if (this.parent) {\n throw new Error('Only the root GUI should be removed with .destroy(). ' + 'For subfolders, use gui.removeFolder(folder) instead.');\n }\n if (this.autoPlace) {\n autoPlaceContainer.removeChild(this.domElement);\n }\n var _this = this;\n Common.each(this.__folders, function (subfolder) {\n _this.removeFolder(subfolder);\n });\n dom.unbind(window, 'keydown', GUI._keydownHandler, false);\n removeListeners(this);\n },\n addFolder: function addFolder(name) {\n if (this.__folders[name] !== undefined) {\n throw new Error('You already have a folder in this GUI by the' + ' name \"' + name + '\"');\n }\n var newGuiParams = { name: name, parent: this };\n newGuiParams.autoPlace = this.autoPlace;\n if (this.load &&\n this.load.folders &&\n this.load.folders[name]) {\n newGuiParams.closed = this.load.folders[name].closed;\n newGuiParams.load = this.load.folders[name];\n }\n var gui = new GUI(newGuiParams);\n this.__folders[name] = gui;\n var li = addRow(this, gui.domElement);\n dom.addClass(li, 'folder');\n return gui;\n },\n removeFolder: function removeFolder(folder) {\n this.__ul.removeChild(folder.domElement.parentElement);\n delete this.__folders[folder.name];\n if (this.load &&\n this.load.folders &&\n this.load.folders[folder.name]) {\n delete this.load.folders[folder.name];\n }\n removeListeners(folder);\n var _this = this;\n Common.each(folder.__folders, function (subfolder) {\n folder.removeFolder(subfolder);\n });\n Common.defer(function () {\n _this.onResize();\n });\n },\n open: function open() {\n this.closed = false;\n },\n close: function close() {\n this.closed = true;\n },\n hide: function hide() {\n this.domElement.style.display = 'none';\n },\n show: function show() {\n this.domElement.style.display = '';\n },\n onResize: function onResize() {\n var root = this.getRoot();\n if (root.scrollable) {\n var top = dom.getOffset(root.__ul).top;\n var h = 0;\n Common.each(root.__ul.childNodes, function (node) {\n if (!(root.autoPlace && node === root.__save_row)) {\n h += dom.getHeight(node);\n }\n });\n if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {\n dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';\n } else {\n dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = 'auto';\n }\n }\n if (root.__resize_handle) {\n Common.defer(function () {\n root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';\n });\n }\n if (root.__closeButton) {\n root.__closeButton.style.width = root.width + 'px';\n }\n },\n onResizeDebounced: Common.debounce(function () {\n this.onResize();\n }, 50),\n remember: function remember() {\n if (Common.isUndefined(SAVE_DIALOGUE)) {\n SAVE_DIALOGUE = new CenteredDiv();\n SAVE_DIALOGUE.domElement.innerHTML = saveDialogContents;\n }\n if (this.parent) {\n throw new Error('You can only call remember on a top level GUI.');\n }\n var _this = this;\n Common.each(Array.prototype.slice.call(arguments), function (object) {\n if (_this.__rememberedObjects.length === 0) {\n addSaveMenu(_this);\n }\n if (_this.__rememberedObjects.indexOf(object) === -1) {\n _this.__rememberedObjects.push(object);\n }\n });\n if (this.autoPlace) {\n setWidth(this, this.width);\n }\n },\n getRoot: function getRoot() {\n var gui = this;\n while (gui.parent) {\n gui = gui.parent;\n }\n return gui;\n },\n getSaveObject: function getSaveObject() {\n var toReturn = this.load;\n toReturn.closed = this.closed;\n if (this.__rememberedObjects.length > 0) {\n toReturn.preset = this.preset;\n if (!toReturn.remembered) {\n toReturn.remembered = {};\n }\n toReturn.remembered[this.preset] = getCurrentPreset(this);\n }\n toReturn.folders = {};\n Common.each(this.__folders, function (element, key) {\n toReturn.folders[key] = element.getSaveObject();\n });\n return toReturn;\n },\n save: function save() {\n if (!this.load.remembered) {\n this.load.remembered = {};\n }\n this.load.remembered[this.preset] = getCurrentPreset(this);\n markPresetModified(this, false);\n this.saveToLocalStorageIfPossible();\n },\n saveAs: function saveAs(presetName) {\n if (!this.load.remembered) {\n this.load.remembered = {};\n this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);\n }\n this.load.remembered[presetName] = getCurrentPreset(this);\n this.preset = presetName;\n addPresetOption(this, presetName, true);\n this.saveToLocalStorageIfPossible();\n },\n revert: function revert(gui) {\n Common.each(this.__controllers, function (controller) {\n if (!this.getRoot().load.remembered) {\n controller.setValue(controller.initialValue);\n } else {\n recallSavedValue(gui || this.getRoot(), controller);\n }\n if (controller.__onFinishChange) {\n controller.__onFinishChange.call(controller, controller.getValue());\n }\n }, this);\n Common.each(this.__folders, function (folder) {\n folder.revert(folder);\n });\n if (!gui) {\n markPresetModified(this.getRoot(), false);\n }\n },\n listen: function listen(controller) {\n var init = this.__listening.length === 0;\n this.__listening.push(controller);\n if (init) {\n updateDisplays(this.__listening);\n }\n },\n updateDisplay: function updateDisplay() {\n Common.each(this.__controllers, function (controller) {\n controller.updateDisplay();\n });\n Common.each(this.__folders, function (folder) {\n folder.updateDisplay();\n });\n }\n});\nfunction addRow(gui, newDom, liBefore) {\n var li = document.createElement('li');\n if (newDom) {\n li.appendChild(newDom);\n }\n if (liBefore) {\n gui.__ul.insertBefore(li, liBefore);\n } else {\n gui.__ul.appendChild(li);\n }\n gui.onResize();\n return li;\n}\nfunction removeListeners(gui) {\n dom.unbind(window, 'resize', gui.__resizeHandler);\n if (gui.saveToLocalStorageIfPossible) {\n dom.unbind(window, 'unload', gui.saveToLocalStorageIfPossible);\n }\n}\nfunction markPresetModified(gui, modified) {\n var opt = gui.__preset_select[gui.__preset_select.selectedIndex];\n if (modified) {\n opt.innerHTML = opt.value + '*';\n } else {\n opt.innerHTML = opt.value;\n }\n}\nfunction augmentController(gui, li, controller) {\n controller.__li = li;\n controller.__gui = gui;\n Common.extend(controller, {\n options: function options(_options) {\n if (arguments.length > 1) {\n var nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: nextSibling,\n factoryArgs: [Common.toArray(arguments)]\n });\n }\n if (Common.isArray(_options) || Common.isObject(_options)) {\n var _nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: _nextSibling,\n factoryArgs: [_options]\n });\n }\n },\n name: function name(_name) {\n controller.__li.firstElementChild.firstElementChild.innerHTML = _name;\n return controller;\n },\n listen: function listen() {\n controller.__gui.listen(controller);\n return controller;\n },\n remove: function remove() {\n controller.__gui.remove(controller);\n return controller;\n }\n });\n if (controller instanceof NumberControllerSlider) {\n var box = new NumberControllerBox(controller.object, controller.property, { min: controller.__min, max: controller.__max, step: controller.__step });\n Common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function (method) {\n var pc = controller[method];\n var pb = box[method];\n controller[method] = box[method] = function () {\n var args = Array.prototype.slice.call(arguments);\n pb.apply(box, args);\n return pc.apply(controller, args);\n };\n });\n dom.addClass(li, 'has-slider');\n controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);\n } else if (controller instanceof NumberControllerBox) {\n var r = function r(returned) {\n if (Common.isNumber(controller.__min) && Common.isNumber(controller.__max)) {\n var oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;\n var wasListening = controller.__gui.__listening.indexOf(controller) > -1;\n controller.remove();\n var newController = _add(gui, controller.object, controller.property, {\n before: controller.__li.nextElementSibling,\n factoryArgs: [controller.__min, controller.__max, controller.__step]\n });\n newController.name(oldName);\n if (wasListening) newController.listen();\n return newController;\n }\n return returned;\n };\n controller.min = Common.compose(r, controller.min);\n controller.max = Common.compose(r, controller.max);\n } else if (controller instanceof BooleanController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__checkbox, 'click');\n });\n dom.bind(controller.__checkbox, 'click', function (e) {\n e.stopPropagation();\n });\n } else if (controller instanceof FunctionController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__button, 'click');\n });\n dom.bind(li, 'mouseover', function () {\n dom.addClass(controller.__button, 'hover');\n });\n dom.bind(li, 'mouseout', function () {\n dom.removeClass(controller.__button, 'hover');\n });\n } else if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = Common.compose(function (val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n controller.updateDisplay();\n }\n controller.setValue = Common.compose(function (val) {\n if (gui.getRoot().__preset_select && controller.isModified()) {\n markPresetModified(gui.getRoot(), true);\n }\n return val;\n }, controller.setValue);\n}\nfunction recallSavedValue(gui, controller) {\n var root = gui.getRoot();\n var matchedIndex = root.__rememberedObjects.indexOf(controller.object);\n if (matchedIndex !== -1) {\n var controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];\n if (controllerMap === undefined) {\n controllerMap = {};\n root.__rememberedObjectIndecesToControllers[matchedIndex] = controllerMap;\n }\n controllerMap[controller.property] = controller;\n if (root.load && root.load.remembered) {\n var presetMap = root.load.remembered;\n var preset = void 0;\n if (presetMap[gui.preset]) {\n preset = presetMap[gui.preset];\n } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {\n preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];\n } else {\n return;\n }\n if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {\n var value = preset[matchedIndex][controller.property];\n controller.initialValue = value;\n controller.setValue(value);\n }\n }\n }\n}\nfunction _add(gui, object, property, params) {\n var customObject = object.custom;\n if (!customObject && !params.custom && object[property] === undefined) {\n throw new Error('Object \"' + object + '\" has no property \"' + property + '\"');\n }\n var controller = void 0;\n if (params.color) {\n controller = new ColorController(object, property);\n } else if (customObject && property === undefined) {\n controller = object;\n } else if (!customObject && params.custom && object[property] === undefined) {\n controller = new CustomController(object, property);\n } else {\n var factoryArgs = customObject ? [property].concat(params.factoryArgs) : [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n recallSavedValue(gui, controller);\n dom.addClass(controller.domElement, 'c');\n var container = document.createElement('div');\n var name = params.custom && controller instanceof CustomController === false ? customObject ? object.domElement : new CustomController(object).domElement : document.createElement('span');\n if (!params.custom) name.innerHTML = controller.property;\n dom.addClass(name, 'property-name');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n var li = addRow(gui, container, params.before);\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, _typeof(controller.getValue()));\n }\n augmentController(gui, li, controller);\n gui.__controllers.push(controller);\n return controller;\n}\nfunction getLocalStorageHash(gui, key) {\n return document.location.href + '.' + key;\n}\nfunction addPresetOption(gui, name, setSelected) {\n var opt = document.createElement('option');\n opt.innerHTML = name;\n opt.value = name;\n gui.__preset_select.appendChild(opt);\n if (setSelected) {\n gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;\n }\n}\nfunction showHideExplain(gui, explain) {\n explain.style.display = gui.useLocalStorage ? 'block' : 'none';\n}\nfunction addSaveMenu(gui) {\n var div = gui.__save_row = document.createElement('li');\n dom.addClass(gui.domElement, 'has-save');\n gui.__ul.insertBefore(div, gui.__ul.firstChild);\n dom.addClass(div, 'save-row');\n var gears = document.createElement('span');\n gears.innerHTML = ' ';\n dom.addClass(gears, 'button gears');\n var button = document.createElement('span');\n button.innerHTML = 'Save';\n dom.addClass(button, 'button');\n dom.addClass(button, 'save');\n var button2 = document.createElement('span');\n button2.innerHTML = 'New';\n dom.addClass(button2, 'button');\n dom.addClass(button2, 'save-as');\n var button3 = document.createElement('span');\n button3.innerHTML = 'Revert';\n dom.addClass(button3, 'button');\n dom.addClass(button3, 'revert');\n var select = gui.__preset_select = document.createElement('select');\n if (gui.load && gui.load.remembered) {\n Common.each(gui.load.remembered, function (value, key) {\n addPresetOption(gui, key, key === gui.preset);\n });\n } else {\n addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);\n }\n dom.bind(select, 'change', function () {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;\n }\n gui.preset = this.value;\n });\n div.appendChild(select);\n div.appendChild(gears);\n div.appendChild(button);\n div.appendChild(button2);\n div.appendChild(button3);\n if (SUPPORTS_LOCAL_STORAGE) {\n var explain = document.getElementById('dg-local-explain');\n var localStorageCheckBox = document.getElementById('dg-local-storage');\n var saveLocally = document.getElementById('dg-save-locally');\n saveLocally.style.display = 'block';\n if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {\n localStorageCheckBox.setAttribute('checked', 'checked');\n }\n showHideExplain(gui, explain);\n dom.bind(localStorageCheckBox, 'change', function () {\n gui.useLocalStorage = !gui.useLocalStorage;\n showHideExplain(gui, explain);\n });\n }\n var newConstructorTextArea = document.getElementById('dg-new-constructor');\n dom.bind(newConstructorTextArea, 'keydown', function (e) {\n if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {\n SAVE_DIALOGUE.hide();\n }\n });\n dom.bind(gears, 'click', function () {\n newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);\n SAVE_DIALOGUE.show();\n newConstructorTextArea.focus();\n newConstructorTextArea.select();\n });\n dom.bind(button, 'click', function () {\n gui.save();\n });\n dom.bind(button2, 'click', function () {\n var presetName = prompt('Enter a new preset name.');\n if (presetName) {\n gui.saveAs(presetName);\n }\n });\n dom.bind(button3, 'click', function () {\n gui.revert();\n });\n}\nfunction addResizeHandle(gui) {\n var pmouseX = void 0;\n gui.__resize_handle = document.createElement('div');\n Common.extend(gui.__resize_handle.style, {\n width: '6px',\n marginLeft: '-3px',\n height: '200px',\n cursor: 'ew-resize',\n position: 'absolute'\n });\n function drag(e) {\n e.preventDefault();\n gui.width += pmouseX - e.clientX;\n gui.onResize();\n pmouseX = e.clientX;\n return false;\n }\n function dragStop() {\n dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.unbind(window, 'mousemove', drag);\n dom.unbind(window, 'mouseup', dragStop);\n }\n function dragStart(e) {\n e.preventDefault();\n pmouseX = e.clientX;\n dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.bind(window, 'mousemove', drag);\n dom.bind(window, 'mouseup', dragStop);\n return false;\n }\n dom.bind(gui.__resize_handle, 'mousedown', dragStart);\n dom.bind(gui.__closeButton, 'mousedown', dragStart);\n gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);\n}\nfunction setWidth(gui, w) {\n gui.domElement.style.width = w + 'px';\n if (gui.__save_row && gui.autoPlace) {\n gui.__save_row.style.width = w + 'px';\n }\n if (gui.__closeButton) {\n gui.__closeButton.style.width = w + 'px';\n }\n}\nfunction getCurrentPreset(gui, useInitialValues) {\n var toReturn = {};\n Common.each(gui.__rememberedObjects, function (val, index) {\n var savedValues = {};\n var controllerMap = gui.__rememberedObjectIndecesToControllers[index];\n Common.each(controllerMap, function (controller, property) {\n savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();\n });\n toReturn[index] = savedValues;\n });\n return toReturn;\n}\nfunction setPresetSelectIndex(gui) {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n if (gui.__preset_select[index].value === gui.preset) {\n gui.__preset_select.selectedIndex = index;\n }\n }\n}\nfunction updateDisplays(controllerArray) {\n if (controllerArray.length !== 0) {\n requestAnimationFrame$1.call(window, function () {\n updateDisplays(controllerArray);\n });\n }\n Common.each(controllerArray, function (c) {\n c.updateDisplay();\n });\n}\n\nvar color = {\n Color: Color,\n math: ColorMath,\n interpret: interpret\n};\nvar controllers = {\n Controller: Controller,\n BooleanController: BooleanController,\n OptionController: OptionController,\n StringController: StringController,\n NumberController: NumberController,\n NumberControllerBox: NumberControllerBox,\n NumberControllerSlider: NumberControllerSlider,\n FunctionController: FunctionController,\n ColorController: ColorController,\n CustomController: CustomController\n};\nvar dom$1 = { dom: dom };\nvar gui = { GUI: GUI };\nvar GUI$1 = GUI;\nvar index = {\n color: color,\n controllers: controllers,\n dom: dom$1,\n gui: gui,\n GUI: GUI$1\n};\n\nexport { color, controllers, dom$1 as dom, gui, GUI$1 as GUI };\nexport default index;\n//# sourceMappingURL=dat.gui.module.js.map\n","/**\r\n * Example of using of the dat.gui controllers.CustomController\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport { GUI, controllers } from '../../dat.gui';\r\n\r\nexport class PlayController extends controllers.CustomController {\r\n\tconstructor(object, property) {\r\n\t\tsuper(object, property);\r\n\t}\r\n\t// ...\r\n}\r\n\r\nexport class KnobController extends controllers.CustomController {\r\n\tconstructor(addButton, a, b ) {\r\n\t\tsuper({\r\n\r\n\t\t\tconstructor: function (controller) {\r\n\r\n\t\t\t\taddButton(controller, 'Knob Controller', 'Please press knob', function (value) {\r\n\r\n\t\t\t\t\talert('Knob Controller ' + (a + b));\r\n\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t});\r\n\r\n\t}\r\n\t// ...\r\n}\r\n"],"names":["___$insertStyle","css","window","style","document","createElement","setAttribute","innerHTML","head","appendChild","colorToString","color","forceCSSHex","colorFormat","__state","conversionName","toString","r","Math","round","g","b","a","h","s","toFixed","v","str","hex","length","ARR_EACH","Array","prototype","forEach","ARR_SLICE","slice","Common","extend","target","each","call","arguments","obj","keys","isObject","Object","key","isUndefined","bind","defaults","compose","toCall","args","i","apply","itr","scope","l","BREAK","_key","defer","fnc","debounce","func","threshold","callImmediately","timeout","delayed","callNow","setTimeout","toArray","undefined","isNull","_isNaN","isNaN","_x","isArray","constructor","isNumber","isString","isBoolean","isFunction","INTERPRETATIONS","read","original","test","match","parseInt","parseFloat","write","result","toReturn","interpret","family","litmus","conversions","conversion","tmpComponent","ColorMath","hsv_to_rgb","hi","floor","f","p","q","t","c","rgb_to_hsv","min","max","delta","NaN","rgb_to_hex","hex_with_component","component_from_hex","componentIndex","value","_typeof","Symbol","babelHelpers.typeof","iterator","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","get","object","property","receiver","Function","desc","getOwnPropertyDescriptor","parent","getPrototypeOf","getter","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","Color","Error","toHexString","toOriginal","defineRGBComponent","component","componentHexIndex","get$$1","space","recalculateRGB","set$$1","defineHSVComponent","recalculateHSV","COMPONENTS","Controller","initialValue","domElement","__onChange","__onFinishChange","onChange","onFinishChange","setValue","newValue","updateDisplay","getValue","isModified","EVENT_MAP","EVENT_MAP_INV","k","e","CSS_VALUE_PIXELS","cssValueToPixels","val","dom","makeSelectable","elem","selectable","onselectstart","MozUserSelect","KhtmlUserSelect","unselectable","makeFullscreen","hor","vert","vertical","horizontal","position","left","right","top","bottom","fakeEvent","eventType","pars","aux","params","className","evt","createEvent","clientX","x","clientY","y","initMouseEvent","bubbles","cancelable","clickCount","init","initKeyboardEvent","initKeyEvent","ctrlKey","altKey","shiftKey","metaKey","keyCode","charCode","initEvent","dispatchEvent","event","newBool","bool","addEventListener","attachEvent","unbind","removeEventListener","detachEvent","addClass","classes","split","indexOf","push","join","replace","removeClass","removeAttribute","index","splice","hasClass","RegExp","getWidth","getComputedStyle","width","getHeight","height","getOffset","el","offset","offsetParent","offsetLeft","offsetTop","isActive","activeElement","type","href","BooleanController","_Controller","_this2","_this","__prev","__checkbox","checked","OptionController","opts","options","__select","map","element","opt","desiredValue","selectedIndex","StringController","__input","onBlur","blur","numDecimals","NumberController","_params","__min","__max","__step","step","__impliedStep","pow","log","abs","LN10","__precision","_v","minValue","maxValue","stepValue","roundToDecimal","decimals","tenTo","NumberControllerBox","_NumberController","__truncationSuspended","prevY","attempted","onFinish","onMouseDrag","diff","onMouseUp","onMouseDown","i1","i2","o1","o2","NumberControllerSlider","__background","__foreground","onTouchStart","preventDefault","bgRect","getBoundingClientRect","touches","onTouchMove","onTouchEnd","pct","FunctionController","text","__button","fire","ColorController","__color","__temp","__selector","__saturation_field","__field_knob","__field_knob_border","__hue_knob","__hue_field","__input_textShadow","valueField","fieldDown","fieldDownH","setSV","fieldUpSV","setH","fieldUpH","fieldRect","_ref","_ref2","mismatch","flip","_flip","marginTop","vendors","linearGradient","background","vendor","cssText","hueGradient","CustomController","custom","load","url","indoc","doc","link","rel","getElementsByTagName","inject","cssContent","injected","saveDialogContents","ControllerFactory","requestAnimationFrame","callback","requestAnimationFrame$1","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","CenteredDiv","backgroundElement","body","hide","show","display","opacity","webkitTransform","layout","innerWidth","innerHeight","styleSheet","CSS_NAMESPACE","HIDE_KEY_CODE","CLOSE_BUTTON_HEIGHT","DEFAULT_DEFAULT_PRESET_NAME","SUPPORTS_LOCAL_STORAGE","localStorage","SAVE_DIALOGUE","autoPlaceVirgin","autoPlaceContainer","hideableGuis","GUI","__ul","__folders","__controllers","__rememberedObjects","__rememberedObjectIndecesToControllers","__listening","DEFAULT_WIDTH","autoPlace","preset","hideable","resizable","scrollable","useLocalStorage","getItem","getLocalStorageHash","saveToLocalStorage","titleRow","closeOnTop","getRoot","revert","name","closed","CLASS_CLOSED","onResize","__closeButton","TEXT_OPEN","TEXT_CLOSED","setItem","CLASS_MAIN","savedGui","JSON","parse","CLASS_CLOSE_BUTTON","CLASS_CLOSE_TOP","insertBefore","childNodes","CLASS_CLOSE_BOTTOM","titleRowName","createTextNode","addRow","onClickTitle","CLASS_AUTO_PLACE_CONTAINER","CLASS_AUTO_PLACE","__resizeHandler","onResizeDebounced","stringify","getSaveObject","saveToLocalStorageIfPossible","resetWidth","root","toggleHide","gui","CLASS_CONTROLLER_ROW","CLASS_TOO_TALL","CLASS_DRAG","_keydownHandler","which","add","_add","addColor","addCustomController","remove","controller","removeChild","__li","destroy","subfolder","removeFolder","addFolder","newGuiParams","folders","li","folder","parentElement","open","close","node","__save_row","__resize_handle","offsetHeight","remember","remembered","getCurrentPreset","save","saveAs","presetName","listen","newDom","liBefore","removeListeners","markPresetModified","modified","__preset_select","augmentController","__gui","_options","nextSibling","nextElementSibling","_nextSibling","_name","firstElementChild","box","method","pc","pb","returned","oldName","wasListening","newController","stopPropagation","borderLeftColor","recallSavedValue","matchedIndex","controllerMap","presetMap","customObject","factoryArgs","concat","before","container","location","addPresetOption","setSelected","showHideExplain","explain","addSaveMenu","div","firstChild","gears","button","button2","button3","select","getElementById","localStorageCheckBox","saveLocally","newConstructorTextArea","focus","prompt","addResizeHandle","pmouseX","drag","dragStop","dragStart","setWidth","w","useInitialValues","savedValues","setPresetSelectIndex","updateDisplays","controllerArray","controllers","PlayController","KnobController","addButton"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"customcontrollers.module.js","sources":["../../../dat.gui/build/dat.gui.module.js","../index.js"],"sourcesContent":["/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\nfunction ___$insertStyle(css) {\n if (!css) {\n return;\n }\n if (typeof window === 'undefined') {\n return;\n }\n\n var style = document.createElement('style');\n\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n document.head.appendChild(style);\n\n return css;\n}\n\nfunction colorToString (color, forceCSSHex) {\n var colorFormat = color.__state.conversionName.toString();\n var r = Math.round(color.r);\n var g = Math.round(color.g);\n var b = Math.round(color.b);\n var a = color.a;\n var h = Math.round(color.h);\n var s = color.s.toFixed(1);\n var v = color.v.toFixed(1);\n if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') {\n var str = color.hex.toString(16);\n while (str.length < 6) {\n str = '0' + str;\n }\n return '#' + str;\n } else if (colorFormat === 'CSS_RGB') {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else if (colorFormat === 'CSS_RGBA') {\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n } else if (colorFormat === 'HEX') {\n return '0x' + color.hex.toString(16);\n } else if (colorFormat === 'RGB_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ']';\n } else if (colorFormat === 'RGBA_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ',' + a + ']';\n } else if (colorFormat === 'RGB_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + '}';\n } else if (colorFormat === 'RGBA_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}';\n } else if (colorFormat === 'HSV_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + '}';\n } else if (colorFormat === 'HSVA_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}';\n }\n return 'unknown format';\n}\n\nvar ARR_EACH = Array.prototype.forEach;\nvar ARR_SLICE = Array.prototype.slice;\nvar Common = {\n BREAK: {},\n extend: function extend(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (!this.isUndefined(obj[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n defaults: function defaults(target) {\n this.each(ARR_SLICE.call(arguments, 1), function (obj) {\n var keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function (key) {\n if (this.isUndefined(target[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n return target;\n },\n compose: function compose() {\n var toCall = ARR_SLICE.call(arguments);\n return function () {\n var args = ARR_SLICE.call(arguments);\n for (var i = toCall.length - 1; i >= 0; i--) {\n args = [toCall[i].apply(this, args)];\n }\n return args[0];\n };\n },\n each: function each(obj, itr, scope) {\n if (!obj) {\n return;\n }\n if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) {\n obj.forEach(itr, scope);\n } else if (obj.length === obj.length + 0) {\n var key = void 0;\n var l = void 0;\n for (key = 0, l = obj.length; key < l; key++) {\n if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) {\n return;\n }\n }\n } else {\n for (var _key in obj) {\n if (itr.call(scope, obj[_key], _key) === this.BREAK) {\n return;\n }\n }\n }\n },\n defer: function defer(fnc) {\n setTimeout(fnc, 0);\n },\n debounce: function debounce(func, threshold, callImmediately) {\n var timeout = void 0;\n return function () {\n var obj = this;\n var args = arguments;\n function delayed() {\n timeout = null;\n if (!callImmediately) func.apply(obj, args);\n }\n var callNow = callImmediately || !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(delayed, threshold);\n if (callNow) {\n func.apply(obj, args);\n }\n };\n },\n toArray: function toArray(obj) {\n if (obj.toArray) return obj.toArray();\n return ARR_SLICE.call(obj);\n },\n isUndefined: function isUndefined(obj) {\n return obj === undefined;\n },\n isNull: function isNull(obj) {\n return obj === null;\n },\n isNaN: function (_isNaN) {\n function isNaN(_x) {\n return _isNaN.apply(this, arguments);\n }\n isNaN.toString = function () {\n return _isNaN.toString();\n };\n return isNaN;\n }(function (obj) {\n return isNaN(obj);\n }),\n isArray: Array.isArray || function (obj) {\n return obj.constructor === Array;\n },\n isObject: function isObject(obj) {\n return obj === Object(obj);\n },\n isNumber: function isNumber(obj) {\n return obj === obj + 0;\n },\n isString: function isString(obj) {\n return obj === obj + '';\n },\n isBoolean: function isBoolean(obj) {\n return obj === false || obj === true;\n },\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.call(obj) === '[object Function]';\n }\n};\n\nvar INTERPRETATIONS = [\n{\n litmus: Common.isString,\n conversions: {\n THREE_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0)\n };\n },\n write: colorToString\n },\n SIX_CHAR_HEX: {\n read: function read(original) {\n var test = original.match(/^#([A-F0-9]{6})$/i);\n if (test === null) {\n return false;\n }\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString(), 0)\n };\n },\n write: colorToString\n },\n CSS_RGB: {\n read: function read(original) {\n var test = original.match(/^rgb\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3])\n };\n },\n write: colorToString\n },\n CSS_RGBA: {\n read: function read(original) {\n var test = original.match(/^rgba\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3]),\n a: parseFloat(test[4])\n };\n },\n write: colorToString\n }\n }\n},\n{\n litmus: Common.isNumber,\n conversions: {\n HEX: {\n read: function read(original) {\n return {\n space: 'HEX',\n hex: original,\n conversionName: 'HEX'\n };\n },\n write: function write(color) {\n return color.hex;\n }\n }\n }\n},\n{\n litmus: Common.isArray,\n conversions: {\n RGB_ARRAY: {\n read: function read(original) {\n if (original.length !== 3) {\n return false;\n }\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b];\n }\n },\n RGBA_ARRAY: {\n read: function read(original) {\n if (original.length !== 4) return false;\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2],\n a: original[3]\n };\n },\n write: function write(color) {\n return [color.r, color.g, color.b, color.a];\n }\n }\n }\n},\n{\n litmus: Common.isObject,\n conversions: {\n RGBA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b,\n a: color.a\n };\n }\n },\n RGB_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b\n };\n }\n },\n HSVA_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v,\n a: original.a\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v,\n a: color.a\n };\n }\n },\n HSV_OBJ: {\n read: function read(original) {\n if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v\n };\n }\n return false;\n },\n write: function write(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v\n };\n }\n }\n }\n}];\nvar result = void 0;\nvar toReturn = void 0;\nvar interpret = function interpret() {\n toReturn = false;\n var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0];\n Common.each(INTERPRETATIONS, function (family) {\n if (family.litmus(original)) {\n Common.each(family.conversions, function (conversion, conversionName) {\n result = conversion.read(original);\n if (toReturn === false && result !== false) {\n toReturn = result;\n result.conversionName = conversionName;\n result.conversion = conversion;\n return Common.BREAK;\n }\n });\n return Common.BREAK;\n }\n });\n return toReturn;\n};\n\nvar tmpComponent = void 0;\nvar ColorMath = {\n hsv_to_rgb: function hsv_to_rgb(h, s, v) {\n var hi = Math.floor(h / 60) % 6;\n var f = h / 60 - Math.floor(h / 60);\n var p = v * (1.0 - s);\n var q = v * (1.0 - f * s);\n var t = v * (1.0 - (1.0 - f) * s);\n var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi];\n return {\n r: c[0] * 255,\n g: c[1] * 255,\n b: c[2] * 255\n };\n },\n rgb_to_hsv: function rgb_to_hsv(r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var h = void 0;\n var s = void 0;\n if (max !== 0) {\n s = delta / max;\n } else {\n return {\n h: NaN,\n s: 0,\n v: 0\n };\n }\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n h /= 6;\n if (h < 0) {\n h += 1;\n }\n return {\n h: h * 360,\n s: s,\n v: max / 255\n };\n },\n rgb_to_hex: function rgb_to_hex(r, g, b) {\n var hex = this.hex_with_component(0, 2, r);\n hex = this.hex_with_component(hex, 1, g);\n hex = this.hex_with_component(hex, 0, b);\n return hex;\n },\n component_from_hex: function component_from_hex(hex, componentIndex) {\n return hex >> componentIndex * 8 & 0xFF;\n },\n hex_with_component: function hex_with_component(hex, componentIndex, value) {\n return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent);\n }\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar Color = function () {\n function Color() {\n classCallCheck(this, Color);\n this.__state = interpret.apply(this, arguments);\n if (this.__state === false) {\n throw new Error('Failed to interpret color arguments');\n }\n this.__state.a = this.__state.a || 1;\n }\n createClass(Color, [{\n key: 'toString',\n value: function toString() {\n return colorToString(this);\n }\n }, {\n key: 'toHexString',\n value: function toHexString() {\n return colorToString(this, true);\n }\n }, {\n key: 'toOriginal',\n value: function toOriginal() {\n return this.__state.conversion.write(this);\n }\n }]);\n return Color;\n}();\nfunction defineRGBComponent(target, component, componentHexIndex) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'RGB') {\n return this.__state[component];\n }\n Color.recalculateRGB(this, component, componentHexIndex);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'RGB') {\n Color.recalculateRGB(this, component, componentHexIndex);\n this.__state.space = 'RGB';\n }\n this.__state[component] = v;\n }\n });\n}\nfunction defineHSVComponent(target, component) {\n Object.defineProperty(target, component, {\n get: function get$$1() {\n if (this.__state.space === 'HSV') {\n return this.__state[component];\n }\n Color.recalculateHSV(this);\n return this.__state[component];\n },\n set: function set$$1(v) {\n if (this.__state.space !== 'HSV') {\n Color.recalculateHSV(this);\n this.__state.space = 'HSV';\n }\n this.__state[component] = v;\n }\n });\n}\nColor.recalculateRGB = function (color, component, componentHexIndex) {\n if (color.__state.space === 'HEX') {\n color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex);\n } else if (color.__state.space === 'HSV') {\n Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v));\n } else {\n throw new Error('Corrupted color state');\n }\n};\nColor.recalculateHSV = function (color) {\n var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b);\n Common.extend(color.__state, {\n s: result.s,\n v: result.v\n });\n if (!Common.isNaN(result.h)) {\n color.__state.h = result.h;\n } else if (Common.isUndefined(color.__state.h)) {\n color.__state.h = 0;\n }\n};\nColor.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];\ndefineRGBComponent(Color.prototype, 'r', 2);\ndefineRGBComponent(Color.prototype, 'g', 1);\ndefineRGBComponent(Color.prototype, 'b', 0);\ndefineHSVComponent(Color.prototype, 'h');\ndefineHSVComponent(Color.prototype, 's');\ndefineHSVComponent(Color.prototype, 'v');\nObject.defineProperty(Color.prototype, 'a', {\n get: function get$$1() {\n return this.__state.a;\n },\n set: function set$$1(v) {\n this.__state.a = v;\n }\n});\nObject.defineProperty(Color.prototype, 'hex', {\n get: function get$$1() {\n if (!this.__state.space !== 'HEX') {\n this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b);\n }\n return this.__state.hex;\n },\n set: function set$$1(v) {\n this.__state.space = 'HEX';\n this.__state.hex = v;\n }\n});\n\nvar Controller = function () {\n function Controller(object, property) {\n classCallCheck(this, Controller);\n this.initialValue = object[property];\n this.domElement = document.createElement('div');\n this.object = object;\n this.property = property;\n this.__onChange = undefined;\n this.__onFinishChange = undefined;\n }\n createClass(Controller, [{\n key: 'onChange',\n value: function onChange(fnc) {\n this.__onChange = fnc;\n return this;\n }\n }, {\n key: 'onFinishChange',\n value: function onFinishChange(fnc) {\n this.__onFinishChange = fnc;\n return this;\n }\n }, {\n key: 'setValue',\n value: function setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.object[this.property];\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n return this;\n }\n }, {\n key: 'isModified',\n value: function isModified() {\n return this.initialValue !== this.getValue();\n }\n }]);\n return Controller;\n}();\n\nvar EVENT_MAP = {\n HTMLEvents: ['change'],\n MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],\n KeyboardEvents: ['keydown']\n};\nvar EVENT_MAP_INV = {};\nCommon.each(EVENT_MAP, function (v, k) {\n Common.each(v, function (e) {\n EVENT_MAP_INV[e] = k;\n });\n});\nvar CSS_VALUE_PIXELS = /(\\d+(\\.\\d+)?)px/;\nfunction cssValueToPixels(val) {\n if (val === '0' || Common.isUndefined(val)) {\n return 0;\n }\n var match = val.match(CSS_VALUE_PIXELS);\n if (!Common.isNull(match)) {\n return parseFloat(match[1]);\n }\n return 0;\n}\nvar dom = {\n makeSelectable: function makeSelectable(elem, selectable) {\n if (elem === undefined || elem.style === undefined) return;\n elem.onselectstart = selectable ? function () {\n return false;\n } : function () {};\n elem.style.MozUserSelect = selectable ? 'auto' : 'none';\n elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';\n elem.unselectable = selectable ? 'on' : 'off';\n },\n makeFullscreen: function makeFullscreen(elem, hor, vert) {\n var vertical = vert;\n var horizontal = hor;\n if (Common.isUndefined(horizontal)) {\n horizontal = true;\n }\n if (Common.isUndefined(vertical)) {\n vertical = true;\n }\n elem.style.position = 'absolute';\n if (horizontal) {\n elem.style.left = 0;\n elem.style.right = 0;\n }\n if (vertical) {\n elem.style.top = 0;\n elem.style.bottom = 0;\n }\n },\n fakeEvent: function fakeEvent(elem, eventType, pars, aux) {\n var params = pars || {};\n var className = EVENT_MAP_INV[eventType];\n if (!className) {\n throw new Error('Event type ' + eventType + ' not supported.');\n }\n var evt = document.createEvent(className);\n switch (className) {\n case 'MouseEvents':\n {\n var clientX = params.x || params.clientX || 0;\n var clientY = params.y || params.clientY || 0;\n evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0,\n 0,\n clientX,\n clientY,\n false, false, false, false, 0, null);\n break;\n }\n case 'KeyboardEvents':\n {\n var init = evt.initKeyboardEvent || evt.initKeyEvent;\n Common.defaults(params, {\n cancelable: true,\n ctrlKey: false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n keyCode: undefined,\n charCode: undefined\n });\n init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode);\n break;\n }\n default:\n {\n evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);\n break;\n }\n }\n Common.defaults(evt, aux);\n elem.dispatchEvent(evt);\n },\n bind: function bind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.addEventListener) {\n elem.addEventListener(event, func, bool);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + event, func);\n }\n return dom;\n },\n unbind: function unbind(elem, event, func, newBool) {\n var bool = newBool || false;\n if (elem.removeEventListener) {\n elem.removeEventListener(event, func, bool);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + event, func);\n }\n return dom;\n },\n addClass: function addClass(elem, className) {\n if (elem.className === undefined) {\n elem.className = className;\n } else if (elem.className !== className) {\n var classes = elem.className.split(/ +/);\n if (classes.indexOf(className) === -1) {\n classes.push(className);\n elem.className = classes.join(' ').replace(/^\\s+/, '').replace(/\\s+$/, '');\n }\n }\n return dom;\n },\n removeClass: function removeClass(elem, className) {\n if (className) {\n if (elem.className === className) {\n elem.removeAttribute('class');\n } else {\n var classes = elem.className.split(/ +/);\n var index = classes.indexOf(className);\n if (index !== -1) {\n classes.splice(index, 1);\n elem.className = classes.join(' ');\n }\n }\n } else {\n elem.className = undefined;\n }\n return dom;\n },\n hasClass: function hasClass(elem, className) {\n return new RegExp('(?:^|\\\\s+)' + className + '(?:\\\\s+|$)').test(elem.className) || false;\n },\n getWidth: function getWidth(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width);\n },\n getHeight: function getHeight(elem) {\n var style = getComputedStyle(elem);\n return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height);\n },\n getOffset: function getOffset(el) {\n var elem = el;\n var offset = { left: 0, top: 0 };\n if (elem.offsetParent) {\n do {\n offset.left += elem.offsetLeft;\n offset.top += elem.offsetTop;\n elem = elem.offsetParent;\n } while (elem);\n }\n return offset;\n },\n isActive: function isActive(elem) {\n return elem === document.activeElement && (elem.type || elem.href);\n }\n};\n\nvar BooleanController = function (_Controller) {\n inherits(BooleanController, _Controller);\n function BooleanController(object, property) {\n classCallCheck(this, BooleanController);\n var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property));\n var _this = _this2;\n _this2.__prev = _this2.getValue();\n _this2.__checkbox = document.createElement('input');\n _this2.__checkbox.setAttribute('type', 'checkbox');\n function onChange() {\n _this.setValue(!_this.__prev);\n }\n dom.bind(_this2.__checkbox, 'change', onChange, false);\n _this2.domElement.appendChild(_this2.__checkbox);\n _this2.updateDisplay();\n return _this2;\n }\n createClass(BooleanController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n this.__prev = this.getValue();\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (this.getValue() === true) {\n this.__checkbox.setAttribute('checked', 'checked');\n this.__checkbox.checked = true;\n this.__prev = true;\n } else {\n this.__checkbox.checked = false;\n this.__prev = false;\n }\n return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return BooleanController;\n}(Controller);\n\nvar OptionController = function (_Controller) {\n inherits(OptionController, _Controller);\n function OptionController(object, property, opts) {\n classCallCheck(this, OptionController);\n var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property));\n var options = opts;\n var _this = _this2;\n _this2.__select = document.createElement('select');\n if (Common.isArray(options)) {\n var map = {};\n Common.each(options, function (element) {\n map[element] = element;\n });\n options = map;\n }\n Common.each(options, function (value, key) {\n var opt = document.createElement('option');\n opt.innerHTML = key;\n opt.setAttribute('value', value);\n _this.__select.appendChild(opt);\n });\n _this2.updateDisplay();\n dom.bind(_this2.__select, 'change', function () {\n var desiredValue = this.options[this.selectedIndex].value;\n _this.setValue(desiredValue);\n });\n _this2.domElement.appendChild(_this2.__select);\n return _this2;\n }\n createClass(OptionController, [{\n key: 'setValue',\n value: function setValue(v) {\n var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n return toReturn;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (dom.isActive(this.__select)) return this;\n this.__select.value = this.getValue();\n return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return OptionController;\n}(Controller);\n\nvar StringController = function (_Controller) {\n inherits(StringController, _Controller);\n function StringController(object, property) {\n classCallCheck(this, StringController);\n var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property));\n var _this = _this2;\n function onChange() {\n _this.setValue(_this.__input.value);\n }\n function onBlur() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'keyup', onChange);\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n this.blur();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(StringController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n if (!dom.isActive(this.__input)) {\n this.__input.value = this.getValue();\n }\n return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return StringController;\n}(Controller);\n\nfunction numDecimals(x) {\n var _x = x.toString();\n if (_x.indexOf('.') > -1) {\n return _x.length - _x.indexOf('.') - 1;\n }\n return 0;\n}\nvar NumberController = function (_Controller) {\n inherits(NumberController, _Controller);\n function NumberController(object, property, params) {\n classCallCheck(this, NumberController);\n var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property));\n var _params = params || {};\n _this.__min = _params.min;\n _this.__max = _params.max;\n _this.__step = _params.step;\n if (Common.isUndefined(_this.__step)) {\n if (_this.initialValue === 0) {\n _this.__impliedStep = 1;\n } else {\n _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10;\n }\n } else {\n _this.__impliedStep = _this.__step;\n }\n _this.__precision = numDecimals(_this.__impliedStep);\n return _this;\n }\n createClass(NumberController, [{\n key: 'setValue',\n value: function setValue(v) {\n var _v = v;\n if (this.__min !== undefined && _v < this.__min) {\n _v = this.__min;\n } else if (this.__max !== undefined && _v > this.__max) {\n _v = this.__max;\n }\n if (this.__step !== undefined && _v % this.__step !== 0) {\n _v = Math.round(_v / this.__step) * this.__step;\n }\n return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v);\n }\n }, {\n key: 'min',\n value: function min(minValue) {\n this.__min = minValue;\n return this;\n }\n }, {\n key: 'max',\n value: function max(maxValue) {\n this.__max = maxValue;\n return this;\n }\n }, {\n key: 'step',\n value: function step(stepValue) {\n this.__step = stepValue;\n this.__impliedStep = stepValue;\n this.__precision = numDecimals(stepValue);\n return this;\n }\n }]);\n return NumberController;\n}(Controller);\n\nfunction roundToDecimal(value, decimals) {\n var tenTo = Math.pow(10, decimals);\n return Math.round(value * tenTo) / tenTo;\n}\nvar NumberControllerBox = function (_NumberController) {\n inherits(NumberControllerBox, _NumberController);\n function NumberControllerBox(object, property, params) {\n classCallCheck(this, NumberControllerBox);\n var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params));\n _this2.__truncationSuspended = false;\n var _this = _this2;\n var prevY = void 0;\n function onChange() {\n var attempted = parseFloat(_this.__input.value);\n if (!Common.isNaN(attempted)) {\n _this.setValue(attempted);\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onBlur() {\n onFinish();\n }\n function onMouseDrag(e) {\n var diff = prevY - e.clientY;\n _this.setValue(_this.getValue() + diff * _this.__impliedStep);\n prevY = e.clientY;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n onFinish();\n }\n function onMouseDown(e) {\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n prevY = e.clientY;\n }\n _this2.__input = document.createElement('input');\n _this2.__input.setAttribute('type', 'text');\n dom.bind(_this2.__input, 'change', onChange);\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__input, 'mousedown', onMouseDown);\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n _this.__truncationSuspended = true;\n this.blur();\n _this.__truncationSuspended = false;\n onFinish();\n }\n });\n _this2.updateDisplay();\n _this2.domElement.appendChild(_this2.__input);\n return _this2;\n }\n createClass(NumberControllerBox, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);\n return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerBox;\n}(NumberController);\n\nfunction map(v, i1, i2, o1, o2) {\n return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));\n}\nvar NumberControllerSlider = function (_NumberController) {\n inherits(NumberControllerSlider, _NumberController);\n function NumberControllerSlider(object, property, min, max, step) {\n classCallCheck(this, NumberControllerSlider);\n var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step }));\n var _this = _this2;\n _this2.__background = document.createElement('div');\n _this2.__foreground = document.createElement('div');\n dom.bind(_this2.__background, 'mousedown', onMouseDown);\n dom.bind(_this2.__background, 'touchstart', onTouchStart);\n dom.addClass(_this2.__background, 'slider');\n dom.addClass(_this2.__foreground, 'slider-fg');\n function onMouseDown(e) {\n document.activeElement.blur();\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n onMouseDrag(e);\n }\n function onMouseDrag(e) {\n e.preventDefault();\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n return false;\n }\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n function onTouchStart(e) {\n if (e.touches.length !== 1) {\n return;\n }\n dom.bind(window, 'touchmove', onTouchMove);\n dom.bind(window, 'touchend', onTouchEnd);\n onTouchMove(e);\n }\n function onTouchMove(e) {\n var clientX = e.touches[0].clientX;\n var bgRect = _this.__background.getBoundingClientRect();\n _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));\n }\n function onTouchEnd() {\n dom.unbind(window, 'touchmove', onTouchMove);\n dom.unbind(window, 'touchend', onTouchEnd);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n _this2.updateDisplay();\n _this2.__background.appendChild(_this2.__foreground);\n _this2.domElement.appendChild(_this2.__background);\n return _this2;\n }\n createClass(NumberControllerSlider, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var pct = (this.getValue() - this.__min) / (this.__max - this.__min);\n this.__foreground.style.width = pct * 100 + '%';\n return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this);\n }\n }]);\n return NumberControllerSlider;\n}(NumberController);\n\nvar FunctionController = function (_Controller) {\n inherits(FunctionController, _Controller);\n function FunctionController(object, property, text) {\n classCallCheck(this, FunctionController);\n var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property));\n var _this = _this2;\n _this2.__button = document.createElement('div');\n _this2.__button.innerHTML = text === undefined ? 'Fire' : text;\n dom.bind(_this2.__button, 'click', function (e) {\n e.preventDefault();\n _this.fire();\n return false;\n });\n dom.addClass(_this2.__button, 'button');\n _this2.domElement.appendChild(_this2.__button);\n return _this2;\n }\n createClass(FunctionController, [{\n key: 'fire',\n value: function fire() {\n if (this.__onChange) {\n this.__onChange.call(this);\n }\n this.getValue().call(this.object);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n }\n }]);\n return FunctionController;\n}(Controller);\n\nvar ColorController = function (_Controller) {\n inherits(ColorController, _Controller);\n function ColorController(object, property) {\n classCallCheck(this, ColorController);\n var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property));\n _this2.__color = new Color(_this2.getValue());\n _this2.__temp = new Color(0);\n var _this = _this2;\n _this2.domElement = document.createElement('div');\n dom.makeSelectable(_this2.domElement, false);\n _this2.__selector = document.createElement('div');\n _this2.__selector.className = 'selector';\n _this2.__saturation_field = document.createElement('div');\n _this2.__saturation_field.className = 'saturation-field';\n _this2.__field_knob = document.createElement('div');\n _this2.__field_knob.className = 'field-knob';\n _this2.__field_knob_border = '2px solid ';\n _this2.__hue_knob = document.createElement('div');\n _this2.__hue_knob.className = 'hue-knob';\n _this2.__hue_field = document.createElement('div');\n _this2.__hue_field.className = 'hue-field';\n _this2.__input = document.createElement('input');\n _this2.__input.type = 'text';\n _this2.__input_textShadow = '0 1px 1px ';\n dom.bind(_this2.__input, 'keydown', function (e) {\n if (e.keyCode === 13) {\n onBlur.call(this);\n }\n });\n dom.bind(_this2.__input, 'blur', onBlur);\n dom.bind(_this2.__selector, 'mousedown', function () {\n dom.addClass(this, 'drag').bind(window, 'mouseup', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n dom.bind(_this2.__selector, 'touchstart', function () {\n dom.addClass(this, 'drag').bind(window, 'touchend', function () {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n var valueField = document.createElement('div');\n Common.extend(_this2.__selector.style, {\n width: '122px',\n height: '102px',\n padding: '3px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n Common.extend(_this2.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n Common.extend(_this2.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n Common.extend(_this2.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n cursor: 'pointer'\n });\n Common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n Common.extend(_this2.__hue_field.style, {\n width: '15px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n right: '3px'\n });\n hueGradient(_this2.__hue_field);\n Common.extend(_this2.__input.style, {\n outline: 'none',\n textAlign: 'center',\n color: '#fff',\n border: 0,\n fontWeight: 'bold',\n textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n dom.bind(_this2.__saturation_field, 'mousedown', fieldDown);\n dom.bind(_this2.__saturation_field, 'touchstart', fieldDown);\n dom.bind(_this2.__field_knob, 'mousedown', fieldDown);\n dom.bind(_this2.__field_knob, 'touchstart', fieldDown);\n dom.bind(_this2.__hue_field, 'mousedown', fieldDownH);\n dom.bind(_this2.__hue_field, 'touchstart', fieldDownH);\n function fieldDown(e) {\n setSV(e);\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'touchmove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n dom.bind(window, 'touchend', fieldUpSV);\n }\n function fieldDownH(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'touchmove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n dom.bind(window, 'touchend', fieldUpH);\n }\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'touchmove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n dom.unbind(window, 'touchend', fieldUpSV);\n onFinish();\n }\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'touchmove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n dom.unbind(window, 'touchend', fieldUpH);\n onFinish();\n }\n function onBlur() {\n var i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n _this2.__saturation_field.appendChild(valueField);\n _this2.__selector.appendChild(_this2.__field_knob);\n _this2.__selector.appendChild(_this2.__saturation_field);\n _this2.__selector.appendChild(_this2.__hue_field);\n _this2.__hue_field.appendChild(_this2.__hue_knob);\n _this2.domElement.appendChild(_this2.__input);\n _this2.domElement.appendChild(_this2.__selector);\n _this2.updateDisplay();\n function setSV(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__saturation_field.getBoundingClientRect();\n var _ref = e.touches && e.touches[0] || e,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n _this.__color.v = v;\n _this.__color.s = s;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n function setH(e) {\n if (e.type.indexOf('touch') === -1) {\n e.preventDefault();\n }\n var fieldRect = _this.__hue_field.getBoundingClientRect();\n var _ref2 = e.touches && e.touches[0] || e,\n clientY = _ref2.clientY;\n var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n _this.__color.h = h * 360;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n return _this2;\n }\n createClass(ColorController, [{\n key: 'updateDisplay',\n value: function updateDisplay() {\n var i = interpret(this.getValue());\n if (i !== false) {\n var mismatch = false;\n Common.each(Color.COMPONENTS, function (component) {\n if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {};\n }\n }, this);\n if (mismatch) {\n Common.extend(this.__color.__state, i);\n }\n }\n Common.extend(this.__temp.__state, this.__color.__state);\n this.__temp.a = 1;\n var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0;\n var _flip = 255 - flip;\n Common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n this.__temp.s = 1;\n this.__temp.v = 1;\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n this.__input.value = this.__color.toString();\n Common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n }\n }]);\n return ColorController;\n}(Controller);\nvar vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n Common.each(vendors, function (vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nvar ControllerFactory = function ControllerFactory(object, property) {\n var initialValue = object[property];\n if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) {\n return new OptionController(object, property, arguments[2]);\n }\n if (Common.isNumber(initialValue)) {\n if (Common.isNumber(arguments[2]) && Common.isNumber(arguments[3])) {\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]);\n }\n return new NumberControllerSlider(object, property, arguments[2], arguments[3]);\n }\n if (Common.isNumber(arguments[4])) {\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3], step: arguments[4] });\n }\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });\n }\n if (Common.isString(initialValue)) {\n return new StringController(object, property);\n }\n if (Common.isFunction(initialValue)) {\n return new FunctionController(object, property, '');\n }\n if (Common.isBoolean(initialValue)) {\n return new BooleanController(object, property);\n }\n return null;\n};\n\nvar CustomController = function (_Controller) {\n inherits(CustomController, _Controller);\n function CustomController(object, property) {\n classCallCheck(this, CustomController);\n var _this = possibleConstructorReturn(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, object, property));\n _this.arguments = {\n object: object, property: property, opts: Array.prototype.slice.call(arguments, 2)\n };\n if (object.property) _this.property = object.property();\n return _this;\n }\n return CustomController;\n}(Controller);\n\nvar css = {\n load: function load(url, indoc) {\n var doc = indoc || document;\n var link = doc.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = url;\n doc.getElementsByTagName('head')[0].appendChild(link);\n },\n inject: function inject(cssContent, indoc) {\n var doc = indoc || document;\n var injected = document.createElement('style');\n injected.type = 'text/css';\n injected.innerHTML = cssContent;\n var head = doc.getElementsByTagName('head')[0];\n try {\n head.appendChild(injected);\n } catch (e) {\n }\n }\n};\n\nvar saveDialogContents = \"
\\n\\n Here's the new load parameter for your GUI's constructor:\\n\\n \\n\\n
\\n\\n Automatically save\\n values to localStorage on exit.\\n\\n
The values saved to localStorage will\\n override those passed to dat.GUI's constructor. This makes it\\n easier to work incrementally, but localStorage is fragile,\\n and your friends may not see the same values you do.\\n\\n
\\n\\n
\\n\\n
\";\n\nfunction requestAnimationFrame(callback) {\n setTimeout(callback, 1000 / 60);\n}\nvar requestAnimationFrame$1 = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || requestAnimationFrame;\n\nvar CenteredDiv = function () {\n function CenteredDiv() {\n classCallCheck(this, CenteredDiv);\n this.backgroundElement = document.createElement('div');\n Common.extend(this.backgroundElement.style, {\n backgroundColor: 'rgba(0,0,0,0.8)',\n top: 0,\n left: 0,\n display: 'none',\n zIndex: '1000',\n opacity: 0,\n WebkitTransition: 'opacity 0.2s linear',\n transition: 'opacity 0.2s linear'\n });\n dom.makeFullscreen(this.backgroundElement);\n this.backgroundElement.style.position = 'fixed';\n this.domElement = document.createElement('div');\n Common.extend(this.domElement.style, {\n position: 'fixed',\n display: 'none',\n zIndex: '1001',\n opacity: 0,\n WebkitTransition: '-webkit-transform 0.2s ease-out, opacity 0.2s linear',\n transition: 'transform 0.2s ease-out, opacity 0.2s linear'\n });\n document.body.appendChild(this.backgroundElement);\n document.body.appendChild(this.domElement);\n var _this = this;\n dom.bind(this.backgroundElement, 'click', function () {\n _this.hide();\n });\n }\n createClass(CenteredDiv, [{\n key: 'show',\n value: function show() {\n var _this = this;\n this.backgroundElement.style.display = 'block';\n this.domElement.style.display = 'block';\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n this.layout();\n Common.defer(function () {\n _this.backgroundElement.style.opacity = 1;\n _this.domElement.style.opacity = 1;\n _this.domElement.style.webkitTransform = 'scale(1)';\n });\n }\n }, {\n key: 'hide',\n value: function hide() {\n var _this = this;\n var hide = function hide() {\n _this.domElement.style.display = 'none';\n _this.backgroundElement.style.display = 'none';\n dom.unbind(_this.domElement, 'webkitTransitionEnd', hide);\n dom.unbind(_this.domElement, 'transitionend', hide);\n dom.unbind(_this.domElement, 'oTransitionEnd', hide);\n };\n dom.bind(this.domElement, 'webkitTransitionEnd', hide);\n dom.bind(this.domElement, 'transitionend', hide);\n dom.bind(this.domElement, 'oTransitionEnd', hide);\n this.backgroundElement.style.opacity = 0;\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.domElement.style.left = window.innerWidth / 2 - dom.getWidth(this.domElement) / 2 + 'px';\n this.domElement.style.top = window.innerHeight / 2 - dom.getHeight(this.domElement) / 2 + 'px';\n }\n }]);\n return CenteredDiv;\n}();\n\nvar styleSheet = ___$insertStyle(\".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\\n\");\n\ncss.inject(styleSheet);\nvar CSS_NAMESPACE = 'dg';\nvar HIDE_KEY_CODE = 72;\nvar CLOSE_BUTTON_HEIGHT = 20;\nvar DEFAULT_DEFAULT_PRESET_NAME = 'Default';\nvar SUPPORTS_LOCAL_STORAGE = function () {\n try {\n return !!window.localStorage;\n } catch (e) {\n return false;\n }\n}();\nvar SAVE_DIALOGUE = void 0;\nvar autoPlaceVirgin = true;\nvar autoPlaceContainer = void 0;\nvar hide = false;\nvar hideableGuis = [];\nvar GUI = function GUI(pars) {\n var _this = this;\n var params = pars || {};\n this.domElement = document.createElement('div');\n this.__ul = document.createElement('ul');\n this.domElement.appendChild(this.__ul);\n dom.addClass(this.domElement, CSS_NAMESPACE);\n this.__folders = {};\n this.__controllers = [];\n this.__rememberedObjects = [];\n this.__rememberedObjectIndecesToControllers = [];\n this.__listening = [];\n params = Common.defaults(params, {\n closeOnTop: false,\n autoPlace: true,\n width: GUI.DEFAULT_WIDTH\n });\n params = Common.defaults(params, {\n resizable: params.autoPlace,\n hideable: params.autoPlace\n });\n if (!Common.isUndefined(params.load)) {\n if (params.preset) {\n params.load.preset = params.preset;\n }\n } else {\n params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };\n }\n if (Common.isUndefined(params.parent) && params.hideable) {\n hideableGuis.push(this);\n }\n params.resizable = Common.isUndefined(params.parent) && params.resizable;\n if (params.autoPlace && Common.isUndefined(params.scrollable)) {\n params.scrollable = true;\n }\n var useLocalStorage = SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true';\n var saveToLocalStorage = void 0;\n var titleRow = void 0;\n Object.defineProperties(this,\n {\n parent: {\n get: function get$$1() {\n return params.parent;\n }\n },\n scrollable: {\n get: function get$$1() {\n return params.scrollable;\n }\n },\n autoPlace: {\n get: function get$$1() {\n return params.autoPlace;\n }\n },\n closeOnTop: {\n get: function get$$1() {\n return params.closeOnTop;\n }\n },\n preset: {\n get: function get$$1() {\n if (_this.parent) {\n return _this.getRoot().preset;\n }\n return params.load.preset;\n },\n set: function set$$1(v) {\n if (_this.parent) {\n _this.getRoot().preset = v;\n } else {\n params.load.preset = v;\n }\n setPresetSelectIndex(this);\n _this.revert();\n }\n },\n width: {\n get: function get$$1() {\n return params.width;\n },\n set: function set$$1(v) {\n params.width = v;\n setWidth(_this, v);\n }\n },\n name: {\n get: function get$$1() {\n return params.name;\n },\n set: function set$$1(v) {\n params.name = v;\n if (titleRow) {\n titleRow.innerHTML = params.name;\n }\n }\n },\n closed: {\n get: function get$$1() {\n return params.closed;\n },\n set: function set$$1(v) {\n params.closed = v;\n if (params.closed) {\n dom.addClass(_this.__ul, GUI.CLASS_CLOSED);\n } else {\n dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);\n }\n this.onResize();\n if (_this.__closeButton) {\n _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;\n }\n }\n },\n load: {\n get: function get$$1() {\n return params.load;\n }\n },\n useLocalStorage: {\n get: function get$$1() {\n return useLocalStorage;\n },\n set: function set$$1(bool) {\n if (SUPPORTS_LOCAL_STORAGE) {\n useLocalStorage = bool;\n if (bool) {\n dom.bind(window, 'unload', saveToLocalStorage);\n } else {\n dom.unbind(window, 'unload', saveToLocalStorage);\n }\n localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);\n }\n }\n }\n });\n if (Common.isUndefined(params.parent)) {\n this.closed = params.closed || false;\n dom.addClass(this.domElement, GUI.CLASS_MAIN);\n dom.makeSelectable(this.domElement, false);\n if (SUPPORTS_LOCAL_STORAGE) {\n if (useLocalStorage) {\n _this.useLocalStorage = true;\n var savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));\n if (savedGui) {\n params.load = JSON.parse(savedGui);\n }\n }\n }\n this.__closeButton = document.createElement('div');\n this.__closeButton.innerHTML = GUI.TEXT_CLOSED;\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);\n if (params.closeOnTop) {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);\n this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);\n } else {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);\n this.domElement.appendChild(this.__closeButton);\n }\n dom.bind(this.__closeButton, 'click', function () {\n _this.closed = !_this.closed;\n });\n } else {\n if (params.closed === undefined) {\n params.closed = true;\n }\n var titleRowName = document.createTextNode(params.name);\n dom.addClass(titleRowName, 'controller-name');\n titleRow = addRow(_this, titleRowName);\n var onClickTitle = function onClickTitle(e) {\n e.preventDefault();\n _this.closed = !_this.closed;\n return false;\n };\n dom.addClass(this.__ul, GUI.CLASS_CLOSED);\n dom.addClass(titleRow, 'title');\n dom.bind(titleRow, 'click', onClickTitle);\n if (!params.closed) {\n this.closed = false;\n }\n }\n if (params.autoPlace) {\n if (Common.isUndefined(params.parent)) {\n if (autoPlaceVirgin) {\n autoPlaceContainer = document.createElement('div');\n dom.addClass(autoPlaceContainer, CSS_NAMESPACE);\n dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);\n document.body.appendChild(autoPlaceContainer);\n autoPlaceVirgin = false;\n }\n autoPlaceContainer.appendChild(this.domElement);\n dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);\n }\n if (!this.parent) {\n setWidth(_this, params.width);\n }\n }\n this.__resizeHandler = function () {\n _this.onResizeDebounced();\n };\n dom.bind(window, 'resize', this.__resizeHandler);\n dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);\n dom.bind(this.__ul, 'transitionend', this.__resizeHandler);\n dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);\n this.onResize();\n if (params.resizable) {\n addResizeHandle(this);\n }\n saveToLocalStorage = function saveToLocalStorage() {\n if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') {\n localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));\n }\n };\n this.saveToLocalStorageIfPossible = saveToLocalStorage;\n function resetWidth() {\n var root = _this.getRoot();\n root.width += 1;\n Common.defer(function () {\n root.width -= 1;\n });\n }\n if (!params.parent) {\n resetWidth();\n }\n};\nGUI.toggleHide = function () {\n hide = !hide;\n Common.each(hideableGuis, function (gui) {\n gui.domElement.style.display = hide ? 'none' : '';\n });\n};\nGUI.CLASS_AUTO_PLACE = 'a';\nGUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';\nGUI.CLASS_MAIN = 'main';\nGUI.CLASS_CONTROLLER_ROW = 'cr';\nGUI.CLASS_TOO_TALL = 'taller-than-window';\nGUI.CLASS_CLOSED = 'closed';\nGUI.CLASS_CLOSE_BUTTON = 'close-button';\nGUI.CLASS_CLOSE_TOP = 'close-top';\nGUI.CLASS_CLOSE_BOTTOM = 'close-bottom';\nGUI.CLASS_DRAG = 'drag';\nGUI.DEFAULT_WIDTH = 245;\nGUI.TEXT_CLOSED = 'Close Controls';\nGUI.TEXT_OPEN = 'Open Controls';\nGUI._keydownHandler = function (e) {\n if (document.activeElement.type !== 'text' && (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {\n GUI.toggleHide();\n }\n};\ndom.bind(window, 'keydown', GUI._keydownHandler, false);\nCommon.extend(GUI.prototype,\n{\n add: function add(object, property) {\n return _add(this, object, property, {\n factoryArgs: Array.prototype.slice.call(arguments, 2)\n });\n },\n addColor: function addColor(object, property) {\n return _add(this, object, property, {\n color: true\n });\n },\n remove: function remove(controller) {\n this.__ul.removeChild(controller.__li);\n this.__controllers.splice(this.__controllers.indexOf(controller), 1);\n var _this = this;\n Common.defer(function () {\n _this.onResize();\n });\n },\n destroy: function destroy() {\n if (this.parent) {\n throw new Error('Only the root GUI should be removed with .destroy(). ' + 'For subfolders, use gui.removeFolder(folder) instead.');\n }\n if (this.autoPlace) {\n autoPlaceContainer.removeChild(this.domElement);\n }\n var _this = this;\n Common.each(this.__folders, function (subfolder) {\n _this.removeFolder(subfolder);\n });\n dom.unbind(window, 'keydown', GUI._keydownHandler, false);\n removeListeners(this);\n },\n addFolder: function addFolder(name) {\n if (this.__folders[name] !== undefined) {\n throw new Error('You already have a folder in this GUI by the' + ' name \"' + name + '\"');\n }\n var newGuiParams = { name: name, parent: this };\n newGuiParams.autoPlace = this.autoPlace;\n if (this.load &&\n this.load.folders &&\n this.load.folders[name]) {\n newGuiParams.closed = this.load.folders[name].closed;\n newGuiParams.load = this.load.folders[name];\n }\n var gui = new GUI(newGuiParams);\n this.__folders[name] = gui;\n var li = addRow(this, gui.domElement);\n dom.addClass(li, 'folder');\n return gui;\n },\n removeFolder: function removeFolder(folder) {\n this.__ul.removeChild(folder.domElement.parentElement);\n delete this.__folders[folder.name];\n if (this.load &&\n this.load.folders &&\n this.load.folders[folder.name]) {\n delete this.load.folders[folder.name];\n }\n removeListeners(folder);\n var _this = this;\n Common.each(folder.__folders, function (subfolder) {\n folder.removeFolder(subfolder);\n });\n Common.defer(function () {\n _this.onResize();\n });\n },\n open: function open() {\n this.closed = false;\n },\n close: function close() {\n this.closed = true;\n },\n hide: function hide() {\n this.domElement.style.display = 'none';\n },\n show: function show() {\n this.domElement.style.display = '';\n },\n onResize: function onResize() {\n var root = this.getRoot();\n if (root.scrollable) {\n var top = dom.getOffset(root.__ul).top;\n var h = 0;\n Common.each(root.__ul.childNodes, function (node) {\n if (!(root.autoPlace && node === root.__save_row)) {\n h += dom.getHeight(node);\n }\n });\n if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {\n dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';\n } else {\n dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = 'auto';\n }\n }\n if (root.__resize_handle) {\n Common.defer(function () {\n root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';\n });\n }\n if (root.__closeButton) {\n root.__closeButton.style.width = root.width + 'px';\n }\n },\n onResizeDebounced: Common.debounce(function () {\n this.onResize();\n }, 50),\n remember: function remember() {\n if (Common.isUndefined(SAVE_DIALOGUE)) {\n SAVE_DIALOGUE = new CenteredDiv();\n SAVE_DIALOGUE.domElement.innerHTML = saveDialogContents;\n }\n if (this.parent) {\n throw new Error('You can only call remember on a top level GUI.');\n }\n var _this = this;\n Common.each(Array.prototype.slice.call(arguments), function (object) {\n if (_this.__rememberedObjects.length === 0) {\n addSaveMenu(_this);\n }\n if (_this.__rememberedObjects.indexOf(object) === -1) {\n _this.__rememberedObjects.push(object);\n }\n });\n if (this.autoPlace) {\n setWidth(this, this.width);\n }\n },\n getRoot: function getRoot() {\n var gui = this;\n while (gui.parent) {\n gui = gui.parent;\n }\n return gui;\n },\n getSaveObject: function getSaveObject() {\n var toReturn = this.load;\n toReturn.closed = this.closed;\n if (this.__rememberedObjects.length > 0) {\n toReturn.preset = this.preset;\n if (!toReturn.remembered) {\n toReturn.remembered = {};\n }\n toReturn.remembered[this.preset] = getCurrentPreset(this);\n }\n toReturn.folders = {};\n Common.each(this.__folders, function (element, key) {\n toReturn.folders[key] = element.getSaveObject();\n });\n return toReturn;\n },\n save: function save() {\n if (!this.load.remembered) {\n this.load.remembered = {};\n }\n this.load.remembered[this.preset] = getCurrentPreset(this);\n markPresetModified(this, false);\n this.saveToLocalStorageIfPossible();\n },\n saveAs: function saveAs(presetName) {\n if (!this.load.remembered) {\n this.load.remembered = {};\n this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);\n }\n this.load.remembered[presetName] = getCurrentPreset(this);\n this.preset = presetName;\n addPresetOption(this, presetName, true);\n this.saveToLocalStorageIfPossible();\n },\n revert: function revert(gui) {\n Common.each(this.__controllers, function (controller) {\n if (!this.getRoot().load.remembered) {\n controller.setValue(controller.initialValue);\n } else {\n recallSavedValue(gui || this.getRoot(), controller);\n }\n if (controller.__onFinishChange) {\n controller.__onFinishChange.call(controller, controller.getValue());\n }\n }, this);\n Common.each(this.__folders, function (folder) {\n folder.revert(folder);\n });\n if (!gui) {\n markPresetModified(this.getRoot(), false);\n }\n },\n listen: function listen(controller) {\n var init = this.__listening.length === 0;\n this.__listening.push(controller);\n if (init) {\n updateDisplays(this.__listening);\n }\n },\n updateDisplay: function updateDisplay() {\n Common.each(this.__controllers, function (controller) {\n controller.updateDisplay();\n });\n Common.each(this.__folders, function (folder) {\n folder.updateDisplay();\n });\n }\n});\nfunction addRow(gui, newDom, liBefore) {\n var li = document.createElement('li');\n if (newDom) {\n li.appendChild(newDom);\n }\n if (liBefore) {\n gui.__ul.insertBefore(li, liBefore);\n } else {\n gui.__ul.appendChild(li);\n }\n gui.onResize();\n return li;\n}\nfunction removeListeners(gui) {\n dom.unbind(window, 'resize', gui.__resizeHandler);\n if (gui.saveToLocalStorageIfPossible) {\n dom.unbind(window, 'unload', gui.saveToLocalStorageIfPossible);\n }\n}\nfunction markPresetModified(gui, modified) {\n var opt = gui.__preset_select[gui.__preset_select.selectedIndex];\n if (modified) {\n opt.innerHTML = opt.value + '*';\n } else {\n opt.innerHTML = opt.value;\n }\n}\nfunction augmentController(gui, li, controller) {\n controller.__li = li;\n controller.__gui = gui;\n Common.extend(controller, {\n options: function options(_options) {\n if (arguments.length > 1) {\n var nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: nextSibling,\n factoryArgs: [Common.toArray(arguments)]\n });\n }\n if (Common.isArray(_options) || Common.isObject(_options)) {\n var _nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n return _add(gui, controller.object, controller.property, {\n before: _nextSibling,\n factoryArgs: [_options]\n });\n }\n },\n name: function name(_name) {\n controller.__li.firstElementChild.firstElementChild.innerHTML = _name;\n return controller;\n },\n listen: function listen() {\n controller.__gui.listen(controller);\n return controller;\n },\n remove: function remove() {\n controller.__gui.remove(controller);\n return controller;\n }\n });\n if (controller instanceof NumberControllerSlider) {\n var box = new NumberControllerBox(controller.object, controller.property, { min: controller.__min, max: controller.__max, step: controller.__step });\n Common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function (method) {\n var pc = controller[method];\n var pb = box[method];\n controller[method] = box[method] = function () {\n var args = Array.prototype.slice.call(arguments);\n pb.apply(box, args);\n return pc.apply(controller, args);\n };\n });\n dom.addClass(li, 'has-slider');\n controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);\n } else if (controller instanceof NumberControllerBox) {\n var r = function r(returned) {\n if (Common.isNumber(controller.__min) && Common.isNumber(controller.__max)) {\n var oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;\n var wasListening = controller.__gui.__listening.indexOf(controller) > -1;\n controller.remove();\n var newController = _add(gui, controller.object, controller.property, {\n before: controller.__li.nextElementSibling,\n factoryArgs: [controller.__min, controller.__max, controller.__step]\n });\n newController.name(oldName);\n if (wasListening) newController.listen();\n return newController;\n }\n return returned;\n };\n controller.min = Common.compose(r, controller.min);\n controller.max = Common.compose(r, controller.max);\n } else if (controller instanceof BooleanController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__checkbox, 'click');\n });\n dom.bind(controller.__checkbox, 'click', function (e) {\n e.stopPropagation();\n });\n } else if (controller instanceof FunctionController) {\n dom.bind(li, 'click', function () {\n dom.fakeEvent(controller.__button, 'click');\n });\n dom.bind(li, 'mouseover', function () {\n dom.addClass(controller.__button, 'hover');\n });\n dom.bind(li, 'mouseout', function () {\n dom.removeClass(controller.__button, 'hover');\n });\n } else if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = Common.compose(function (val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n controller.updateDisplay();\n }\n controller.setValue = Common.compose(function (val) {\n if (gui.getRoot().__preset_select && controller.isModified()) {\n markPresetModified(gui.getRoot(), true);\n }\n return val;\n }, controller.setValue);\n}\nfunction recallSavedValue(gui, controller) {\n var root = gui.getRoot();\n var matchedIndex = root.__rememberedObjects.indexOf(controller.object);\n if (matchedIndex !== -1) {\n var controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];\n if (controllerMap === undefined) {\n controllerMap = {};\n root.__rememberedObjectIndecesToControllers[matchedIndex] = controllerMap;\n }\n controllerMap[controller.property] = controller;\n if (root.load && root.load.remembered) {\n var presetMap = root.load.remembered;\n var preset = void 0;\n if (presetMap[gui.preset]) {\n preset = presetMap[gui.preset];\n } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {\n preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];\n } else {\n return;\n }\n if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {\n var value = preset[matchedIndex][controller.property];\n controller.initialValue = value;\n controller.setValue(value);\n }\n }\n }\n}\nfunction _add(gui, object, property, params) {\n var customObject;\n if (object.arguments) {\n customObject = object;\n object = customObject.arguments.object;\n property = customObject.arguments.property;\n params = {\n factoryArgs: customObject.arguments.opts\n };\n }\n if (customObject === undefined && object[property] === undefined) {\n throw new Error('Object \"' + object + '\" has no property \"' + property + '\"');\n }\n var controller = void 0;\n if (params.color) {\n controller = new ColorController(object, property);\n } else if (customObject !== undefined && typeof customObject.property === \"string\") {\n controller = customObject;\n } else {\n var factoryArgs = [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n if (controller === null) controller = customObject;\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n recallSavedValue(gui, controller);\n dom.addClass(controller.domElement, 'c');\n var name = document.createElement('span');\n dom.addClass(name, 'property-name');\n if (customObject !== undefined && _typeof(customObject.property) === \"object\") {\n for (var propertyName in customObject.property) {\n name.appendChild(customObject.property[propertyName]);\n }\n } else name.innerHTML = controller.property;\n var container = document.createElement('div');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n var li = addRow(gui, container, params.before);\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, _typeof(controller.getValue()));\n }\n augmentController(gui, li, controller);\n gui.__controllers.push(controller);\n return controller;\n}\nfunction getLocalStorageHash(gui, key) {\n return document.location.href + '.' + key;\n}\nfunction addPresetOption(gui, name, setSelected) {\n var opt = document.createElement('option');\n opt.innerHTML = name;\n opt.value = name;\n gui.__preset_select.appendChild(opt);\n if (setSelected) {\n gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;\n }\n}\nfunction showHideExplain(gui, explain) {\n explain.style.display = gui.useLocalStorage ? 'block' : 'none';\n}\nfunction addSaveMenu(gui) {\n var div = gui.__save_row = document.createElement('li');\n dom.addClass(gui.domElement, 'has-save');\n gui.__ul.insertBefore(div, gui.__ul.firstChild);\n dom.addClass(div, 'save-row');\n var gears = document.createElement('span');\n gears.innerHTML = ' ';\n dom.addClass(gears, 'button gears');\n var button = document.createElement('span');\n button.innerHTML = 'Save';\n dom.addClass(button, 'button');\n dom.addClass(button, 'save');\n var button2 = document.createElement('span');\n button2.innerHTML = 'New';\n dom.addClass(button2, 'button');\n dom.addClass(button2, 'save-as');\n var button3 = document.createElement('span');\n button3.innerHTML = 'Revert';\n dom.addClass(button3, 'button');\n dom.addClass(button3, 'revert');\n var select = gui.__preset_select = document.createElement('select');\n if (gui.load && gui.load.remembered) {\n Common.each(gui.load.remembered, function (value, key) {\n addPresetOption(gui, key, key === gui.preset);\n });\n } else {\n addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);\n }\n dom.bind(select, 'change', function () {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;\n }\n gui.preset = this.value;\n });\n div.appendChild(select);\n div.appendChild(gears);\n div.appendChild(button);\n div.appendChild(button2);\n div.appendChild(button3);\n if (SUPPORTS_LOCAL_STORAGE) {\n var explain = document.getElementById('dg-local-explain');\n var localStorageCheckBox = document.getElementById('dg-local-storage');\n var saveLocally = document.getElementById('dg-save-locally');\n saveLocally.style.display = 'block';\n if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {\n localStorageCheckBox.setAttribute('checked', 'checked');\n }\n showHideExplain(gui, explain);\n dom.bind(localStorageCheckBox, 'change', function () {\n gui.useLocalStorage = !gui.useLocalStorage;\n showHideExplain(gui, explain);\n });\n }\n var newConstructorTextArea = document.getElementById('dg-new-constructor');\n dom.bind(newConstructorTextArea, 'keydown', function (e) {\n if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {\n SAVE_DIALOGUE.hide();\n }\n });\n dom.bind(gears, 'click', function () {\n newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);\n SAVE_DIALOGUE.show();\n newConstructorTextArea.focus();\n newConstructorTextArea.select();\n });\n dom.bind(button, 'click', function () {\n gui.save();\n });\n dom.bind(button2, 'click', function () {\n var presetName = prompt('Enter a new preset name.');\n if (presetName) {\n gui.saveAs(presetName);\n }\n });\n dom.bind(button3, 'click', function () {\n gui.revert();\n });\n}\nfunction addResizeHandle(gui) {\n var pmouseX = void 0;\n gui.__resize_handle = document.createElement('div');\n Common.extend(gui.__resize_handle.style, {\n width: '6px',\n marginLeft: '-3px',\n height: '200px',\n cursor: 'ew-resize',\n position: 'absolute'\n });\n function drag(e) {\n e.preventDefault();\n gui.width += pmouseX - e.clientX;\n gui.onResize();\n pmouseX = e.clientX;\n return false;\n }\n function dragStop() {\n dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.unbind(window, 'mousemove', drag);\n dom.unbind(window, 'mouseup', dragStop);\n }\n function dragStart(e) {\n e.preventDefault();\n pmouseX = e.clientX;\n dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.bind(window, 'mousemove', drag);\n dom.bind(window, 'mouseup', dragStop);\n return false;\n }\n dom.bind(gui.__resize_handle, 'mousedown', dragStart);\n dom.bind(gui.__closeButton, 'mousedown', dragStart);\n gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);\n}\nfunction setWidth(gui, w) {\n gui.domElement.style.width = w + 'px';\n if (gui.__save_row && gui.autoPlace) {\n gui.__save_row.style.width = w + 'px';\n }\n if (gui.__closeButton) {\n gui.__closeButton.style.width = w + 'px';\n }\n}\nfunction getCurrentPreset(gui, useInitialValues) {\n var toReturn = {};\n Common.each(gui.__rememberedObjects, function (val, index) {\n var savedValues = {};\n var controllerMap = gui.__rememberedObjectIndecesToControllers[index];\n Common.each(controllerMap, function (controller, property) {\n savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();\n });\n toReturn[index] = savedValues;\n });\n return toReturn;\n}\nfunction setPresetSelectIndex(gui) {\n for (var index = 0; index < gui.__preset_select.length; index++) {\n if (gui.__preset_select[index].value === gui.preset) {\n gui.__preset_select.selectedIndex = index;\n }\n }\n}\nfunction updateDisplays(controllerArray) {\n if (controllerArray.length !== 0) {\n requestAnimationFrame$1.call(window, function () {\n updateDisplays(controllerArray);\n });\n }\n Common.each(controllerArray, function (c) {\n c.updateDisplay();\n });\n}\n\nvar color = {\n Color: Color,\n math: ColorMath,\n interpret: interpret\n};\nvar controllers = {\n Controller: Controller,\n BooleanController: BooleanController,\n OptionController: OptionController,\n StringController: StringController,\n NumberController: NumberController,\n NumberControllerBox: NumberControllerBox,\n NumberControllerSlider: NumberControllerSlider,\n FunctionController: FunctionController,\n ColorController: ColorController,\n CustomController: CustomController\n};\nvar dom$1 = { dom: dom };\nvar gui = { GUI: GUI };\nvar GUI$1 = GUI;\nvar index = {\n color: color,\n controllers: controllers,\n dom: dom$1,\n gui: gui,\n GUI: GUI$1\n};\n\nexport { color, controllers, dom$1 as dom, gui, GUI$1 as GUI };\nexport default index;\n//# sourceMappingURL=dat.gui.module.js.map\n","/**\r\n * Example of using of the dat.gui controllers.CustomController\r\n * https://github.com/anhr/dat.gui\r\n * @author Andrej Hristoliubov https://anhr.github.io/AboutMe/\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport { GUI, controllers } from '../../dat.gui';\r\n\r\n/**\r\n * @class Example of subtype of CustomController class.\r\n *\r\n * @extends dat.controllers.CustomController\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {number} a\r\n * @param {number} b\r\n */\r\nexport class KnobController extends controllers.CustomController {\r\n\tconstructor( object, property, a, b ) {\r\n\t\tsuper( object, property );\r\n\r\n\t\t// ... set up options if needed\r\n\r\n\t\tconst _this = this;\r\n\r\n\t\t//input element\r\n\t\tthis.__input = document.createElement( 'input' );\r\n\t\tthis.__input.setAttribute( 'type', 'number' );\r\n\t\tthis.__input.style.width = '40%';\r\n\t\tthis.updateDisplay();\r\n\t\tthis.domElement.appendChild( this.__input );\r\n\r\n\t\t//button element\r\n\t\tvar button = document.createElement( 'input' );\r\n\t\tbutton.setAttribute( 'type', 'button' );\r\n\t\tbutton.value = 'Set ' + property;\r\n\t\tbutton.style.width = '50%';\r\n\t\tbutton.onclick = function ( e ) {\r\n\t\t\tobject[property] = a + b;\r\n\t\t\t_this.updateDisplay();\r\n\t\t}\r\n\t\tthis.domElement.appendChild( button );\r\n\t}\r\n\r\n\tupdateDisplay() {\r\n\t\tthis.__input.value = this.getValue();\r\n\t}\r\n}\r\n\r\n/**\r\n * @class Example of subtype of CustomController class.\r\n * Periodically changes the selected 3D object.\r\n * Adds NumberControllerSlider controller into PlayController for changing of the rate of changing of 3D obects per second.\r\n *\r\n * @extends dat.controllers.CustomController\r\n *\r\n * @param {Function} init Returns an object with elements for adding into \"property-name\" class element.\r\n */\r\nexport class PlayController extends controllers.CustomController {\r\n\tconstructor( init ) {\r\n\t\tsuper( {\r\n\r\n\t\t\tplayRate: 1,//Default play rate is 1 changes per second\r\n\t\t\tproperty: init,\r\n\r\n\t\t}, 'playRate', 1, 25, 1 );\r\n\t\t//\t\tthis.property = init();\r\n\t\tif ( this.property === undefined )\r\n\t\t\tconsole.error( 'init() returns ' + this.property );\r\n\t}\r\n}\r\n\r\n/**\r\n * @class Example of subtype of CustomController class.\r\n * Selects previous or next 3D object\r\n *\r\n * @extends dat.controllers.CustomController\r\n *\r\n * @param {Function} init Returns an object with elements for adding into \"property-name\" class element.\r\n */\r\nexport class PrevAndNextController extends controllers.CustomController {\r\n\tconstructor( init ) {\r\n\t\tsuper( {\r\n\t\t\tproperty: init,\r\n\t\t} );\r\n\t\t//\t\tthis.property = init();\r\n\t\tif ( this.property === undefined )\r\n\t\t\tconsole.error( ' init() returns ' + this.property );\r\n\t}\r\n}\r\n"],"names":["___$insertStyle","css","window","style","document","createElement","setAttribute","innerHTML","head","appendChild","colorToString","color","forceCSSHex","colorFormat","__state","conversionName","toString","r","Math","round","g","b","a","h","s","toFixed","v","str","hex","length","ARR_EACH","Array","prototype","forEach","ARR_SLICE","slice","Common","extend","target","each","call","arguments","obj","keys","isObject","Object","key","isUndefined","bind","defaults","compose","toCall","args","i","apply","itr","scope","l","BREAK","_key","defer","fnc","debounce","func","threshold","callImmediately","timeout","delayed","callNow","setTimeout","toArray","undefined","isNull","_isNaN","isNaN","_x","isArray","constructor","isNumber","isString","isBoolean","isFunction","INTERPRETATIONS","read","original","test","match","parseInt","parseFloat","write","result","toReturn","interpret","family","litmus","conversions","conversion","tmpComponent","ColorMath","hsv_to_rgb","hi","floor","f","p","q","t","c","rgb_to_hsv","min","max","delta","NaN","rgb_to_hex","hex_with_component","component_from_hex","componentIndex","value","_typeof","Symbol","babelHelpers.typeof","iterator","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","get","object","property","receiver","Function","desc","getOwnPropertyDescriptor","parent","getPrototypeOf","getter","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","Color","Error","toHexString","toOriginal","defineRGBComponent","component","componentHexIndex","get$$1","space","recalculateRGB","set$$1","defineHSVComponent","recalculateHSV","COMPONENTS","Controller","initialValue","domElement","__onChange","__onFinishChange","onChange","onFinishChange","setValue","newValue","updateDisplay","getValue","isModified","EVENT_MAP","EVENT_MAP_INV","k","e","CSS_VALUE_PIXELS","cssValueToPixels","val","dom","makeSelectable","elem","selectable","onselectstart","MozUserSelect","KhtmlUserSelect","unselectable","makeFullscreen","hor","vert","vertical","horizontal","position","left","right","top","bottom","fakeEvent","eventType","pars","aux","params","className","evt","createEvent","clientX","x","clientY","y","initMouseEvent","bubbles","cancelable","clickCount","init","initKeyboardEvent","initKeyEvent","ctrlKey","altKey","shiftKey","metaKey","keyCode","charCode","initEvent","dispatchEvent","event","newBool","bool","addEventListener","attachEvent","unbind","removeEventListener","detachEvent","addClass","classes","split","indexOf","push","join","replace","removeClass","removeAttribute","index","splice","hasClass","RegExp","getWidth","getComputedStyle","width","getHeight","height","getOffset","el","offset","offsetParent","offsetLeft","offsetTop","isActive","activeElement","type","href","BooleanController","_Controller","_this2","_this","__prev","__checkbox","checked","OptionController","opts","options","__select","map","element","opt","desiredValue","selectedIndex","StringController","__input","onBlur","blur","numDecimals","NumberController","_params","__min","__max","__step","step","__impliedStep","pow","log","abs","LN10","__precision","_v","minValue","maxValue","stepValue","roundToDecimal","decimals","tenTo","NumberControllerBox","_NumberController","__truncationSuspended","prevY","attempted","onFinish","onMouseDrag","diff","onMouseUp","onMouseDown","i1","i2","o1","o2","NumberControllerSlider","__background","__foreground","onTouchStart","preventDefault","bgRect","getBoundingClientRect","touches","onTouchMove","onTouchEnd","pct","FunctionController","text","__button","fire","ColorController","__color","__temp","__selector","__saturation_field","__field_knob","__field_knob_border","__hue_knob","__hue_field","__input_textShadow","valueField","fieldDown","fieldDownH","setSV","fieldUpSV","setH","fieldUpH","fieldRect","_ref","_ref2","mismatch","flip","_flip","marginTop","vendors","linearGradient","background","vendor","cssText","hueGradient","ControllerFactory","CustomController","load","url","indoc","doc","link","rel","getElementsByTagName","inject","cssContent","injected","saveDialogContents","requestAnimationFrame","callback","requestAnimationFrame$1","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","CenteredDiv","backgroundElement","body","hide","show","display","opacity","webkitTransform","layout","innerWidth","innerHeight","styleSheet","CSS_NAMESPACE","HIDE_KEY_CODE","CLOSE_BUTTON_HEIGHT","DEFAULT_DEFAULT_PRESET_NAME","SUPPORTS_LOCAL_STORAGE","localStorage","SAVE_DIALOGUE","autoPlaceVirgin","autoPlaceContainer","hideableGuis","GUI","__ul","__folders","__controllers","__rememberedObjects","__rememberedObjectIndecesToControllers","__listening","DEFAULT_WIDTH","autoPlace","preset","hideable","resizable","scrollable","useLocalStorage","getItem","getLocalStorageHash","saveToLocalStorage","titleRow","closeOnTop","getRoot","revert","name","closed","CLASS_CLOSED","onResize","__closeButton","TEXT_OPEN","TEXT_CLOSED","setItem","CLASS_MAIN","savedGui","JSON","parse","CLASS_CLOSE_BUTTON","CLASS_CLOSE_TOP","insertBefore","childNodes","CLASS_CLOSE_BOTTOM","titleRowName","createTextNode","addRow","onClickTitle","CLASS_AUTO_PLACE_CONTAINER","CLASS_AUTO_PLACE","__resizeHandler","onResizeDebounced","stringify","getSaveObject","saveToLocalStorageIfPossible","resetWidth","root","toggleHide","gui","CLASS_CONTROLLER_ROW","CLASS_TOO_TALL","CLASS_DRAG","_keydownHandler","which","add","_add","addColor","remove","controller","removeChild","__li","destroy","subfolder","removeFolder","addFolder","newGuiParams","folders","li","folder","parentElement","open","close","node","__save_row","__resize_handle","offsetHeight","remember","remembered","getCurrentPreset","save","saveAs","presetName","listen","newDom","liBefore","removeListeners","markPresetModified","modified","__preset_select","augmentController","__gui","_options","nextSibling","nextElementSibling","_nextSibling","_name","firstElementChild","box","method","pc","pb","returned","oldName","wasListening","newController","stopPropagation","borderLeftColor","recallSavedValue","matchedIndex","controllerMap","presetMap","customObject","factoryArgs","concat","before","propertyName","container","location","addPresetOption","setSelected","showHideExplain","explain","addSaveMenu","div","firstChild","gears","button","button2","button3","select","getElementById","localStorageCheckBox","saveLocally","newConstructorTextArea","focus","prompt","addResizeHandle","pmouseX","drag","dragStop","dragStart","setWidth","w","useInitialValues","savedValues","setPresetSelectIndex","updateDisplays","controllerArray","controllers","KnobController","onclick","PlayController","console","error","PrevAndNextController"],"mappings":";;;;;;;;;;;;;;;;;;AAaA,SAASA,eAAT,CAAyBC,GAAzB,EAA8B;MACxB,CAACA,GAAL,EAAU;;;MAGN,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;;;MAI/BC,QAAQC,SAASC,aAAT,CAAuB,OAAvB,CAAZ;QAEMC,YAAN,CAAmB,MAAnB,EAA2B,UAA3B;QACMC,SAAN,GAAkBN,GAAlB;WACSO,IAAT,CAAcC,WAAd,CAA0BN,KAA1B;SAEOF,GAAP;;AAGF,SAASS,aAAT,CAAwBC,KAAxB,EAA+BC,WAA/B,EAA4C;MACtCC,cAAcF,MAAMG,OAAN,CAAcC,cAAd,CAA6BC,QAA7B,EAAlB;MACIC,IAAIC,KAAKC,KAAL,CAAWR,MAAMM,CAAjB,CAAR;MACIG,IAAIF,KAAKC,KAAL,CAAWR,MAAMS,CAAjB,CAAR;MACIC,IAAIH,KAAKC,KAAL,CAAWR,MAAMU,CAAjB,CAAR;MACIC,IAAIX,MAAMW,CAAd;MACIC,IAAIL,KAAKC,KAAL,CAAWR,MAAMY,CAAjB,CAAR;MACIC,IAAIb,MAAMa,CAAN,CAAQC,OAAR,CAAgB,CAAhB,CAAR;MACIC,IAAIf,MAAMe,CAAN,CAAQD,OAAR,CAAgB,CAAhB,CAAR;MACIb,eAAeC,gBAAgB,gBAA/B,IAAmDA,gBAAgB,cAAvE,EAAuF;QACjFc,MAAMhB,MAAMiB,GAAN,CAAUZ,QAAV,CAAmB,EAAnB,CAAV;WACOW,IAAIE,MAAJ,GAAa,CAApB,EAAuB;YACf,MAAMF,GAAZ;;WAEK,MAAMA,GAAb;GALF,MAMO,IAAId,gBAAgB,SAApB,EAA+B;WAC7B,SAASI,CAAT,GAAa,GAAb,GAAmBG,CAAnB,GAAuB,GAAvB,GAA6BC,CAA7B,GAAiC,GAAxC;GADK,MAEA,IAAIR,gBAAgB,UAApB,EAAgC;WAC9B,UAAUI,CAAV,GAAc,GAAd,GAAoBG,CAApB,GAAwB,GAAxB,GAA8BC,CAA9B,GAAkC,GAAlC,GAAwCC,CAAxC,GAA4C,GAAnD;GADK,MAEA,IAAIT,gBAAgB,KAApB,EAA2B;WACzB,OAAOF,MAAMiB,GAAN,CAAUZ,QAAV,CAAmB,EAAnB,CAAd;GADK,MAEA,IAAIH,gBAAgB,WAApB,EAAiC;WAC/B,MAAMI,CAAN,GAAU,GAAV,GAAgBG,CAAhB,GAAoB,GAApB,GAA0BC,CAA1B,GAA8B,GAArC;GADK,MAEA,IAAIR,gBAAgB,YAApB,EAAkC;WAChC,MAAMI,CAAN,GAAU,GAAV,GAAgBG,CAAhB,GAAoB,GAApB,GAA0BC,CAA1B,GAA8B,GAA9B,GAAoCC,CAApC,GAAwC,GAA/C;GADK,MAEA,IAAIT,gBAAgB,SAApB,EAA+B;WAC7B,QAAQI,CAAR,GAAY,KAAZ,GAAoBG,CAApB,GAAwB,KAAxB,GAAgCC,CAAhC,GAAoC,GAA3C;GADK,MAEA,IAAIR,gBAAgB,UAApB,EAAgC;WAC9B,QAAQI,CAAR,GAAY,KAAZ,GAAoBG,CAApB,GAAwB,KAAxB,GAAgCC,CAAhC,GAAoC,KAApC,GAA4CC,CAA5C,GAAgD,GAAvD;GADK,MAEA,IAAIT,gBAAgB,SAApB,EAA+B;WAC7B,QAAQU,CAAR,GAAY,KAAZ,GAAoBC,CAApB,GAAwB,KAAxB,GAAgCE,CAAhC,GAAoC,GAA3C;GADK,MAEA,IAAIb,gBAAgB,UAApB,EAAgC;WAC9B,QAAQU,CAAR,GAAY,KAAZ,GAAoBC,CAApB,GAAwB,KAAxB,GAAgCE,CAAhC,GAAoC,KAApC,GAA4CJ,CAA5C,GAAgD,GAAvD;;SAEK,gBAAP;;AAGF,IAAIQ,WAAWC,MAAMC,SAAN,CAAgBC,OAA/B;AACA,IAAIC,YAAYH,MAAMC,SAAN,CAAgBG,KAAhC;AACA,IAAIC,SAAS;SACJ,EADI;UAEH,SAASC,MAAT,CAAgBC,MAAhB,EAAwB;SACzBC,IAAL,CAAUL,UAAUM,IAAV,CAAeC,SAAf,EAA0B,CAA1B,CAAV,EAAwC,UAAUC,GAAV,EAAe;UACjDC,OAAO,KAAKC,QAAL,CAAcF,GAAd,IAAqBG,OAAOF,IAAP,CAAYD,GAAZ,CAArB,GAAwC,EAAnD;WACKT,OAAL,CAAa,UAAUa,GAAV,EAAe;YACtB,CAAC,KAAKC,WAAL,CAAiBL,IAAII,GAAJ,CAAjB,CAAL,EAAiC;iBACxBA,GAAP,IAAcJ,IAAII,GAAJ,CAAd;;OAFS,CAIXE,IAJW,CAIN,IAJM,CAAb;KAFF,EAOG,IAPH;WAQOV,MAAP;GAXS;YAaD,SAASW,WAAT,CAAkBX,MAAlB,EAA0B;SAC7BC,IAAL,CAAUL,UAAUM,IAAV,CAAeC,SAAf,EAA0B,CAA1B,CAAV,EAAwC,UAAUC,GAAV,EAAe;UACjDC,OAAO,KAAKC,QAAL,CAAcF,GAAd,IAAqBG,OAAOF,IAAP,CAAYD,GAAZ,CAArB,GAAwC,EAAnD;WACKT,OAAL,CAAa,UAAUa,GAAV,EAAe;YACtB,KAAKC,WAAL,CAAiBT,OAAOQ,GAAP,CAAjB,CAAJ,EAAmC;iBAC1BA,GAAP,IAAcJ,IAAII,GAAJ,CAAd;;OAFS,CAIXE,IAJW,CAIN,IAJM,CAAb;KAFF,EAOG,IAPH;WAQOV,MAAP;GAtBS;WAwBF,SAASY,OAAT,GAAmB;QACtBC,SAASjB,UAAUM,IAAV,CAAeC,SAAf,CAAb;WACO,YAAY;UACbW,OAAOlB,UAAUM,IAAV,CAAeC,SAAf,CAAX;WACK,IAAIY,IAAIF,OAAOtB,MAAP,GAAgB,CAA7B,EAAgCwB,KAAK,CAArC,EAAwCA,GAAxC,EAA6C;eACpC,CAACF,OAAOE,CAAP,EAAUC,KAAV,CAAgB,IAAhB,EAAsBF,IAAtB,CAAD,CAAP;;aAEKA,KAAK,CAAL,CAAP;KALF;GA1BS;QAkCL,SAASb,IAAT,CAAcG,GAAd,EAAmBa,GAAnB,EAAwBC,KAAxB,EAA+B;QAC/B,CAACd,GAAL,EAAU;;;QAGNZ,YAAYY,IAAIT,OAAhB,IAA2BS,IAAIT,OAAJ,KAAgBH,QAA/C,EAAyD;UACnDG,OAAJ,CAAYsB,GAAZ,EAAiBC,KAAjB;KADF,MAEO,IAAId,IAAIb,MAAJ,KAAea,IAAIb,MAAJ,GAAa,CAAhC,EAAmC;UACpCiB,MAAM,KAAK,CAAf;UACIW,IAAI,KAAK,CAAb;WACKX,MAAM,CAAN,EAASW,IAAIf,IAAIb,MAAtB,EAA8BiB,MAAMW,CAApC,EAAuCX,KAAvC,EAA8C;YACxCA,OAAOJ,GAAP,IAAca,IAAIf,IAAJ,CAASgB,KAAT,EAAgBd,IAAII,GAAJ,CAAhB,EAA0BA,GAA1B,MAAmC,KAAKY,KAA1D,EAAiE;;;;KAJ9D,MAQA;WACA,IAAIC,IAAT,IAAiBjB,GAAjB,EAAsB;YAChBa,IAAIf,IAAJ,CAASgB,KAAT,EAAgBd,IAAIiB,IAAJ,CAAhB,EAA2BA,IAA3B,MAAqC,KAAKD,KAA9C,EAAqD;;;;;GAlDhD;SAwDJ,SAASE,KAAT,CAAeC,GAAf,EAAoB;eACdA,GAAX,EAAgB,CAAhB;GAzDS;YA2DD,SAASC,QAAT,CAAkBC,IAAlB,EAAwBC,SAAxB,EAAmCC,eAAnC,EAAoD;QACxDC,UAAU,KAAK,CAAnB;WACO,YAAY;UACbxB,MAAM,IAAV;UACIU,OAAOX,SAAX;eACS0B,OAAT,GAAmB;kBACP,IAAV;YACI,CAACF,eAAL,EAAsBF,KAAKT,KAAL,CAAWZ,GAAX,EAAgBU,IAAhB;;UAEpBgB,UAAUH,mBAAmB,CAACC,OAAlC;mBACaA,OAAb;gBACUG,WAAWF,OAAX,EAAoBH,SAApB,CAAV;UACII,OAAJ,EAAa;aACNd,KAAL,CAAWZ,GAAX,EAAgBU,IAAhB;;KAXJ;GA7DS;WA4EF,SAASkB,UAAT,CAAiB5B,GAAjB,EAAsB;QACzBA,IAAI4B,OAAR,EAAiB,OAAO5B,IAAI4B,OAAJ,EAAP;WACVpC,UAAUM,IAAV,CAAeE,GAAf,CAAP;GA9ES;eAgFE,SAASK,WAAT,CAAqBL,GAArB,EAA0B;WAC9BA,QAAQ6B,SAAf;GAjFS;UAmFH,SAASC,MAAT,CAAgB9B,GAAhB,EAAqB;WACpBA,QAAQ,IAAf;GApFS;SAsFJ,UAAU+B,MAAV,EAAkB;aACdC,KAAT,CAAeC,EAAf,EAAmB;aACVF,OAAOnB,KAAP,CAAa,IAAb,EAAmBb,SAAnB,CAAP;;UAEIzB,QAAN,GAAiB,YAAY;aACpByD,OAAOzD,QAAP,EAAP;KADF;WAGO0D,KAAP;GAPK,CAQL,UAAUhC,GAAV,EAAe;WACRgC,MAAMhC,GAAN,CAAP;GATK,CAtFI;WAiGFX,MAAM6C,OAAN,IAAiB,UAAUlC,GAAV,EAAe;WAChCA,IAAImC,WAAJ,KAAoB9C,KAA3B;GAlGS;YAoGD,SAASa,QAAT,CAAkBF,GAAlB,EAAuB;WACxBA,QAAQG,OAAOH,GAAP,CAAf;GArGS;YAuGD,SAASoC,QAAT,CAAkBpC,GAAlB,EAAuB;WACxBA,QAAQA,MAAM,CAArB;GAxGS;YA0GD,SAASqC,QAAT,CAAkBrC,GAAlB,EAAuB;WACxBA,QAAQA,MAAM,EAArB;GA3GS;aA6GA,SAASsC,SAAT,CAAmBtC,GAAnB,EAAwB;WAC1BA,QAAQ,KAAR,IAAiBA,QAAQ,IAAhC;GA9GS;cAgHC,SAASuC,UAAT,CAAoBvC,GAApB,EAAyB;WAC5BG,OAAOb,SAAP,CAAiBhB,QAAjB,CAA0BwB,IAA1B,CAA+BE,GAA/B,MAAwC,mBAA/C;;CAjHJ;AAqHA,IAAIwC,kBAAkB,CACtB;UACU9C,OAAO2C,QADjB;eAEe;oBACK;YACR,SAASI,IAAT,CAAcC,QAAd,EAAwB;YACxBC,OAAOD,SAASE,KAAT,CAAe,oCAAf,CAAX;YACID,SAAS,IAAb,EAAmB;iBACV,KAAP;;eAEK;iBACE,KADF;eAEAE,SAAS,OAAOF,KAAK,CAAL,EAAQrE,QAAR,EAAP,GAA4BqE,KAAK,CAAL,EAAQrE,QAAR,EAA5B,GAAiDqE,KAAK,CAAL,EAAQrE,QAAR,EAAjD,GAAsEqE,KAAK,CAAL,EAAQrE,QAAR,EAAtE,GAA2FqE,KAAK,CAAL,EAAQrE,QAAR,EAA3F,GAAgHqE,KAAK,CAAL,EAAQrE,QAAR,EAAzH,EAA6I,CAA7I;SAFP;OANY;aAWPN;KAZE;kBAcG;YACN,SAASyE,IAAT,CAAcC,QAAd,EAAwB;YACxBC,OAAOD,SAASE,KAAT,CAAe,mBAAf,CAAX;YACID,SAAS,IAAb,EAAmB;iBACV,KAAP;;eAEK;iBACE,KADF;eAEAE,SAAS,OAAOF,KAAK,CAAL,EAAQrE,QAAR,EAAhB,EAAoC,CAApC;SAFP;OANU;aAWLN;KAzBE;aA2BF;YACD,SAASyE,IAAT,CAAcC,QAAd,EAAwB;YACxBC,OAAOD,SAASE,KAAT,CAAe,0CAAf,CAAX;YACID,SAAS,IAAb,EAAmB;iBACV,KAAP;;eAEK;iBACE,KADF;aAEFG,WAAWH,KAAK,CAAL,CAAX,CAFE;aAGFG,WAAWH,KAAK,CAAL,CAAX,CAHE;aAIFG,WAAWH,KAAK,CAAL,CAAX;SAJL;OANK;aAaA3E;KAxCE;cA0CD;YACF,SAASyE,IAAT,CAAcC,QAAd,EAAwB;YACxBC,OAAOD,SAASE,KAAT,CAAe,sDAAf,CAAX;YACID,SAAS,IAAb,EAAmB;iBACV,KAAP;;eAEK;iBACE,KADF;aAEFG,WAAWH,KAAK,CAAL,CAAX,CAFE;aAGFG,WAAWH,KAAK,CAAL,CAAX,CAHE;aAIFG,WAAWH,KAAK,CAAL,CAAX,CAJE;aAKFG,WAAWH,KAAK,CAAL,CAAX;SALL;OANM;aAcD3E;;;CA3DS,EA+DtB;UACU0B,OAAO0C,QADjB;eAEe;SACN;YACG,SAASK,IAAT,CAAcC,QAAd,EAAwB;eACrB;iBACE,KADF;eAEAA,QAFA;0BAGW;SAHlB;OAFC;aAQI,SAASK,KAAT,CAAe9E,KAAf,EAAsB;eACpBA,MAAMiB,GAAb;;;;CA3Ec,EAgFtB;UACUQ,OAAOwC,OADjB;eAEe;eACA;YACH,SAASO,IAAT,CAAcC,QAAd,EAAwB;YACxBA,SAASvD,MAAT,KAAoB,CAAxB,EAA2B;iBAClB,KAAP;;eAEK;iBACE,KADF;aAEFuD,SAAS,CAAT,CAFE;aAGFA,SAAS,CAAT,CAHE;aAIFA,SAAS,CAAT;SAJL;OALO;aAYF,SAASK,KAAT,CAAe9E,KAAf,EAAsB;eACpB,CAACA,MAAMM,CAAP,EAAUN,MAAMS,CAAhB,EAAmBT,MAAMU,CAAzB,CAAP;;KAdO;gBAiBC;YACJ,SAAS8D,IAAT,CAAcC,QAAd,EAAwB;YACxBA,SAASvD,MAAT,KAAoB,CAAxB,EAA2B,OAAO,KAAP;eACpB;iBACE,KADF;aAEFuD,SAAS,CAAT,CAFE;aAGFA,SAAS,CAAT,CAHE;aAIFA,SAAS,CAAT,CAJE;aAKFA,SAAS,CAAT;SALL;OAHQ;aAWH,SAASK,KAAT,CAAe9E,KAAf,EAAsB;eACpB,CAACA,MAAMM,CAAP,EAAUN,MAAMS,CAAhB,EAAmBT,MAAMU,CAAzB,EAA4BV,MAAMW,CAAlC,CAAP;;;;CA/Gc,EAoHtB;UACUc,OAAOQ,QADjB;eAEe;cACD;YACF,SAASuC,IAAT,CAAcC,QAAd,EAAwB;YACxBhD,OAAO0C,QAAP,CAAgBM,SAASnE,CAAzB,KAA+BmB,OAAO0C,QAAP,CAAgBM,SAAShE,CAAzB,CAA/B,IAA8DgB,OAAO0C,QAAP,CAAgBM,SAAS/D,CAAzB,CAA9D,IAA6Fe,OAAO0C,QAAP,CAAgBM,SAAS9D,CAAzB,CAAjG,EAA8H;iBACrH;mBACE,KADF;eAEF8D,SAASnE,CAFP;eAGFmE,SAAShE,CAHP;eAIFgE,SAAS/D,CAJP;eAKF+D,SAAS9D;WALd;;eAQK,KAAP;OAXM;aAaD,SAASmE,KAAT,CAAe9E,KAAf,EAAsB;eACpB;aACFA,MAAMM,CADJ;aAEFN,MAAMS,CAFJ;aAGFT,MAAMU,CAHJ;aAIFV,MAAMW;SAJX;;KAfO;aAuBF;YACD,SAAS6D,IAAT,CAAcC,QAAd,EAAwB;YACxBhD,OAAO0C,QAAP,CAAgBM,SAASnE,CAAzB,KAA+BmB,OAAO0C,QAAP,CAAgBM,SAAShE,CAAzB,CAA/B,IAA8DgB,OAAO0C,QAAP,CAAgBM,SAAS/D,CAAzB,CAAlE,EAA+F;iBACtF;mBACE,KADF;eAEF+D,SAASnE,CAFP;eAGFmE,SAAShE,CAHP;eAIFgE,SAAS/D;WAJd;;eAOK,KAAP;OAVK;aAYA,SAASoE,KAAT,CAAe9E,KAAf,EAAsB;eACpB;aACFA,MAAMM,CADJ;aAEFN,MAAMS,CAFJ;aAGFT,MAAMU;SAHX;;KApCO;cA2CD;YACF,SAAS8D,IAAT,CAAcC,QAAd,EAAwB;YACxBhD,OAAO0C,QAAP,CAAgBM,SAAS7D,CAAzB,KAA+Ba,OAAO0C,QAAP,CAAgBM,SAAS5D,CAAzB,CAA/B,IAA8DY,OAAO0C,QAAP,CAAgBM,SAAS1D,CAAzB,CAA9D,IAA6FU,OAAO0C,QAAP,CAAgBM,SAAS9D,CAAzB,CAAjG,EAA8H;iBACrH;mBACE,KADF;eAEF8D,SAAS7D,CAFP;eAGF6D,SAAS5D,CAHP;eAIF4D,SAAS1D,CAJP;eAKF0D,SAAS9D;WALd;;eAQK,KAAP;OAXM;aAaD,SAASmE,KAAT,CAAe9E,KAAf,EAAsB;eACpB;aACFA,MAAMY,CADJ;aAEFZ,MAAMa,CAFJ;aAGFb,MAAMe,CAHJ;aAIFf,MAAMW;SAJX;;KAzDO;aAiEF;YACD,SAAS6D,IAAT,CAAcC,QAAd,EAAwB;YACxBhD,OAAO0C,QAAP,CAAgBM,SAAS7D,CAAzB,KAA+Ba,OAAO0C,QAAP,CAAgBM,SAAS5D,CAAzB,CAA/B,IAA8DY,OAAO0C,QAAP,CAAgBM,SAAS1D,CAAzB,CAAlE,EAA+F;iBACtF;mBACE,KADF;eAEF0D,SAAS7D,CAFP;eAGF6D,SAAS5D,CAHP;eAIF4D,SAAS1D;WAJd;;eAOK,KAAP;OAVK;aAYA,SAAS+D,KAAT,CAAe9E,KAAf,EAAsB;eACpB;aACFA,MAAMY,CADJ;aAEFZ,MAAMa,CAFJ;aAGFb,MAAMe;SAHX;;;;CApMc,CAAtB;AA6MA,IAAIgE,SAAS,KAAK,CAAlB;AACA,IAAIC,WAAW,KAAK,CAApB;AACA,IAAIC,YAAY,SAASA,SAAT,GAAqB;aACxB,KAAX;MACIR,WAAW3C,UAAUZ,MAAV,GAAmB,CAAnB,GAAuBO,OAAOkC,OAAP,CAAe7B,SAAf,CAAvB,GAAmDA,UAAU,CAAV,CAAlE;SACOF,IAAP,CAAY2C,eAAZ,EAA6B,UAAUW,MAAV,EAAkB;QACzCA,OAAOC,MAAP,CAAcV,QAAd,CAAJ,EAA6B;aACpB7C,IAAP,CAAYsD,OAAOE,WAAnB,EAAgC,UAAUC,UAAV,EAAsBjF,cAAtB,EAAsC;iBAC3DiF,WAAWb,IAAX,CAAgBC,QAAhB,CAAT;YACIO,aAAa,KAAb,IAAsBD,WAAW,KAArC,EAA4C;qBAC/BA,MAAX;iBACO3E,cAAP,GAAwBA,cAAxB;iBACOiF,UAAP,GAAoBA,UAApB;iBACO5D,OAAOsB,KAAd;;OANJ;aASOtB,OAAOsB,KAAd;;GAXJ;SAcOiC,QAAP;CAjBF;AAoBA,IAAIM,eAAe,KAAK,CAAxB;AACA,IAAIC,YAAY;cACF,SAASC,UAAT,CAAoB5E,CAApB,EAAuBC,CAAvB,EAA0BE,CAA1B,EAA6B;QACnC0E,KAAKlF,KAAKmF,KAAL,CAAW9E,IAAI,EAAf,IAAqB,CAA9B;QACI+E,IAAI/E,IAAI,EAAJ,GAASL,KAAKmF,KAAL,CAAW9E,IAAI,EAAf,CAAjB;QACIgF,IAAI7E,KAAK,MAAMF,CAAX,CAAR;QACIgF,IAAI9E,KAAK,MAAM4E,IAAI9E,CAAf,CAAR;QACIiF,IAAI/E,KAAK,MAAM,CAAC,MAAM4E,CAAP,IAAY9E,CAAvB,CAAR;QACIkF,IAAI,CAAC,CAAChF,CAAD,EAAI+E,CAAJ,EAAOF,CAAP,CAAD,EAAY,CAACC,CAAD,EAAI9E,CAAJ,EAAO6E,CAAP,CAAZ,EAAuB,CAACA,CAAD,EAAI7E,CAAJ,EAAO+E,CAAP,CAAvB,EAAkC,CAACF,CAAD,EAAIC,CAAJ,EAAO9E,CAAP,CAAlC,EAA6C,CAAC+E,CAAD,EAAIF,CAAJ,EAAO7E,CAAP,CAA7C,EAAwD,CAACA,CAAD,EAAI6E,CAAJ,EAAOC,CAAP,CAAxD,EAAmEJ,EAAnE,CAAR;WACO;SACFM,EAAE,CAAF,IAAO,GADL;SAEFA,EAAE,CAAF,IAAO,GAFL;SAGFA,EAAE,CAAF,IAAO;KAHZ;GARY;cAcF,SAASC,UAAT,CAAoB1F,CAApB,EAAuBG,CAAvB,EAA0BC,CAA1B,EAA6B;QACnCuF,MAAM1F,KAAK0F,GAAL,CAAS3F,CAAT,EAAYG,CAAZ,EAAeC,CAAf,CAAV;QACIwF,MAAM3F,KAAK2F,GAAL,CAAS5F,CAAT,EAAYG,CAAZ,EAAeC,CAAf,CAAV;QACIyF,QAAQD,MAAMD,GAAlB;QACIrF,IAAI,KAAK,CAAb;QACIC,IAAI,KAAK,CAAb;QACIqF,QAAQ,CAAZ,EAAe;UACTC,QAAQD,GAAZ;KADF,MAEO;aACE;WACFE,GADE;WAEF,CAFE;WAGF;OAHL;;QAME9F,MAAM4F,GAAV,EAAe;UACT,CAACzF,IAAIC,CAAL,IAAUyF,KAAd;KADF,MAEO,IAAI1F,MAAMyF,GAAV,EAAe;UAChB,IAAI,CAACxF,IAAIJ,CAAL,IAAU6F,KAAlB;KADK,MAEA;UACD,IAAI,CAAC7F,IAAIG,CAAL,IAAU0F,KAAlB;;SAEG,CAAL;QACIvF,IAAI,CAAR,EAAW;WACJ,CAAL;;WAEK;SACFA,IAAI,GADF;SAEFC,CAFE;SAGFqF,MAAM;KAHX;GAxCY;cA8CF,SAASG,UAAT,CAAoB/F,CAApB,EAAuBG,CAAvB,EAA0BC,CAA1B,EAA6B;QACnCO,MAAM,KAAKqF,kBAAL,CAAwB,CAAxB,EAA2B,CAA3B,EAA8BhG,CAA9B,CAAV;UACM,KAAKgG,kBAAL,CAAwBrF,GAAxB,EAA6B,CAA7B,EAAgCR,CAAhC,CAAN;UACM,KAAK6F,kBAAL,CAAwBrF,GAAxB,EAA6B,CAA7B,EAAgCP,CAAhC,CAAN;WACOO,GAAP;GAlDY;sBAoDM,SAASsF,kBAAT,CAA4BtF,GAA5B,EAAiCuF,cAAjC,EAAiD;WAC5DvF,OAAOuF,iBAAiB,CAAxB,GAA4B,IAAnC;GArDY;sBAuDM,SAASF,kBAAT,CAA4BrF,GAA5B,EAAiCuF,cAAjC,EAAiDC,KAAjD,EAAwD;WACnEA,UAAUnB,eAAekB,iBAAiB,CAA1C,IAA+CvF,MAAM,EAAE,QAAQqE,YAAV,CAA5D;;CAxDJ;AA4DA,IAAIoB,YAAU,OAAOC,MAAP,KAAkB,UAAlB,IAAgCC,QAAOD,OAAOE,QAAd,MAA2B,QAA3D,GAAsE,UAAU9E,GAAV,EAAe;gBACnFA,GAAd,yCAAcA,GAAd;CADY,GAEV,UAAUA,GAAV,EAAe;SACVA,OAAO,OAAO4E,MAAP,KAAkB,UAAzB,IAAuC5E,IAAImC,WAAJ,KAAoByC,MAA3D,IAAqE5E,QAAQ4E,OAAOtF,SAApF,GAAgG,QAAhG,UAAkHU,GAAlH,yCAAkHA,GAAlH,CAAP;CAHF;AAgBA,IAAI+E,mBAAiB,SAAjBA,iBAAiB,CAAUC,QAAV,EAAoBC,WAApB,EAAiC;MAChD,EAAED,oBAAoBC,WAAtB,CAAJ,EAAwC;UAChC,IAAIC,SAAJ,CAAc,mCAAd,CAAN;;CAFJ;AAMA,IAAIC,gBAAc,YAAY;WACnBC,gBAAT,CAA0BxF,MAA1B,EAAkCyF,KAAlC,EAAyC;SAClC,IAAI1E,IAAI,CAAb,EAAgBA,IAAI0E,MAAMlG,MAA1B,EAAkCwB,GAAlC,EAAuC;UACjC2E,aAAaD,MAAM1E,CAAN,CAAjB;iBACW4E,UAAX,GAAwBD,WAAWC,UAAX,IAAyB,KAAjD;iBACWC,YAAX,GAA0B,IAA1B;UACI,WAAWF,UAAf,EAA2BA,WAAWG,QAAX,GAAsB,IAAtB;aACpBC,cAAP,CAAsB9F,MAAtB,EAA8B0F,WAAWlF,GAAzC,EAA8CkF,UAA9C;;;SAIG,UAAUL,WAAV,EAAuBU,UAAvB,EAAmCC,WAAnC,EAAgD;QACjDD,UAAJ,EAAgBP,iBAAiBH,YAAY3F,SAA7B,EAAwCqG,UAAxC;QACZC,WAAJ,EAAiBR,iBAAiBH,WAAjB,EAA8BW,WAA9B;WACVX,WAAP;GAHF;CAXgB,EAAlB;AAwBA,IAAIY,QAAM,SAASA,MAAT,CAAaC,MAAb,EAAqBC,QAArB,EAA+BC,QAA/B,EAAyC;MAC7CF,WAAW,IAAf,EAAqBA,SAASG,SAAS3G,SAAlB;MACjB4G,OAAO/F,OAAOgG,wBAAP,CAAgCL,MAAhC,EAAwCC,QAAxC,CAAX;MAEIG,SAASrE,SAAb,EAAwB;QAClBuE,SAASjG,OAAOkG,cAAP,CAAsBP,MAAtB,CAAb;QAEIM,WAAW,IAAf,EAAqB;aACZvE,SAAP;KADF,MAEO;aACEgE,OAAIO,MAAJ,EAAYL,QAAZ,EAAsBC,QAAtB,CAAP;;GANJ,MAQO,IAAI,WAAWE,IAAf,EAAqB;WACnBA,KAAKxB,KAAZ;GADK,MAEA;QACD4B,SAASJ,KAAKL,GAAlB;QAEIS,WAAWzE,SAAf,EAA0B;aACjBA,SAAP;;WAGKyE,OAAOxG,IAAP,CAAYkG,QAAZ,CAAP;;CArBJ;AAyBA,IAAIO,aAAW,SAAXA,WAAW,CAAUC,QAAV,EAAoBC,UAApB,EAAgC;MACzC,OAAOA,UAAP,KAAsB,UAAtB,IAAoCA,eAAe,IAAvD,EAA6D;UACrD,IAAIvB,SAAJ,CAAc,qEAAoEuB,UAApE,yCAAoEA,UAApE,EAAd,CAAN;;WAGOnH,SAAT,GAAqBa,OAAOuG,MAAP,CAAcD,cAAcA,WAAWnH,SAAvC,EAAkD;iBACxD;aACJkH,QADI;kBAEC,KAFD;gBAGD,IAHC;oBAIG;;GALG,CAArB;MAQIC,UAAJ,EAAgBtG,OAAOwG,cAAP,GAAwBxG,OAAOwG,cAAP,CAAsBH,QAAtB,EAAgCC,UAAhC,CAAxB,GAAsED,SAASI,SAAT,GAAqBH,UAA3F;CAblB;AA0BA,IAAII,8BAA4B,SAA5BA,4BAA4B,CAAUC,IAAV,EAAgBhH,IAAhB,EAAsB;MAChD,CAACgH,IAAL,EAAW;UACH,IAAIC,cAAJ,CAAmB,2DAAnB,CAAN;;SAGKjH,SAAS,QAAOA,IAAP,yCAAOA,IAAP,OAAgB,QAAhB,IAA4B,OAAOA,IAAP,KAAgB,UAArD,IAAmEA,IAAnE,GAA0EgH,IAAjF;CALF;AAQA,IAAIE,QAAQ,YAAY;WACbA,KAAT,GAAiB;qBACA,IAAf,EAAqBA,KAArB;SACK5I,OAAL,GAAe8E,UAAUtC,KAAV,CAAgB,IAAhB,EAAsBb,SAAtB,CAAf;QACI,KAAK3B,OAAL,KAAiB,KAArB,EAA4B;YACpB,IAAI6I,KAAJ,CAAU,qCAAV,CAAN;;SAEG7I,OAAL,CAAaQ,CAAb,GAAiB,KAAKR,OAAL,CAAaQ,CAAb,IAAkB,CAAnC;;gBAEUoI,KAAZ,EAAmB,CAAC;SACb,UADa;WAEX,SAAS1I,QAAT,GAAoB;aAClBN,cAAc,IAAd,CAAP;;GAHe,EAKhB;SACI,aADJ;WAEM,SAASkJ,WAAT,GAAuB;aACrBlJ,cAAc,IAAd,EAAoB,IAApB,CAAP;;GARe,EAUhB;SACI,YADJ;WAEM,SAASmJ,UAAT,GAAsB;aACpB,KAAK/I,OAAL,CAAakF,UAAb,CAAwBP,KAAxB,CAA8B,IAA9B,CAAP;;GAbe,CAAnB;SAgBOiE,KAAP;CAzBU,EAAZ;AA2BA,SAASI,kBAAT,CAA4BxH,MAA5B,EAAoCyH,SAApC,EAA+CC,iBAA/C,EAAkE;SACzD5B,cAAP,CAAsB9F,MAAtB,EAA8ByH,SAA9B,EAAyC;SAClC,SAASE,MAAT,GAAkB;UACjB,KAAKnJ,OAAL,CAAaoJ,KAAb,KAAuB,KAA3B,EAAkC;eACzB,KAAKpJ,OAAL,CAAaiJ,SAAb,CAAP;;YAEII,cAAN,CAAqB,IAArB,EAA2BJ,SAA3B,EAAsCC,iBAAtC;aACO,KAAKlJ,OAAL,CAAaiJ,SAAb,CAAP;KANqC;SAQlC,SAASK,MAAT,CAAgB1I,CAAhB,EAAmB;UAClB,KAAKZ,OAAL,CAAaoJ,KAAb,KAAuB,KAA3B,EAAkC;cAC1BC,cAAN,CAAqB,IAArB,EAA2BJ,SAA3B,EAAsCC,iBAAtC;aACKlJ,OAAL,CAAaoJ,KAAb,GAAqB,KAArB;;WAEGpJ,OAAL,CAAaiJ,SAAb,IAA0BrI,CAA1B;;GAbJ;;AAiBF,SAAS2I,kBAAT,CAA4B/H,MAA5B,EAAoCyH,SAApC,EAA+C;SACtC3B,cAAP,CAAsB9F,MAAtB,EAA8ByH,SAA9B,EAAyC;SAClC,SAASE,MAAT,GAAkB;UACjB,KAAKnJ,OAAL,CAAaoJ,KAAb,KAAuB,KAA3B,EAAkC;eACzB,KAAKpJ,OAAL,CAAaiJ,SAAb,CAAP;;YAEIO,cAAN,CAAqB,IAArB;aACO,KAAKxJ,OAAL,CAAaiJ,SAAb,CAAP;KANqC;SAQlC,SAASK,MAAT,CAAgB1I,CAAhB,EAAmB;UAClB,KAAKZ,OAAL,CAAaoJ,KAAb,KAAuB,KAA3B,EAAkC;cAC1BI,cAAN,CAAqB,IAArB;aACKxJ,OAAL,CAAaoJ,KAAb,GAAqB,KAArB;;WAEGpJ,OAAL,CAAaiJ,SAAb,IAA0BrI,CAA1B;;GAbJ;;AAiBFgI,MAAMS,cAAN,GAAuB,UAAUxJ,KAAV,EAAiBoJ,SAAjB,EAA4BC,iBAA5B,EAA+C;MAChErJ,MAAMG,OAAN,CAAcoJ,KAAd,KAAwB,KAA5B,EAAmC;UAC3BpJ,OAAN,CAAciJ,SAAd,IAA2B7D,UAAUgB,kBAAV,CAA6BvG,MAAMG,OAAN,CAAcc,GAA3C,EAAgDoI,iBAAhD,CAA3B;GADF,MAEO,IAAIrJ,MAAMG,OAAN,CAAcoJ,KAAd,KAAwB,KAA5B,EAAmC;WACjC7H,MAAP,CAAc1B,MAAMG,OAApB,EAA6BoF,UAAUC,UAAV,CAAqBxF,MAAMG,OAAN,CAAcS,CAAnC,EAAsCZ,MAAMG,OAAN,CAAcU,CAApD,EAAuDb,MAAMG,OAAN,CAAcY,CAArE,CAA7B;GADK,MAEA;UACC,IAAIiI,KAAJ,CAAU,uBAAV,CAAN;;CANJ;AASAD,MAAMY,cAAN,GAAuB,UAAU3J,KAAV,EAAiB;MAClC+E,SAASQ,UAAUS,UAAV,CAAqBhG,MAAMM,CAA3B,EAA8BN,MAAMS,CAApC,EAAuCT,MAAMU,CAA7C,CAAb;SACOgB,MAAP,CAAc1B,MAAMG,OAApB,EAA6B;OACxB4E,OAAOlE,CADiB;OAExBkE,OAAOhE;GAFZ;MAII,CAACU,OAAOsC,KAAP,CAAagB,OAAOnE,CAApB,CAAL,EAA6B;UACrBT,OAAN,CAAcS,CAAd,GAAkBmE,OAAOnE,CAAzB;GADF,MAEO,IAAIa,OAAOW,WAAP,CAAmBpC,MAAMG,OAAN,CAAcS,CAAjC,CAAJ,EAAyC;UACxCT,OAAN,CAAcS,CAAd,GAAkB,CAAlB;;CATJ;AAYAmI,MAAMa,UAAN,GAAmB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,KAA/B,EAAsC,GAAtC,CAAnB;AACAT,mBAAmBJ,MAAM1H,SAAzB,EAAoC,GAApC,EAAyC,CAAzC;AACA8H,mBAAmBJ,MAAM1H,SAAzB,EAAoC,GAApC,EAAyC,CAAzC;AACA8H,mBAAmBJ,MAAM1H,SAAzB,EAAoC,GAApC,EAAyC,CAAzC;AACAqI,mBAAmBX,MAAM1H,SAAzB,EAAoC,GAApC;AACAqI,mBAAmBX,MAAM1H,SAAzB,EAAoC,GAApC;AACAqI,mBAAmBX,MAAM1H,SAAzB,EAAoC,GAApC;AACAa,OAAOuF,cAAP,CAAsBsB,MAAM1H,SAA5B,EAAuC,GAAvC,EAA4C;OACrC,SAASiI,MAAT,GAAkB;WACd,KAAKnJ,OAAL,CAAaQ,CAApB;GAFwC;OAIrC,SAAS8I,MAAT,CAAgB1I,CAAhB,EAAmB;SACjBZ,OAAL,CAAaQ,CAAb,GAAiBI,CAAjB;;CALJ;AAQAmB,OAAOuF,cAAP,CAAsBsB,MAAM1H,SAA5B,EAAuC,KAAvC,EAA8C;OACvC,SAASiI,MAAT,GAAkB;QACjB,CAAC,KAAKnJ,OAAL,CAAaoJ,KAAd,KAAwB,KAA5B,EAAmC;WAC5BpJ,OAAL,CAAac,GAAb,GAAmBsE,UAAUc,UAAV,CAAqB,KAAK/F,CAA1B,EAA6B,KAAKG,CAAlC,EAAqC,KAAKC,CAA1C,CAAnB;;WAEK,KAAKP,OAAL,CAAac,GAApB;GAL0C;OAOvC,SAASwI,MAAT,CAAgB1I,CAAhB,EAAmB;SACjBZ,OAAL,CAAaoJ,KAAb,GAAqB,KAArB;SACKpJ,OAAL,CAAac,GAAb,GAAmBF,CAAnB;;CATJ;AAaA,IAAI8I,aAAa,YAAY;WAClBA,UAAT,CAAoBhC,MAApB,EAA4BC,QAA5B,EAAsC;qBACrB,IAAf,EAAqB+B,UAArB;SACKC,YAAL,GAAoBjC,OAAOC,QAAP,CAApB;SACKiC,UAAL,GAAkBtK,SAASC,aAAT,CAAuB,KAAvB,CAAlB;SACKmI,MAAL,GAAcA,MAAd;SACKC,QAAL,GAAgBA,QAAhB;SACKkC,UAAL,GAAkBpG,SAAlB;SACKqG,gBAAL,GAAwBrG,SAAxB;;gBAEUiG,UAAZ,EAAwB,CAAC;SAClB,UADkB;WAEhB,SAASK,QAAT,CAAkBhH,GAAlB,EAAuB;WACvB8G,UAAL,GAAkB9G,GAAlB;aACO,IAAP;;GAJoB,EAMrB;SACI,gBADJ;WAEM,SAASiH,cAAT,CAAwBjH,GAAxB,EAA6B;WAC7B+G,gBAAL,GAAwB/G,GAAxB;aACO,IAAP;;GAVoB,EAYrB;SACI,UADJ;WAEM,SAASkH,QAAT,CAAkBC,QAAlB,EAA4B;WAC5BxC,MAAL,CAAY,KAAKC,QAAjB,IAA6BuC,QAA7B;UACI,KAAKL,UAAT,EAAqB;aACdA,UAAL,CAAgBnI,IAAhB,CAAqB,IAArB,EAA2BwI,QAA3B;;WAEGC,aAAL;aACO,IAAP;;GApBoB,EAsBrB;SACI,UADJ;WAEM,SAASC,QAAT,GAAoB;aAClB,KAAK1C,MAAL,CAAY,KAAKC,QAAjB,CAAP;;GAzBoB,EA2BrB;SACI,eADJ;WAEM,SAASwC,aAAT,GAAyB;aACvB,IAAP;;GA9BoB,EAgCrB;SACI,YADJ;WAEM,SAASE,UAAT,GAAsB;aACpB,KAAKV,YAAL,KAAsB,KAAKS,QAAL,EAA7B;;GAnCoB,CAAxB;SAsCOV,UAAP;CAhDe,EAAjB;AAmDA,IAAIY,YAAY;cACF,CAAC,QAAD,CADE;eAED,CAAC,OAAD,EAAU,WAAV,EAAuB,WAAvB,EAAoC,SAApC,EAA+C,WAA/C,CAFC;kBAGE,CAAC,SAAD;CAHlB;AAKA,IAAIC,gBAAgB,EAApB;AACAjJ,OAAOG,IAAP,CAAY6I,SAAZ,EAAuB,UAAU1J,CAAV,EAAa4J,CAAb,EAAgB;SAC9B/I,IAAP,CAAYb,CAAZ,EAAe,UAAU6J,CAAV,EAAa;kBACZA,CAAd,IAAmBD,CAAnB;GADF;CADF;AAKA,IAAIE,mBAAmB,iBAAvB;AACA,SAASC,gBAAT,CAA0BC,GAA1B,EAA+B;MACzBA,QAAQ,GAAR,IAAetJ,OAAOW,WAAP,CAAmB2I,GAAnB,CAAnB,EAA4C;WACnC,CAAP;;MAEEpG,QAAQoG,IAAIpG,KAAJ,CAAUkG,gBAAV,CAAZ;MACI,CAACpJ,OAAOoC,MAAP,CAAcc,KAAd,CAAL,EAA2B;WAClBE,WAAWF,MAAM,CAAN,CAAX,CAAP;;SAEK,CAAP;;AAEF,IAAIqG,MAAM;kBACQ,SAASC,cAAT,CAAwBC,IAAxB,EAA8BC,UAA9B,EAA0C;QACpDD,SAAStH,SAAT,IAAsBsH,KAAK1L,KAAL,KAAeoE,SAAzC,EAAoD;SAC/CwH,aAAL,GAAqBD,aAAa,YAAY;aACrC,KAAP;KADmB,GAEjB,YAAY,EAFhB;SAGK3L,KAAL,CAAW6L,aAAX,GAA2BF,aAAa,MAAb,GAAsB,MAAjD;SACK3L,KAAL,CAAW8L,eAAX,GAA6BH,aAAa,MAAb,GAAsB,MAAnD;SACKI,YAAL,GAAoBJ,aAAa,IAAb,GAAoB,KAAxC;GARM;kBAUQ,SAASK,cAAT,CAAwBN,IAAxB,EAA8BO,GAA9B,EAAmCC,IAAnC,EAAyC;QACnDC,WAAWD,IAAf;QACIE,aAAaH,GAAjB;QACIhK,OAAOW,WAAP,CAAmBwJ,UAAnB,CAAJ,EAAoC;mBACrB,IAAb;;QAEEnK,OAAOW,WAAP,CAAmBuJ,QAAnB,CAAJ,EAAkC;iBACrB,IAAX;;SAEGnM,KAAL,CAAWqM,QAAX,GAAsB,UAAtB;QACID,UAAJ,EAAgB;WACTpM,KAAL,CAAWsM,IAAX,GAAkB,CAAlB;WACKtM,KAAL,CAAWuM,KAAX,GAAmB,CAAnB;;QAEEJ,QAAJ,EAAc;WACPnM,KAAL,CAAWwM,GAAX,GAAiB,CAAjB;WACKxM,KAAL,CAAWyM,MAAX,GAAoB,CAApB;;GA1BI;aA6BG,SAASC,SAAT,CAAmBhB,IAAnB,EAAyBiB,SAAzB,EAAoCC,IAApC,EAA0CC,GAA1C,EAA+C;QACpDC,SAASF,QAAQ,EAArB;QACIG,YAAY7B,cAAcyB,SAAd,CAAhB;QACI,CAACI,SAAL,EAAgB;YACR,IAAIvD,KAAJ,CAAU,gBAAgBmD,SAAhB,GAA4B,iBAAtC,CAAN;;QAEEK,MAAM/M,SAASgN,WAAT,CAAqBF,SAArB,CAAV;YACQA,SAAR;WACO,aAAL;;cAEQG,UAAUJ,OAAOK,CAAP,IAAYL,OAAOI,OAAnB,IAA8B,CAA5C;cACIE,UAAUN,OAAOO,CAAP,IAAYP,OAAOM,OAAnB,IAA8B,CAA5C;cACIE,cAAJ,CAAmBX,SAAnB,EAA8BG,OAAOS,OAAP,IAAkB,KAAhD,EAAuDT,OAAOU,UAAP,IAAqB,IAA5E,EAAkFzN,MAAlF,EAA0F+M,OAAOW,UAAP,IAAqB,CAA/G,EAAkH,CAAlH,EACA,CADA,EAEAP,OAFA,EAGAE,OAHA,EAIA,KAJA,EAIO,KAJP,EAIc,KAJd,EAIqB,KAJrB,EAI4B,CAJ5B,EAI+B,IAJ/B;;;WAOC,gBAAL;;cAEQM,OAAOV,IAAIW,iBAAJ,IAAyBX,IAAIY,YAAxC;iBACO9K,QAAP,CAAgBgK,MAAhB,EAAwB;wBACV,IADU;qBAEb,KAFa;oBAGd,KAHc;sBAIZ,KAJY;qBAKb,KALa;qBAMb1I,SANa;sBAOZA;WAPZ;eASKuI,SAAL,EAAgBG,OAAOS,OAAP,IAAkB,KAAlC,EAAyCT,OAAOU,UAAhD,EAA4DzN,MAA5D,EAAoE+M,OAAOe,OAA3E,EAAoFf,OAAOgB,MAA3F,EAAmGhB,OAAOiB,QAA1G,EAAoHjB,OAAOkB,OAA3H,EAAoIlB,OAAOmB,OAA3I,EAAoJnB,OAAOoB,QAA3J;;;;;cAKIC,SAAJ,CAAcxB,SAAd,EAAyBG,OAAOS,OAAP,IAAkB,KAA3C,EAAkDT,OAAOU,UAAP,IAAqB,IAAvE;;;;WAIC1K,QAAP,CAAgBkK,GAAhB,EAAqBH,GAArB;SACKuB,aAAL,CAAmBpB,GAAnB;GAtEM;QAwEF,SAASnK,IAAT,CAAc6I,IAAd,EAAoB2C,KAApB,EAA2BzK,IAA3B,EAAiC0K,OAAjC,EAA0C;QAC1CC,OAAOD,WAAW,KAAtB;QACI5C,KAAK8C,gBAAT,EAA2B;WACpBA,gBAAL,CAAsBH,KAAtB,EAA6BzK,IAA7B,EAAmC2K,IAAnC;KADF,MAEO,IAAI7C,KAAK+C,WAAT,EAAsB;WACtBA,WAAL,CAAiB,OAAOJ,KAAxB,EAA+BzK,IAA/B;;WAEK4H,GAAP;GA/EM;UAiFA,SAASkD,MAAT,CAAgBhD,IAAhB,EAAsB2C,KAAtB,EAA6BzK,IAA7B,EAAmC0K,OAAnC,EAA4C;QAC9CC,OAAOD,WAAW,KAAtB;QACI5C,KAAKiD,mBAAT,EAA8B;WACvBA,mBAAL,CAAyBN,KAAzB,EAAgCzK,IAAhC,EAAsC2K,IAAtC;KADF,MAEO,IAAI7C,KAAKkD,WAAT,EAAsB;WACtBA,WAAL,CAAiB,OAAOP,KAAxB,EAA+BzK,IAA/B;;WAEK4H,GAAP;GAxFM;YA0FE,SAASqD,QAAT,CAAkBnD,IAAlB,EAAwBqB,SAAxB,EAAmC;QACvCrB,KAAKqB,SAAL,KAAmB3I,SAAvB,EAAkC;WAC3B2I,SAAL,GAAiBA,SAAjB;KADF,MAEO,IAAIrB,KAAKqB,SAAL,KAAmBA,SAAvB,EAAkC;UACnC+B,UAAUpD,KAAKqB,SAAL,CAAegC,KAAf,CAAqB,IAArB,CAAd;UACID,QAAQE,OAAR,CAAgBjC,SAAhB,MAA+B,CAAC,CAApC,EAAuC;gBAC7BkC,IAAR,CAAalC,SAAb;aACKA,SAAL,GAAiB+B,QAAQI,IAAR,CAAa,GAAb,EAAkBC,OAAlB,CAA0B,MAA1B,EAAkC,EAAlC,EAAsCA,OAAtC,CAA8C,MAA9C,EAAsD,EAAtD,CAAjB;;;WAGG3D,GAAP;GApGM;eAsGK,SAAS4D,WAAT,CAAqB1D,IAArB,EAA2BqB,SAA3B,EAAsC;QAC7CA,SAAJ,EAAe;UACTrB,KAAKqB,SAAL,KAAmBA,SAAvB,EAAkC;aAC3BsC,eAAL,CAAqB,OAArB;OADF,MAEO;YACDP,UAAUpD,KAAKqB,SAAL,CAAegC,KAAf,CAAqB,IAArB,CAAd;YACIO,QAAQR,QAAQE,OAAR,CAAgBjC,SAAhB,CAAZ;YACIuC,UAAU,CAAC,CAAf,EAAkB;kBACRC,MAAR,CAAeD,KAAf,EAAsB,CAAtB;eACKvC,SAAL,GAAiB+B,QAAQI,IAAR,CAAa,GAAb,CAAjB;;;KARN,MAWO;WACAnC,SAAL,GAAiB3I,SAAjB;;WAEKoH,GAAP;GArHM;YAuHE,SAASgE,QAAT,CAAkB9D,IAAlB,EAAwBqB,SAAxB,EAAmC;WACpC,IAAI0C,MAAJ,CAAW,eAAe1C,SAAf,GAA2B,YAAtC,EAAoD7H,IAApD,CAAyDwG,KAAKqB,SAA9D,KAA4E,KAAnF;GAxHM;YA0HE,SAAS2C,QAAT,CAAkBhE,IAAlB,EAAwB;QAC5B1L,QAAQ2P,iBAAiBjE,IAAjB,CAAZ;WACOJ,iBAAiBtL,MAAM,mBAAN,CAAjB,IAA+CsL,iBAAiBtL,MAAM,oBAAN,CAAjB,CAA/C,GAA+FsL,iBAAiBtL,MAAM,cAAN,CAAjB,CAA/F,GAAyIsL,iBAAiBtL,MAAM,eAAN,CAAjB,CAAzI,GAAoLsL,iBAAiBtL,MAAM4P,KAAvB,CAA3L;GA5HM;aA8HG,SAASC,SAAT,CAAmBnE,IAAnB,EAAyB;QAC9B1L,QAAQ2P,iBAAiBjE,IAAjB,CAAZ;WACOJ,iBAAiBtL,MAAM,kBAAN,CAAjB,IAA8CsL,iBAAiBtL,MAAM,qBAAN,CAAjB,CAA9C,GAA+FsL,iBAAiBtL,MAAM,aAAN,CAAjB,CAA/F,GAAwIsL,iBAAiBtL,MAAM,gBAAN,CAAjB,CAAxI,GAAoLsL,iBAAiBtL,MAAM8P,MAAvB,CAA3L;GAhIM;aAkIG,SAASC,SAAT,CAAmBC,EAAnB,EAAuB;QAC5BtE,OAAOsE,EAAX;QACIC,SAAS,EAAE3D,MAAM,CAAR,EAAWE,KAAK,CAAhB,EAAb;QACId,KAAKwE,YAAT,EAAuB;SAClB;eACM5D,IAAP,IAAeZ,KAAKyE,UAApB;eACO3D,GAAP,IAAcd,KAAK0E,SAAnB;eACO1E,KAAKwE,YAAZ;OAHF,QAISxE,IAJT;;WAMKuE,MAAP;GA5IM;YA8IE,SAASI,QAAT,CAAkB3E,IAAlB,EAAwB;WACzBA,SAASzL,SAASqQ,aAAlB,KAAoC5E,KAAK6E,IAAL,IAAa7E,KAAK8E,IAAtD,CAAP;;CA/IJ;AAmJA,IAAIC,oBAAoB,UAAUC,WAAV,EAAuB;aACpCD,iBAAT,EAA4BC,WAA5B;WACSD,iBAAT,CAA2BpI,MAA3B,EAAmCC,QAAnC,EAA6C;qBAC5B,IAAf,EAAqBmI,iBAArB;QACIE,SAASvH,4BAA0B,IAA1B,EAAgC,CAACqH,kBAAkBtH,SAAlB,IAA+BzG,OAAOkG,cAAP,CAAsB6H,iBAAtB,CAAhC,EAA0EpO,IAA1E,CAA+E,IAA/E,EAAqFgG,MAArF,EAA6FC,QAA7F,CAAhC,CAAb;QACIsI,QAAQD,MAAZ;WACOE,MAAP,GAAgBF,OAAO5F,QAAP,EAAhB;WACO+F,UAAP,GAAoB7Q,SAASC,aAAT,CAAuB,OAAvB,CAApB;WACO4Q,UAAP,CAAkB3Q,YAAlB,CAA+B,MAA/B,EAAuC,UAAvC;aACSuK,QAAT,GAAoB;YACZE,QAAN,CAAe,CAACgG,MAAMC,MAAtB;;QAEEhO,IAAJ,CAAS8N,OAAOG,UAAhB,EAA4B,QAA5B,EAAsCpG,QAAtC,EAAgD,KAAhD;WACOH,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOG,UAArC;WACOhG,aAAP;WACO6F,MAAP;;gBAEUF,iBAAZ,EAA+B,CAAC;SACzB,UADyB;WAEvB,SAAS7F,QAAT,CAAkBrJ,CAAlB,EAAqB;UACtBiE,WAAW4C,MAAIqI,kBAAkB5O,SAAlB,CAA4BsH,SAA5B,IAAyCzG,OAAOkG,cAAP,CAAsB6H,kBAAkB5O,SAAxC,CAA7C,EAAiG,UAAjG,EAA6G,IAA7G,EAAmHQ,IAAnH,CAAwH,IAAxH,EAA8Hd,CAA9H,CAAf;UACI,KAAKkJ,gBAAT,EAA2B;aACpBA,gBAAL,CAAsBpI,IAAtB,CAA2B,IAA3B,EAAiC,KAAK0I,QAAL,EAAjC;;WAEG8F,MAAL,GAAc,KAAK9F,QAAL,EAAd;aACOvF,QAAP;;GAR2B,EAU5B;SACI,eADJ;WAEM,SAASsF,aAAT,GAAyB;UAC1B,KAAKC,QAAL,OAAoB,IAAxB,EAA8B;aACvB+F,UAAL,CAAgB3Q,YAAhB,CAA6B,SAA7B,EAAwC,SAAxC;aACK2Q,UAAL,CAAgBC,OAAhB,GAA0B,IAA1B;aACKF,MAAL,GAAc,IAAd;OAHF,MAIO;aACAC,UAAL,CAAgBC,OAAhB,GAA0B,KAA1B;aACKF,MAAL,GAAc,KAAd;;aAEKzI,MAAIqI,kBAAkB5O,SAAlB,CAA4BsH,SAA5B,IAAyCzG,OAAOkG,cAAP,CAAsB6H,kBAAkB5O,SAAxC,CAA7C,EAAiG,eAAjG,EAAkH,IAAlH,EAAwHQ,IAAxH,CAA6H,IAA7H,CAAP;;GArB2B,CAA/B;SAwBOoO,iBAAP;CAzCsB,CA0CtBpG,UA1CsB,CAAxB;AA4CA,IAAI2G,mBAAmB,UAAUN,WAAV,EAAuB;aACnCM,gBAAT,EAA2BN,WAA3B;WACSM,gBAAT,CAA0B3I,MAA1B,EAAkCC,QAAlC,EAA4C2I,IAA5C,EAAkD;qBACjC,IAAf,EAAqBD,gBAArB;QACIL,SAASvH,4BAA0B,IAA1B,EAAgC,CAAC4H,iBAAiB7H,SAAjB,IAA8BzG,OAAOkG,cAAP,CAAsBoI,gBAAtB,CAA/B,EAAwE3O,IAAxE,CAA6E,IAA7E,EAAmFgG,MAAnF,EAA2FC,QAA3F,CAAhC,CAAb;QACI4I,UAAUD,IAAd;QACIL,QAAQD,MAAZ;WACOQ,QAAP,GAAkBlR,SAASC,aAAT,CAAuB,QAAvB,CAAlB;QACI+B,OAAOwC,OAAP,CAAeyM,OAAf,CAAJ,EAA6B;UACvBE,MAAM,EAAV;aACOhP,IAAP,CAAY8O,OAAZ,EAAqB,UAAUG,OAAV,EAAmB;YAClCA,OAAJ,IAAeA,OAAf;OADF;gBAGUD,GAAV;;WAEKhP,IAAP,CAAY8O,OAAZ,EAAqB,UAAUjK,KAAV,EAAiBtE,GAAjB,EAAsB;UACrC2O,MAAMrR,SAASC,aAAT,CAAuB,QAAvB,CAAV;UACIE,SAAJ,GAAgBuC,GAAhB;UACIxC,YAAJ,CAAiB,OAAjB,EAA0B8G,KAA1B;YACMkK,QAAN,CAAe7Q,WAAf,CAA2BgR,GAA3B;KAJF;WAMOxG,aAAP;QACIjI,IAAJ,CAAS8N,OAAOQ,QAAhB,EAA0B,QAA1B,EAAoC,YAAY;UAC1CI,eAAe,KAAKL,OAAL,CAAa,KAAKM,aAAlB,EAAiCvK,KAApD;YACM2D,QAAN,CAAe2G,YAAf;KAFF;WAIOhH,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOQ,QAArC;WACOR,MAAP;;gBAEUK,gBAAZ,EAA8B,CAAC;SACxB,UADwB;WAEtB,SAASpG,QAAT,CAAkBrJ,CAAlB,EAAqB;UACtBiE,WAAW4C,MAAI4I,iBAAiBnP,SAAjB,CAA2BsH,SAA3B,IAAwCzG,OAAOkG,cAAP,CAAsBoI,iBAAiBnP,SAAvC,CAA5C,EAA+F,UAA/F,EAA2G,IAA3G,EAAiHQ,IAAjH,CAAsH,IAAtH,EAA4Hd,CAA5H,CAAf;UACI,KAAKkJ,gBAAT,EAA2B;aACpBA,gBAAL,CAAsBpI,IAAtB,CAA2B,IAA3B,EAAiC,KAAK0I,QAAL,EAAjC;;aAEKvF,QAAP;;GAP0B,EAS3B;SACI,eADJ;WAEM,SAASsF,aAAT,GAAyB;UAC1BU,IAAI6E,QAAJ,CAAa,KAAKc,QAAlB,CAAJ,EAAiC,OAAO,IAAP;WAC5BA,QAAL,CAAclK,KAAd,GAAsB,KAAK8D,QAAL,EAAtB;aACO3C,MAAI4I,iBAAiBnP,SAAjB,CAA2BsH,SAA3B,IAAwCzG,OAAOkG,cAAP,CAAsBoI,iBAAiBnP,SAAvC,CAA5C,EAA+F,eAA/F,EAAgH,IAAhH,EAAsHQ,IAAtH,CAA2H,IAA3H,CAAP;;GAd0B,CAA9B;SAiBO2O,gBAAP;CA9CqB,CA+CrB3G,UA/CqB,CAAvB;AAiDA,IAAIoH,mBAAmB,UAAUf,WAAV,EAAuB;aACnCe,gBAAT,EAA2Bf,WAA3B;WACSe,gBAAT,CAA0BpJ,MAA1B,EAAkCC,QAAlC,EAA4C;qBAC3B,IAAf,EAAqBmJ,gBAArB;QACId,SAASvH,4BAA0B,IAA1B,EAAgC,CAACqI,iBAAiBtI,SAAjB,IAA8BzG,OAAOkG,cAAP,CAAsB6I,gBAAtB,CAA/B,EAAwEpP,IAAxE,CAA6E,IAA7E,EAAmFgG,MAAnF,EAA2FC,QAA3F,CAAhC,CAAb;QACIsI,QAAQD,MAAZ;aACSjG,QAAT,GAAoB;YACZE,QAAN,CAAegG,MAAMc,OAAN,CAAczK,KAA7B;;aAEO0K,MAAT,GAAkB;UACZf,MAAMnG,gBAAV,EAA4B;cACpBA,gBAAN,CAAuBpI,IAAvB,CAA4BuO,KAA5B,EAAmCA,MAAM7F,QAAN,EAAnC;;;WAGG2G,OAAP,GAAiBzR,SAASC,aAAT,CAAuB,OAAvB,CAAjB;WACOwR,OAAP,CAAevR,YAAf,CAA4B,MAA5B,EAAoC,MAApC;QACI0C,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,OAAzB,EAAkChH,QAAlC;QACI7H,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,QAAzB,EAAmChH,QAAnC;QACI7H,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,MAAzB,EAAiCC,MAAjC;QACI9O,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,SAAzB,EAAoC,UAAUtG,CAAV,EAAa;UAC3CA,EAAE6C,OAAF,KAAc,EAAlB,EAAsB;aACf2D,IAAL;;KAFJ;WAKO9G,aAAP;WACOP,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOe,OAArC;WACOf,MAAP;;gBAEUc,gBAAZ,EAA8B,CAAC;SACxB,eADwB;WAEtB,SAAS3G,aAAT,GAAyB;UAC1B,CAACU,IAAI6E,QAAJ,CAAa,KAAKqB,OAAlB,CAAL,EAAiC;aAC1BA,OAAL,CAAazK,KAAb,GAAqB,KAAK8D,QAAL,EAArB;;aAEK3C,MAAIqJ,iBAAiB5P,SAAjB,CAA2BsH,SAA3B,IAAwCzG,OAAOkG,cAAP,CAAsB6I,iBAAiB5P,SAAvC,CAA5C,EAA+F,eAA/F,EAAgH,IAAhH,EAAsHQ,IAAtH,CAA2H,IAA3H,CAAP;;GAN0B,CAA9B;SASOoP,gBAAP;CArCqB,CAsCrBpH,UAtCqB,CAAvB;AAwCA,SAASwH,WAAT,CAAqB1E,CAArB,EAAwB;MAClB3I,KAAK2I,EAAEtM,QAAF,EAAT;MACI2D,GAAGwK,OAAH,CAAW,GAAX,IAAkB,CAAC,CAAvB,EAA0B;WACjBxK,GAAG9C,MAAH,GAAY8C,GAAGwK,OAAH,CAAW,GAAX,CAAZ,GAA8B,CAArC;;SAEK,CAAP;;AAEF,IAAI8C,mBAAmB,UAAUpB,WAAV,EAAuB;aACnCoB,gBAAT,EAA2BpB,WAA3B;WACSoB,gBAAT,CAA0BzJ,MAA1B,EAAkCC,QAAlC,EAA4CwE,MAA5C,EAAoD;qBACnC,IAAf,EAAqBgF,gBAArB;QACIlB,QAAQxH,4BAA0B,IAA1B,EAAgC,CAAC0I,iBAAiB3I,SAAjB,IAA8BzG,OAAOkG,cAAP,CAAsBkJ,gBAAtB,CAA/B,EAAwEzP,IAAxE,CAA6E,IAA7E,EAAmFgG,MAAnF,EAA2FC,QAA3F,CAAhC,CAAZ;QACIyJ,UAAUjF,UAAU,EAAxB;UACMkF,KAAN,GAAcD,QAAQtL,GAAtB;UACMwL,KAAN,GAAcF,QAAQrL,GAAtB;UACMwL,MAAN,GAAeH,QAAQI,IAAvB;QACIlQ,OAAOW,WAAP,CAAmBgO,MAAMsB,MAAzB,CAAJ,EAAsC;UAChCtB,MAAMtG,YAAN,KAAuB,CAA3B,EAA8B;cACtB8H,aAAN,GAAsB,CAAtB;OADF,MAEO;cACCA,aAAN,GAAsBrR,KAAKsR,GAAL,CAAS,EAAT,EAAatR,KAAKmF,KAAL,CAAWnF,KAAKuR,GAAL,CAASvR,KAAKwR,GAAL,CAAS3B,MAAMtG,YAAf,CAAT,IAAyCvJ,KAAKyR,IAAzD,CAAb,IAA+E,EAArG;;KAJJ,MAMO;YACCJ,aAAN,GAAsBxB,MAAMsB,MAA5B;;UAEIO,WAAN,GAAoBZ,YAAYjB,MAAMwB,aAAlB,CAApB;WACOxB,KAAP;;gBAEUkB,gBAAZ,EAA8B,CAAC;SACxB,UADwB;WAEtB,SAASlH,QAAT,CAAkBrJ,CAAlB,EAAqB;UACtBmR,KAAKnR,CAAT;UACI,KAAKyQ,KAAL,KAAe5N,SAAf,IAA4BsO,KAAK,KAAKV,KAA1C,EAAiD;aAC1C,KAAKA,KAAV;OADF,MAEO,IAAI,KAAKC,KAAL,KAAe7N,SAAf,IAA4BsO,KAAK,KAAKT,KAA1C,EAAiD;aACjD,KAAKA,KAAV;;UAEE,KAAKC,MAAL,KAAgB9N,SAAhB,IAA6BsO,KAAK,KAAKR,MAAV,KAAqB,CAAtD,EAAyD;aAClDnR,KAAKC,KAAL,CAAW0R,KAAK,KAAKR,MAArB,IAA+B,KAAKA,MAAzC;;aAEK9J,MAAI0J,iBAAiBjQ,SAAjB,CAA2BsH,SAA3B,IAAwCzG,OAAOkG,cAAP,CAAsBkJ,iBAAiBjQ,SAAvC,CAA5C,EAA+F,UAA/F,EAA2G,IAA3G,EAAiHQ,IAAjH,CAAsH,IAAtH,EAA4HqQ,EAA5H,CAAP;;GAZ0B,EAc3B;SACI,KADJ;WAEM,SAASjM,GAAT,CAAakM,QAAb,EAAuB;WACvBX,KAAL,GAAaW,QAAb;aACO,IAAP;;GAlB0B,EAoB3B;SACI,KADJ;WAEM,SAASjM,GAAT,CAAakM,QAAb,EAAuB;WACvBX,KAAL,GAAaW,QAAb;aACO,IAAP;;GAxB0B,EA0B3B;SACI,MADJ;WAEM,SAAST,IAAT,CAAcU,SAAd,EAAyB;WACzBX,MAAL,GAAcW,SAAd;WACKT,aAAL,GAAqBS,SAArB;WACKJ,WAAL,GAAmBZ,YAAYgB,SAAZ,CAAnB;aACO,IAAP;;GAhC0B,CAA9B;SAmCOf,gBAAP;CAxDqB,CAyDrBzH,UAzDqB,CAAvB;AA2DA,SAASyI,cAAT,CAAwB7L,KAAxB,EAA+B8L,QAA/B,EAAyC;MACnCC,QAAQjS,KAAKsR,GAAL,CAAS,EAAT,EAAaU,QAAb,CAAZ;SACOhS,KAAKC,KAAL,CAAWiG,QAAQ+L,KAAnB,IAA4BA,KAAnC;;AAEF,IAAIC,sBAAsB,UAAUC,iBAAV,EAA6B;aAC5CD,mBAAT,EAA8BC,iBAA9B;WACSD,mBAAT,CAA6B5K,MAA7B,EAAqCC,QAArC,EAA+CwE,MAA/C,EAAuD;qBACtC,IAAf,EAAqBmG,mBAArB;QACItC,SAASvH,4BAA0B,IAA1B,EAAgC,CAAC6J,oBAAoB9J,SAApB,IAAiCzG,OAAOkG,cAAP,CAAsBqK,mBAAtB,CAAlC,EAA8E5Q,IAA9E,CAAmF,IAAnF,EAAyFgG,MAAzF,EAAiGC,QAAjG,EAA2GwE,MAA3G,CAAhC,CAAb;WACOqG,qBAAP,GAA+B,KAA/B;QACIvC,QAAQD,MAAZ;QACIyC,QAAQ,KAAK,CAAjB;aACS1I,QAAT,GAAoB;UACd2I,YAAYhO,WAAWuL,MAAMc,OAAN,CAAczK,KAAzB,CAAhB;UACI,CAAChF,OAAOsC,KAAP,CAAa8O,SAAb,CAAL,EAA8B;cACtBzI,QAAN,CAAeyI,SAAf;;;aAGKC,QAAT,GAAoB;UACd1C,MAAMnG,gBAAV,EAA4B;cACpBA,gBAAN,CAAuBpI,IAAvB,CAA4BuO,KAA5B,EAAmCA,MAAM7F,QAAN,EAAnC;;;aAGK4G,MAAT,GAAkB;;;aAGT4B,WAAT,CAAqBnI,CAArB,EAAwB;UAClBoI,OAAOJ,QAAQhI,EAAEgC,OAArB;YACMxC,QAAN,CAAegG,MAAM7F,QAAN,KAAmByI,OAAO5C,MAAMwB,aAA/C;cACQhH,EAAEgC,OAAV;;aAEOqG,SAAT,GAAqB;UACf/E,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgCwT,WAAhC;UACI7E,MAAJ,CAAW3O,MAAX,EAAmB,SAAnB,EAA8B0T,SAA9B;;;aAGOC,WAAT,CAAqBtI,CAArB,EAAwB;UAClBvI,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8BwT,WAA9B;UACI1Q,IAAJ,CAAS9C,MAAT,EAAiB,SAAjB,EAA4B0T,SAA5B;cACQrI,EAAEgC,OAAV;;WAEKsE,OAAP,GAAiBzR,SAASC,aAAT,CAAuB,OAAvB,CAAjB;WACOwR,OAAP,CAAevR,YAAf,CAA4B,MAA5B,EAAoC,MAApC;QACI0C,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,QAAzB,EAAmChH,QAAnC;QACI7H,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,MAAzB,EAAiCC,MAAjC;QACI9O,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,WAAzB,EAAsCgC,WAAtC;QACI7Q,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,SAAzB,EAAoC,UAAUtG,CAAV,EAAa;UAC3CA,EAAE6C,OAAF,KAAc,EAAlB,EAAsB;cACdkF,qBAAN,GAA8B,IAA9B;aACKvB,IAAL;cACMuB,qBAAN,GAA8B,KAA9B;;;KAJJ;WAQOrI,aAAP;WACOP,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOe,OAArC;WACOf,MAAP;;gBAEUsC,mBAAZ,EAAiC,CAAC;SAC3B,eAD2B;WAEzB,SAASnI,aAAT,GAAyB;WACzB4G,OAAL,CAAazK,KAAb,GAAqB,KAAKkM,qBAAL,GAA6B,KAAKpI,QAAL,EAA7B,GAA+C+H,eAAe,KAAK/H,QAAL,EAAf,EAAgC,KAAK0H,WAArC,CAApE;aACOrK,MAAI6K,oBAAoBpR,SAApB,CAA8BsH,SAA9B,IAA2CzG,OAAOkG,cAAP,CAAsBqK,oBAAoBpR,SAA1C,CAA/C,EAAqG,eAArG,EAAsH,IAAtH,EAA4HQ,IAA5H,CAAiI,IAAjI,CAAP;;GAJ6B,CAAjC;SAOO4Q,mBAAP;CA7DwB,CA8DxBnB,gBA9DwB,CAA1B;AAgEA,SAASV,GAAT,CAAa7P,CAAb,EAAgBoS,EAAhB,EAAoBC,EAApB,EAAwBC,EAAxB,EAA4BC,EAA5B,EAAgC;SACvBD,KAAK,CAACC,KAAKD,EAAN,KAAa,CAACtS,IAAIoS,EAAL,KAAYC,KAAKD,EAAjB,CAAb,CAAZ;;AAEF,IAAII,yBAAyB,UAAUb,iBAAV,EAA6B;aAC/Ca,sBAAT,EAAiCb,iBAAjC;WACSa,sBAAT,CAAgC1L,MAAhC,EAAwCC,QAAxC,EAAkD7B,GAAlD,EAAuDC,GAAvD,EAA4DyL,IAA5D,EAAkE;qBACjD,IAAf,EAAqB4B,sBAArB;QACIpD,SAASvH,4BAA0B,IAA1B,EAAgC,CAAC2K,uBAAuB5K,SAAvB,IAAoCzG,OAAOkG,cAAP,CAAsBmL,sBAAtB,CAArC,EAAoF1R,IAApF,CAAyF,IAAzF,EAA+FgG,MAA/F,EAAuGC,QAAvG,EAAiH,EAAE7B,KAAKA,GAAP,EAAYC,KAAKA,GAAjB,EAAsByL,MAAMA,IAA5B,EAAjH,CAAhC,CAAb;QACIvB,QAAQD,MAAZ;WACOqD,YAAP,GAAsB/T,SAASC,aAAT,CAAuB,KAAvB,CAAtB;WACO+T,YAAP,GAAsBhU,SAASC,aAAT,CAAuB,KAAvB,CAAtB;QACI2C,IAAJ,CAAS8N,OAAOqD,YAAhB,EAA8B,WAA9B,EAA2CN,WAA3C;QACI7Q,IAAJ,CAAS8N,OAAOqD,YAAhB,EAA8B,YAA9B,EAA4CE,YAA5C;QACIrF,QAAJ,CAAa8B,OAAOqD,YAApB,EAAkC,QAAlC;QACInF,QAAJ,CAAa8B,OAAOsD,YAApB,EAAkC,WAAlC;aACSP,WAAT,CAAqBtI,CAArB,EAAwB;eACbkF,aAAT,CAAuBsB,IAAvB;UACI/O,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8BwT,WAA9B;UACI1Q,IAAJ,CAAS9C,MAAT,EAAiB,SAAjB,EAA4B0T,SAA5B;kBACYrI,CAAZ;;aAEOmI,WAAT,CAAqBnI,CAArB,EAAwB;QACpB+I,cAAF;UACIC,SAASxD,MAAMoD,YAAN,CAAmBK,qBAAnB,EAAb;YACMzJ,QAAN,CAAewG,IAAIhG,EAAE8B,OAAN,EAAekH,OAAO9H,IAAtB,EAA4B8H,OAAO7H,KAAnC,EAA0CqE,MAAMoB,KAAhD,EAAuDpB,MAAMqB,KAA7D,CAAf;aACO,KAAP;;aAEOwB,SAAT,GAAqB;UACf/E,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgCwT,WAAhC;UACI7E,MAAJ,CAAW3O,MAAX,EAAmB,SAAnB,EAA8B0T,SAA9B;UACI7C,MAAMnG,gBAAV,EAA4B;cACpBA,gBAAN,CAAuBpI,IAAvB,CAA4BuO,KAA5B,EAAmCA,MAAM7F,QAAN,EAAnC;;;aAGKmJ,YAAT,CAAsB9I,CAAtB,EAAyB;UACnBA,EAAEkJ,OAAF,CAAU5S,MAAV,KAAqB,CAAzB,EAA4B;;;UAGxBmB,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8BwU,WAA9B;UACI1R,IAAJ,CAAS9C,MAAT,EAAiB,UAAjB,EAA6ByU,UAA7B;kBACYpJ,CAAZ;;aAEOmJ,WAAT,CAAqBnJ,CAArB,EAAwB;UAClB8B,UAAU9B,EAAEkJ,OAAF,CAAU,CAAV,EAAapH,OAA3B;UACIkH,SAASxD,MAAMoD,YAAN,CAAmBK,qBAAnB,EAAb;YACMzJ,QAAN,CAAewG,IAAIlE,OAAJ,EAAakH,OAAO9H,IAApB,EAA0B8H,OAAO7H,KAAjC,EAAwCqE,MAAMoB,KAA9C,EAAqDpB,MAAMqB,KAA3D,CAAf;;aAEOuC,UAAT,GAAsB;UAChB9F,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgCwU,WAAhC;UACI7F,MAAJ,CAAW3O,MAAX,EAAmB,UAAnB,EAA+ByU,UAA/B;UACI5D,MAAMnG,gBAAV,EAA4B;cACpBA,gBAAN,CAAuBpI,IAAvB,CAA4BuO,KAA5B,EAAmCA,MAAM7F,QAAN,EAAnC;;;WAGGD,aAAP;WACOkJ,YAAP,CAAoB1T,WAApB,CAAgCqQ,OAAOsD,YAAvC;WACO1J,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOqD,YAArC;WACOrD,MAAP;;gBAEUoD,sBAAZ,EAAoC,CAAC;SAC9B,eAD8B;WAE5B,SAASjJ,aAAT,GAAyB;UAC1B2J,MAAM,CAAC,KAAK1J,QAAL,KAAkB,KAAKiH,KAAxB,KAAkC,KAAKC,KAAL,GAAa,KAAKD,KAApD,CAAV;WACKiC,YAAL,CAAkBjU,KAAlB,CAAwB4P,KAAxB,GAAgC6E,MAAM,GAAN,GAAY,GAA5C;aACOrM,MAAI2L,uBAAuBlS,SAAvB,CAAiCsH,SAAjC,IAA8CzG,OAAOkG,cAAP,CAAsBmL,uBAAuBlS,SAA7C,CAAlD,EAA2G,eAA3G,EAA4H,IAA5H,EAAkIQ,IAAlI,CAAuI,IAAvI,CAAP;;GALgC,CAApC;SAQO0R,sBAAP;CAhE2B,CAiE3BjC,gBAjE2B,CAA7B;AAmEA,IAAI4C,qBAAqB,UAAUhE,WAAV,EAAuB;aACrCgE,kBAAT,EAA6BhE,WAA7B;WACSgE,kBAAT,CAA4BrM,MAA5B,EAAoCC,QAApC,EAA8CqM,IAA9C,EAAoD;qBACnC,IAAf,EAAqBD,kBAArB;QACI/D,SAASvH,4BAA0B,IAA1B,EAAgC,CAACsL,mBAAmBvL,SAAnB,IAAgCzG,OAAOkG,cAAP,CAAsB8L,kBAAtB,CAAjC,EAA4ErS,IAA5E,CAAiF,IAAjF,EAAuFgG,MAAvF,EAA+FC,QAA/F,CAAhC,CAAb;QACIsI,QAAQD,MAAZ;WACOiE,QAAP,GAAkB3U,SAASC,aAAT,CAAuB,KAAvB,CAAlB;WACO0U,QAAP,CAAgBxU,SAAhB,GAA4BuU,SAASvQ,SAAT,GAAqB,MAArB,GAA8BuQ,IAA1D;QACI9R,IAAJ,CAAS8N,OAAOiE,QAAhB,EAA0B,OAA1B,EAAmC,UAAUxJ,CAAV,EAAa;QAC5C+I,cAAF;YACMU,IAAN;aACO,KAAP;KAHF;QAKIhG,QAAJ,CAAa8B,OAAOiE,QAApB,EAA8B,QAA9B;WACOrK,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOiE,QAArC;WACOjE,MAAP;;gBAEU+D,kBAAZ,EAAgC,CAAC;SAC1B,MAD0B;WAExB,SAASG,IAAT,GAAgB;UACjB,KAAKrK,UAAT,EAAqB;aACdA,UAAL,CAAgBnI,IAAhB,CAAqB,IAArB;;WAEG0I,QAAL,GAAgB1I,IAAhB,CAAqB,KAAKgG,MAA1B;UACI,KAAKoC,gBAAT,EAA2B;aACpBA,gBAAL,CAAsBpI,IAAtB,CAA2B,IAA3B,EAAiC,KAAK0I,QAAL,EAAjC;;;GAR0B,CAAhC;SAYO2J,kBAAP;CA7BuB,CA8BvBrK,UA9BuB,CAAzB;AAgCA,IAAIyK,kBAAkB,UAAUpE,WAAV,EAAuB;aAChCoE,eAAT,EAA0BpE,WAA1B;WACSoE,eAAT,CAAyBzM,MAAzB,EAAiCC,QAAjC,EAA2C;qBACxB,IAAf,EAAqBwM,eAArB;QACInE,SAASvH,4BAA0B,IAA1B,EAAgC,CAAC0L,gBAAgB3L,SAAhB,IAA6BzG,OAAOkG,cAAP,CAAsBkM,eAAtB,CAA9B,EAAsEzS,IAAtE,CAA2E,IAA3E,EAAiFgG,MAAjF,EAAyFC,QAAzF,CAAhC,CAAb;WACOyM,OAAP,GAAiB,IAAIxL,KAAJ,CAAUoH,OAAO5F,QAAP,EAAV,CAAjB;WACOiK,MAAP,GAAgB,IAAIzL,KAAJ,CAAU,CAAV,CAAhB;QACIqH,QAAQD,MAAZ;WACOpG,UAAP,GAAoBtK,SAASC,aAAT,CAAuB,KAAvB,CAApB;QACIuL,cAAJ,CAAmBkF,OAAOpG,UAA1B,EAAsC,KAAtC;WACO0K,UAAP,GAAoBhV,SAASC,aAAT,CAAuB,KAAvB,CAApB;WACO+U,UAAP,CAAkBlI,SAAlB,GAA8B,UAA9B;WACOmI,kBAAP,GAA4BjV,SAASC,aAAT,CAAuB,KAAvB,CAA5B;WACOgV,kBAAP,CAA0BnI,SAA1B,GAAsC,kBAAtC;WACOoI,YAAP,GAAsBlV,SAASC,aAAT,CAAuB,KAAvB,CAAtB;WACOiV,YAAP,CAAoBpI,SAApB,GAAgC,YAAhC;WACOqI,mBAAP,GAA6B,YAA7B;WACOC,UAAP,GAAoBpV,SAASC,aAAT,CAAuB,KAAvB,CAApB;WACOmV,UAAP,CAAkBtI,SAAlB,GAA8B,UAA9B;WACOuI,WAAP,GAAqBrV,SAASC,aAAT,CAAuB,KAAvB,CAArB;WACOoV,WAAP,CAAmBvI,SAAnB,GAA+B,WAA/B;WACO2E,OAAP,GAAiBzR,SAASC,aAAT,CAAuB,OAAvB,CAAjB;WACOwR,OAAP,CAAenB,IAAf,GAAsB,MAAtB;WACOgF,kBAAP,GAA4B,YAA5B;QACI1S,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,SAAzB,EAAoC,UAAUtG,CAAV,EAAa;UACzCA,EAAE6C,OAAF,KAAc,EAAlB,EAAsB;eACX5L,IAAP,CAAY,IAAZ;;KAFR;QAKIQ,IAAJ,CAAS8N,OAAOe,OAAhB,EAAyB,MAAzB,EAAiCC,MAAjC;QACI9O,IAAJ,CAAS8N,OAAOsE,UAAhB,EAA4B,WAA5B,EAAyC,YAAmB;UACpDpG,QAAJ,CAAa,IAAb,EAAmB,MAAnB,EAA2BhM,IAA3B,CAAgC9C,MAAhC,EAAwC,SAAxC,EAAmD,YAAmB;YAC9DqP,WAAJ,CAAgBwB,MAAMqE,UAAtB,EAAkC,MAAlC;OADJ;KADJ;QAKIpS,IAAJ,CAAS8N,OAAOsE,UAAhB,EAA4B,YAA5B,EAA0C,YAAmB;UACrDpG,QAAJ,CAAa,IAAb,EAAmB,MAAnB,EAA2BhM,IAA3B,CAAgC9C,MAAhC,EAAwC,UAAxC,EAAoD,YAAmB;YAC/DqP,WAAJ,CAAgBwB,MAAMqE,UAAtB,EAAkC,MAAlC;OADJ;KADJ;QAKIO,aAAavV,SAASC,aAAT,CAAuB,KAAvB,CAAjB;WACOgC,MAAP,CAAcyO,OAAOsE,UAAP,CAAkBjV,KAAhC,EAAuC;aAC5B,OAD4B;cAE3B,OAF2B;eAG1B,KAH0B;uBAIlB,MAJkB;iBAKxB;KALf;WAOOkC,MAAP,CAAcyO,OAAOwE,YAAP,CAAoBnV,KAAlC,EAAyC;gBAC3B,UAD2B;aAE9B,MAF8B;cAG7B,MAH6B;cAI7B2Q,OAAOyE,mBAAP,IAA8BzE,OAAOoE,OAAP,CAAexT,CAAf,GAAmB,GAAnB,GAAyB,MAAzB,GAAkC,MAAhE,CAJ6B;iBAK1B,6BAL0B;oBAMvB,MANuB;cAO7B;KAPZ;WASOW,MAAP,CAAcyO,OAAO0E,UAAP,CAAkBrV,KAAhC,EAAuC;gBACzB,UADyB;aAE5B,MAF4B;cAG3B,KAH2B;mBAItB,gBAJsB;cAK3B;KALZ;WAOOkC,MAAP,CAAcyO,OAAOuE,kBAAP,CAA0BlV,KAAxC,EAA+C;aACpC,OADoC;cAEnC,OAFmC;cAGnC,gBAHmC;mBAI9B,KAJ8B;eAKlC,cALkC;cAMnC;KANZ;WAQOkC,MAAP,CAAcsT,WAAWxV,KAAzB,EAAgC;aACrB,MADqB;cAEpB,MAFoB;kBAGhB;KAHhB;mBAKewV,UAAf,EAA2B,KAA3B,EAAkC,eAAlC,EAAmD,MAAnD;WACOtT,MAAP,CAAcyO,OAAO2E,WAAP,CAAmBtV,KAAjC,EAAwC;aAC7B,MAD6B;cAE5B,OAF4B;cAG5B,gBAH4B;cAI5B,WAJ4B;gBAK1B,UAL0B;WAM/B,KAN+B;aAO7B;KAPX;gBASY2Q,OAAO2E,WAAnB;WACOpT,MAAP,CAAcyO,OAAOe,OAAP,CAAe1R,KAA7B,EAAoC;eACvB,MADuB;iBAErB,QAFqB;aAGzB,MAHyB;cAIxB,CAJwB;kBAKpB,MALoB;kBAMpB2Q,OAAO4E,kBAAP,GAA4B;KAN5C;QAQI1S,IAAJ,CAAS8N,OAAOuE,kBAAhB,EAAoC,WAApC,EAAiDO,SAAjD;QACI5S,IAAJ,CAAS8N,OAAOuE,kBAAhB,EAAoC,YAApC,EAAkDO,SAAlD;QACI5S,IAAJ,CAAS8N,OAAOwE,YAAhB,EAA8B,WAA9B,EAA2CM,SAA3C;QACI5S,IAAJ,CAAS8N,OAAOwE,YAAhB,EAA8B,YAA9B,EAA4CM,SAA5C;QACI5S,IAAJ,CAAS8N,OAAO2E,WAAhB,EAA6B,WAA7B,EAA0CI,UAA1C;QACI7S,IAAJ,CAAS8N,OAAO2E,WAAhB,EAA6B,YAA7B,EAA2CI,UAA3C;aACSD,SAAT,CAAmBrK,CAAnB,EAAsB;YACZA,CAAN;UACIvI,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8B4V,KAA9B;UACI9S,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8B4V,KAA9B;UACI9S,IAAJ,CAAS9C,MAAT,EAAiB,SAAjB,EAA4B6V,SAA5B;UACI/S,IAAJ,CAAS9C,MAAT,EAAiB,UAAjB,EAA6B6V,SAA7B;;aAEKF,UAAT,CAAoBtK,CAApB,EAAuB;WACdA,CAAL;UACIvI,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8B8V,IAA9B;UACIhT,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8B8V,IAA9B;UACIhT,IAAJ,CAAS9C,MAAT,EAAiB,SAAjB,EAA4B+V,QAA5B;UACIjT,IAAJ,CAAS9C,MAAT,EAAiB,UAAjB,EAA6B+V,QAA7B;;aAEKF,SAAT,GAAqB;UACblH,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgC4V,KAAhC;UACIjH,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgC4V,KAAhC;UACIjH,MAAJ,CAAW3O,MAAX,EAAmB,SAAnB,EAA8B6V,SAA9B;UACIlH,MAAJ,CAAW3O,MAAX,EAAmB,UAAnB,EAA+B6V,SAA/B;;;aAGKE,QAAT,GAAoB;UACZpH,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgC8V,IAAhC;UACInH,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgC8V,IAAhC;UACInH,MAAJ,CAAW3O,MAAX,EAAmB,SAAnB,EAA8B+V,QAA9B;UACIpH,MAAJ,CAAW3O,MAAX,EAAmB,UAAnB,EAA+B+V,QAA/B;;;aAGKnE,MAAT,GAAkB;UACVzO,IAAIuC,UAAU,KAAKwB,KAAf,CAAR;UACI/D,MAAM,KAAV,EAAiB;cACP6R,OAAN,CAAcpU,OAAd,GAAwBuC,CAAxB;cACM0H,QAAN,CAAegG,MAAMmE,OAAN,CAAcrL,UAAd,EAAf;OAFJ,MAGO;aACEzC,KAAL,GAAa2J,MAAMmE,OAAN,CAAclU,QAAd,EAAb;;;aAGCyS,QAAT,GAAoB;UACZ1C,MAAMnG,gBAAV,EAA4B;cAClBA,gBAAN,CAAuBpI,IAAvB,CAA4BuO,KAA5B,EAAmCA,MAAMmE,OAAN,CAAcrL,UAAd,EAAnC;;;WAGDwL,kBAAP,CAA0B5U,WAA1B,CAAsCkV,UAAtC;WACOP,UAAP,CAAkB3U,WAAlB,CAA8BqQ,OAAOwE,YAArC;WACOF,UAAP,CAAkB3U,WAAlB,CAA8BqQ,OAAOuE,kBAArC;WACOD,UAAP,CAAkB3U,WAAlB,CAA8BqQ,OAAO2E,WAArC;WACOA,WAAP,CAAmBhV,WAAnB,CAA+BqQ,OAAO0E,UAAtC;WACO9K,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOe,OAArC;WACOnH,UAAP,CAAkBjK,WAAlB,CAA8BqQ,OAAOsE,UAArC;WACOnK,aAAP;aACS6K,KAAT,CAAevK,CAAf,EAAkB;UACVA,EAAEmF,IAAF,CAAOvB,OAAP,CAAe,OAAf,MAA4B,CAAC,CAAjC,EAAoC;UAC9BmF,cAAF;;UAEA4B,YAAYnF,MAAMsE,kBAAN,CAAyBb,qBAAzB,EAAhB;UACI2B,OAAO5K,EAAEkJ,OAAF,IAAalJ,EAAEkJ,OAAF,CAAU,CAAV,CAAb,IAA6BlJ,CAAxC;UACI8B,UAAU8I,KAAK9I,OADnB;UAEIE,UAAU4I,KAAK5I,OAFnB;UAGI/L,IAAI,CAAC6L,UAAU6I,UAAUzJ,IAArB,KAA8ByJ,UAAUxJ,KAAV,GAAkBwJ,UAAUzJ,IAA1D,CAAR;UACI/K,IAAI,IAAI,CAAC6L,UAAU2I,UAAUvJ,GAArB,KAA6BuJ,UAAUtJ,MAAV,GAAmBsJ,UAAUvJ,GAA1D,CAAZ;UACIjL,IAAI,CAAR,EAAW;YACH,CAAJ;OADJ,MAEO,IAAIA,IAAI,CAAR,EAAW;YACV,CAAJ;;UAEAF,IAAI,CAAR,EAAW;YACH,CAAJ;OADJ,MAEO,IAAIA,IAAI,CAAR,EAAW;YACV,CAAJ;;YAEE0T,OAAN,CAAcxT,CAAd,GAAkBA,CAAlB;YACMwT,OAAN,CAAc1T,CAAd,GAAkBA,CAAlB;YACMuJ,QAAN,CAAegG,MAAMmE,OAAN,CAAcrL,UAAd,EAAf;aACO,KAAP;;aAEKmM,IAAT,CAAczK,CAAd,EAAiB;UACTA,EAAEmF,IAAF,CAAOvB,OAAP,CAAe,OAAf,MAA4B,CAAC,CAAjC,EAAoC;UAC9BmF,cAAF;;UAEA4B,YAAYnF,MAAM0E,WAAN,CAAkBjB,qBAAlB,EAAhB;UACI4B,QAAQ7K,EAAEkJ,OAAF,IAAalJ,EAAEkJ,OAAF,CAAU,CAAV,CAAb,IAA6BlJ,CAAzC;UACIgC,UAAU6I,MAAM7I,OADpB;UAEIhM,IAAI,IAAI,CAACgM,UAAU2I,UAAUvJ,GAArB,KAA6BuJ,UAAUtJ,MAAV,GAAmBsJ,UAAUvJ,GAA1D,CAAZ;UACIpL,IAAI,CAAR,EAAW;YACH,CAAJ;OADJ,MAEO,IAAIA,IAAI,CAAR,EAAW;YACV,CAAJ;;YAEE2T,OAAN,CAAc3T,CAAd,GAAkBA,IAAI,GAAtB;YACMwJ,QAAN,CAAegG,MAAMmE,OAAN,CAAcrL,UAAd,EAAf;aACO,KAAP;;WAEGiH,MAAP;;gBAEQmE,eAAZ,EAA6B,CAAC;SACrB,eADqB;WAEnB,SAAShK,aAAT,GAAyB;UACxB5H,IAAIuC,UAAU,KAAKsF,QAAL,EAAV,CAAR;UACI7H,MAAM,KAAV,EAAiB;YACTgT,WAAW,KAAf;eACO9T,IAAP,CAAYmH,MAAMa,UAAlB,EAA8B,UAAUR,SAAV,EAAqB;cAC3C,CAAC3H,OAAOW,WAAP,CAAmBM,EAAE0G,SAAF,CAAnB,CAAD,IAAqC,CAAC3H,OAAOW,WAAP,CAAmB,KAAKmS,OAAL,CAAapU,OAAb,CAAqBiJ,SAArB,CAAnB,CAAtC,IAA6F1G,EAAE0G,SAAF,MAAiB,KAAKmL,OAAL,CAAapU,OAAb,CAAqBiJ,SAArB,CAAlH,EAAmJ;uBACpI,IAAX;mBACO,EAAP;;SAHR,EAKG,IALH;YAMIsM,QAAJ,EAAc;iBACHhU,MAAP,CAAc,KAAK6S,OAAL,CAAapU,OAA3B,EAAoCuC,CAApC;;;aAGDhB,MAAP,CAAc,KAAK8S,MAAL,CAAYrU,OAA1B,EAAmC,KAAKoU,OAAL,CAAapU,OAAhD;WACKqU,MAAL,CAAY7T,CAAZ,GAAgB,CAAhB;UACIgV,OAAO,KAAKpB,OAAL,CAAaxT,CAAb,GAAiB,GAAjB,IAAwB,KAAKwT,OAAL,CAAa1T,CAAb,GAAiB,GAAzC,GAA+C,GAA/C,GAAqD,CAAhE;UACI+U,QAAQ,MAAMD,IAAlB;aACOjU,MAAP,CAAc,KAAKiT,YAAL,CAAkBnV,KAAhC,EAAuC;oBACvB,MAAM,KAAK+U,OAAL,CAAa1T,CAAnB,GAAuB,CAAvB,GAA2B,IADJ;mBAExB,OAAO,IAAI,KAAK0T,OAAL,CAAaxT,CAAxB,IAA6B,CAA7B,GAAiC,IAFT;yBAGlB,KAAKyT,MAAL,CAAYvL,WAAZ,EAHkB;gBAI3B,KAAK2L,mBAAL,GAA2B,MAA3B,GAAoCe,IAApC,GAA2C,GAA3C,GAAiDA,IAAjD,GAAwD,GAAxD,GAA8DA,IAA9D,GAAqE;OAJjF;WAMKd,UAAL,CAAgBrV,KAAhB,CAAsBqW,SAAtB,GAAkC,CAAC,IAAI,KAAKtB,OAAL,CAAa3T,CAAb,GAAiB,GAAtB,IAA6B,GAA7B,GAAmC,IAArE;WACK4T,MAAL,CAAY3T,CAAZ,GAAgB,CAAhB;WACK2T,MAAL,CAAYzT,CAAZ,GAAgB,CAAhB;qBACe,KAAK2T,kBAApB,EAAwC,MAAxC,EAAgD,MAAhD,EAAwD,KAAKF,MAAL,CAAYvL,WAAZ,EAAxD;WACKiI,OAAL,CAAazK,KAAb,GAAqB,KAAK8N,OAAL,CAAalU,QAAb,EAArB;aACOqB,MAAP,CAAc,KAAKwP,OAAL,CAAa1R,KAA3B,EAAkC;yBACb,KAAK+U,OAAL,CAAatL,WAAb,EADa;eAEvB,SAAS0M,IAAT,GAAgB,GAAhB,GAAsBA,IAAtB,GAA6B,GAA7B,GAAmCA,IAAnC,GAA0C,GAFnB;oBAGlB,KAAKZ,kBAAL,GAA0B,OAA1B,GAAoCa,KAApC,GAA4C,GAA5C,GAAkDA,KAAlD,GAA0D,GAA1D,GAAgEA,KAAhE,GAAwE;OAHxF;;GA/BqB,CAA7B;SAsCOtB,eAAP;CA1OkB,CA2OpBzK,UA3OoB,CAAtB;AA4OA,IAAIiM,UAAU,CAAC,OAAD,EAAU,KAAV,EAAiB,UAAjB,EAA6B,MAA7B,EAAqC,EAArC,CAAd;AACA,SAASC,cAAT,CAAwB7K,IAAxB,EAA8ByB,CAA9B,EAAiChM,CAAjC,EAAoCD,CAApC,EAAuC;OAC9BlB,KAAL,CAAWwW,UAAX,GAAwB,EAAxB;SACOpU,IAAP,CAAYkU,OAAZ,EAAqB,UAAUG,MAAV,EAAkB;SAC9BzW,KAAL,CAAW0W,OAAX,IAAsB,iBAAiBD,MAAjB,GAA0B,kBAA1B,GAA+CtJ,CAA/C,GAAmD,IAAnD,GAA0DhM,CAA1D,GAA8D,OAA9D,GAAwED,CAAxE,GAA4E,UAAlG;GADJ;;AAIJ,SAASyV,WAAT,CAAqBjL,IAArB,EAA2B;OAClB1L,KAAL,CAAWwW,UAAX,GAAwB,EAAxB;OACKxW,KAAL,CAAW0W,OAAX,IAAsB,oIAAtB;OACK1W,KAAL,CAAW0W,OAAX,IAAsB,iIAAtB;OACK1W,KAAL,CAAW0W,OAAX,IAAsB,4HAAtB;OACK1W,KAAL,CAAW0W,OAAX,IAAsB,6HAAtB;OACK1W,KAAL,CAAW0W,OAAX,IAAsB,yHAAtB;;AAGJ,IAAIE,oBAAoB,SAASA,iBAAT,CAA2BvO,MAA3B,EAAmCC,QAAnC,EAA6C;MAC/DgC,eAAejC,OAAOC,QAAP,CAAnB;MACIrG,OAAOwC,OAAP,CAAenC,UAAU,CAAV,CAAf,KAAgCL,OAAOQ,QAAP,CAAgBH,UAAU,CAAV,CAAhB,CAApC,EAAmE;WAC1D,IAAI0O,gBAAJ,CAAqB3I,MAArB,EAA6BC,QAA7B,EAAuChG,UAAU,CAAV,CAAvC,CAAP;;MAEEL,OAAO0C,QAAP,CAAgB2F,YAAhB,CAAJ,EAAmC;QAC7BrI,OAAO0C,QAAP,CAAgBrC,UAAU,CAAV,CAAhB,KAAiCL,OAAO0C,QAAP,CAAgBrC,UAAU,CAAV,CAAhB,CAArC,EAAoE;UAC9DL,OAAO0C,QAAP,CAAgBrC,UAAU,CAAV,CAAhB,CAAJ,EAAmC;eAC1B,IAAIyR,sBAAJ,CAA2B1L,MAA3B,EAAmCC,QAAnC,EAA6ChG,UAAU,CAAV,CAA7C,EAA2DA,UAAU,CAAV,CAA3D,EAAyEA,UAAU,CAAV,CAAzE,CAAP;;aAEK,IAAIyR,sBAAJ,CAA2B1L,MAA3B,EAAmCC,QAAnC,EAA6ChG,UAAU,CAAV,CAA7C,EAA2DA,UAAU,CAAV,CAA3D,CAAP;;QAEEL,OAAO0C,QAAP,CAAgBrC,UAAU,CAAV,CAAhB,CAAJ,EAAmC;aAC1B,IAAI2Q,mBAAJ,CAAwB5K,MAAxB,EAAgCC,QAAhC,EAA0C,EAAE7B,KAAKnE,UAAU,CAAV,CAAP,EAAqBoE,KAAKpE,UAAU,CAAV,CAA1B,EAAwC6P,MAAM7P,UAAU,CAAV,CAA9C,EAA1C,CAAP;;WAEK,IAAI2Q,mBAAJ,CAAwB5K,MAAxB,EAAgCC,QAAhC,EAA0C,EAAE7B,KAAKnE,UAAU,CAAV,CAAP,EAAqBoE,KAAKpE,UAAU,CAAV,CAA1B,EAA1C,CAAP;;MAEEL,OAAO2C,QAAP,CAAgB0F,YAAhB,CAAJ,EAAmC;WAC1B,IAAImH,gBAAJ,CAAqBpJ,MAArB,EAA6BC,QAA7B,CAAP;;MAEErG,OAAO6C,UAAP,CAAkBwF,YAAlB,CAAJ,EAAqC;WAC5B,IAAIoK,kBAAJ,CAAuBrM,MAAvB,EAA+BC,QAA/B,EAAyC,EAAzC,CAAP;;MAEErG,OAAO4C,SAAP,CAAiByF,YAAjB,CAAJ,EAAoC;WAC3B,IAAImG,iBAAJ,CAAsBpI,MAAtB,EAA8BC,QAA9B,CAAP;;SAEK,IAAP;CA1BF;AA6BA,IAAIuO,mBAAmB,UAAUnG,WAAV,EAAuB;aACnCmG,gBAAT,EAA2BnG,WAA3B;WACSmG,gBAAT,CAA0BxO,MAA1B,EAAkCC,QAAlC,EAA4C;qBAC3B,IAAf,EAAqBuO,gBAArB;QACIjG,QAAQxH,4BAA0B,IAA1B,EAAgC,CAACyN,iBAAiB1N,SAAjB,IAA8BzG,OAAOkG,cAAP,CAAsBiO,gBAAtB,CAA/B,EAAwExU,IAAxE,CAA6E,IAA7E,EAAmFgG,MAAnF,EAA2FC,QAA3F,CAAhC,CAAZ;UACMhG,SAAN,GAAkB;cACR+F,MADQ,EACAC,UAAUA,QADV,EACoB2I,MAAMrP,MAAMC,SAAN,CAAgBG,KAAhB,CAAsBK,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC;KAD5C;QAGI+F,OAAOC,QAAX,EAAqBsI,MAAMtI,QAAN,GAAiBD,OAAOC,QAAP,EAAjB;WACdsI,KAAP;;SAEKiG,gBAAP;CAXqB,CAYrBxM,UAZqB,CAAvB;AAcA,IAAIvK,MAAM;QACF,SAASgX,IAAT,CAAcC,GAAd,EAAmBC,KAAnB,EAA0B;QAC1BC,MAAMD,SAAS/W,QAAnB;QACIiX,OAAOD,IAAI/W,aAAJ,CAAkB,MAAlB,CAAX;SACKqQ,IAAL,GAAY,UAAZ;SACK4G,GAAL,GAAW,YAAX;SACK3G,IAAL,GAAYuG,GAAZ;QACIK,oBAAJ,CAAyB,MAAzB,EAAiC,CAAjC,EAAoC9W,WAApC,CAAgD4W,IAAhD;GAPM;UASA,SAASG,MAAT,CAAgBC,UAAhB,EAA4BN,KAA5B,EAAmC;QACrCC,MAAMD,SAAS/W,QAAnB;QACIsX,WAAWtX,SAASC,aAAT,CAAuB,OAAvB,CAAf;aACSqQ,IAAT,GAAgB,UAAhB;aACSnQ,SAAT,GAAqBkX,UAArB;QACIjX,OAAO4W,IAAIG,oBAAJ,CAAyB,MAAzB,EAAiC,CAAjC,CAAX;QACI;WACG9W,WAAL,CAAiBiX,QAAjB;KADF,CAEE,OAAOnM,CAAP,EAAU;;CAjBhB;AAsBA,IAAIoM,qBAAqB,sqBAAzB;AAEA,SAASC,qBAAT,CAA+BC,QAA/B,EAAyC;aAC5BA,QAAX,EAAqB,OAAO,EAA5B;;AAEF,IAAIC,0BAA0B5X,OAAO0X,qBAAP,IAAgC1X,OAAO6X,2BAAvC,IAAsE7X,OAAO8X,wBAA7E,IAAyG9X,OAAO+X,sBAAhH,IAA0I/X,OAAOgY,uBAAjJ,IAA4KN,qBAA1M;AAEA,IAAIO,cAAc,YAAY;WACnBA,WAAT,GAAuB;qBACN,IAAf,EAAqBA,WAArB;SACKC,iBAAL,GAAyBhY,SAASC,aAAT,CAAuB,KAAvB,CAAzB;WACOgC,MAAP,CAAc,KAAK+V,iBAAL,CAAuBjY,KAArC,EAA4C;uBACzB,iBADyB;WAErC,CAFqC;YAGpC,CAHoC;eAIjC,MAJiC;cAKlC,MALkC;eAMjC,CANiC;wBAOxB,qBAPwB;kBAQ9B;KARd;QAUIgM,cAAJ,CAAmB,KAAKiM,iBAAxB;SACKA,iBAAL,CAAuBjY,KAAvB,CAA6BqM,QAA7B,GAAwC,OAAxC;SACK9B,UAAL,GAAkBtK,SAASC,aAAT,CAAuB,KAAvB,CAAlB;WACOgC,MAAP,CAAc,KAAKqI,UAAL,CAAgBvK,KAA9B,EAAqC;gBACzB,OADyB;eAE1B,MAF0B;cAG3B,MAH2B;eAI1B,CAJ0B;wBAKjB,sDALiB;kBAMvB;KANd;aAQSkY,IAAT,CAAc5X,WAAd,CAA0B,KAAK2X,iBAA/B;aACSC,IAAT,CAAc5X,WAAd,CAA0B,KAAKiK,UAA/B;QACIqG,QAAQ,IAAZ;QACI/N,IAAJ,CAAS,KAAKoV,iBAAd,EAAiC,OAAjC,EAA0C,YAAY;YAC9CE,IAAN;KADF;;gBAIUH,WAAZ,EAAyB,CAAC;SACnB,MADmB;WAEjB,SAASI,IAAT,GAAgB;UACjBxH,QAAQ,IAAZ;WACKqH,iBAAL,CAAuBjY,KAAvB,CAA6BqY,OAA7B,GAAuC,OAAvC;WACK9N,UAAL,CAAgBvK,KAAhB,CAAsBqY,OAAtB,GAAgC,OAAhC;WACK9N,UAAL,CAAgBvK,KAAhB,CAAsBsY,OAAtB,GAAgC,CAAhC;WACK/N,UAAL,CAAgBvK,KAAhB,CAAsBuY,eAAtB,GAAwC,YAAxC;WACKC,MAAL;aACO/U,KAAP,CAAa,YAAY;cACjBwU,iBAAN,CAAwBjY,KAAxB,CAA8BsY,OAA9B,GAAwC,CAAxC;cACM/N,UAAN,CAAiBvK,KAAjB,CAAuBsY,OAAvB,GAAiC,CAAjC;cACM/N,UAAN,CAAiBvK,KAAjB,CAAuBuY,eAAvB,GAAyC,UAAzC;OAHF;;GATqB,EAetB;SACI,MADJ;WAEM,SAASJ,IAAT,GAAgB;UACjBvH,QAAQ,IAAZ;UACIuH,OAAO,SAASA,IAAT,GAAgB;cACnB5N,UAAN,CAAiBvK,KAAjB,CAAuBqY,OAAvB,GAAiC,MAAjC;cACMJ,iBAAN,CAAwBjY,KAAxB,CAA8BqY,OAA9B,GAAwC,MAAxC;YACI3J,MAAJ,CAAWkC,MAAMrG,UAAjB,EAA6B,qBAA7B,EAAoD4N,IAApD;YACIzJ,MAAJ,CAAWkC,MAAMrG,UAAjB,EAA6B,eAA7B,EAA8C4N,IAA9C;YACIzJ,MAAJ,CAAWkC,MAAMrG,UAAjB,EAA6B,gBAA7B,EAA+C4N,IAA/C;OALF;UAOItV,IAAJ,CAAS,KAAK0H,UAAd,EAA0B,qBAA1B,EAAiD4N,IAAjD;UACItV,IAAJ,CAAS,KAAK0H,UAAd,EAA0B,eAA1B,EAA2C4N,IAA3C;UACItV,IAAJ,CAAS,KAAK0H,UAAd,EAA0B,gBAA1B,EAA4C4N,IAA5C;WACKF,iBAAL,CAAuBjY,KAAvB,CAA6BsY,OAA7B,GAAuC,CAAvC;WACK/N,UAAL,CAAgBvK,KAAhB,CAAsBsY,OAAtB,GAAgC,CAAhC;WACK/N,UAAL,CAAgBvK,KAAhB,CAAsBuY,eAAtB,GAAwC,YAAxC;;GA/BqB,EAiCtB;SACI,QADJ;WAEM,SAASC,MAAT,GAAkB;WAClBjO,UAAL,CAAgBvK,KAAhB,CAAsBsM,IAAtB,GAA6BvM,OAAO0Y,UAAP,GAAoB,CAApB,GAAwBjN,IAAIkE,QAAJ,CAAa,KAAKnF,UAAlB,IAAgC,CAAxD,GAA4D,IAAzF;WACKA,UAAL,CAAgBvK,KAAhB,CAAsBwM,GAAtB,GAA4BzM,OAAO2Y,WAAP,GAAqB,CAArB,GAAyBlN,IAAIqE,SAAJ,CAAc,KAAKtF,UAAnB,IAAiC,CAA1D,GAA8D,IAA1F;;GArCqB,CAAzB;SAwCOyN,WAAP;CAxEgB,EAAlB;AA2EA,IAAIW,aAAa9Y,gBAAgB,orLAAhB,CAAjB;AAEAC,IAAIuX,MAAJ,CAAWsB,UAAX;AACA,IAAIC,gBAAgB,IAApB;AACA,IAAIC,gBAAgB,EAApB;AACA,IAAIC,sBAAsB,EAA1B;AACA,IAAIC,8BAA8B,SAAlC;AACA,IAAIC,yBAAyB,YAAY;MACnC;WACK,CAAC,CAACjZ,OAAOkZ,YAAhB;GADF,CAEE,OAAO7N,CAAP,EAAU;WACH,KAAP;;CAJyB,EAA7B;AAOA,IAAI8N,gBAAgB,KAAK,CAAzB;AACA,IAAIC,kBAAkB,IAAtB;AACA,IAAIC,qBAAqB,KAAK,CAA9B;AACA,IAAIjB,OAAO,KAAX;AACA,IAAIkB,eAAe,EAAnB;AACA,IAAIC,MAAM,SAASA,GAAT,CAAa1M,IAAb,EAAmB;MACvBgE,QAAQ,IAAZ;MACI9D,SAASF,QAAQ,EAArB;OACKrC,UAAL,GAAkBtK,SAASC,aAAT,CAAuB,KAAvB,CAAlB;OACKqZ,IAAL,GAAYtZ,SAASC,aAAT,CAAuB,IAAvB,CAAZ;OACKqK,UAAL,CAAgBjK,WAAhB,CAA4B,KAAKiZ,IAAjC;MACI1K,QAAJ,CAAa,KAAKtE,UAAlB,EAA8BqO,aAA9B;OACKY,SAAL,GAAiB,EAAjB;OACKC,aAAL,GAAqB,EAArB;OACKC,mBAAL,GAA2B,EAA3B;OACKC,sCAAL,GAA8C,EAA9C;OACKC,WAAL,GAAmB,EAAnB;WACS3X,OAAOa,QAAP,CAAgBgK,MAAhB,EAAwB;gBACnB,KADmB;eAEpB,IAFoB;WAGxBwM,IAAIO;GAHJ,CAAT;WAKS5X,OAAOa,QAAP,CAAgBgK,MAAhB,EAAwB;eACpBA,OAAOgN,SADa;cAErBhN,OAAOgN;GAFV,CAAT;MAII,CAAC7X,OAAOW,WAAP,CAAmBkK,OAAOgK,IAA1B,CAAL,EAAsC;QAChChK,OAAOiN,MAAX,EAAmB;aACVjD,IAAP,CAAYiD,MAAZ,GAAqBjN,OAAOiN,MAA5B;;GAFJ,MAIO;WACEjD,IAAP,GAAc,EAAEiD,QAAQhB,2BAAV,EAAd;;MAEE9W,OAAOW,WAAP,CAAmBkK,OAAOnE,MAA1B,KAAqCmE,OAAOkN,QAAhD,EAA0D;iBAC3C/K,IAAb,CAAkB,IAAlB;;SAEKgL,SAAP,GAAmBhY,OAAOW,WAAP,CAAmBkK,OAAOnE,MAA1B,KAAqCmE,OAAOmN,SAA/D;MACInN,OAAOgN,SAAP,IAAoB7X,OAAOW,WAAP,CAAmBkK,OAAOoN,UAA1B,CAAxB,EAA+D;WACtDA,UAAP,GAAoB,IAApB;;MAEEC,kBAAkBnB,0BAA0BC,aAAamB,OAAb,CAAqBC,oBAAoB,IAApB,EAA0B,SAA1B,CAArB,MAA+D,MAA/G;MACIC,qBAAqB,KAAK,CAA9B;MACIC,WAAW,KAAK,CAApB;SACO5S,gBAAP,CAAwB,IAAxB,EACA;YACU;WACD,SAASmC,MAAT,GAAkB;eACdgD,OAAOnE,MAAd;;KAHN;gBAMc;WACL,SAASmB,MAAT,GAAkB;eACdgD,OAAOoN,UAAd;;KARN;eAWa;WACJ,SAASpQ,MAAT,GAAkB;eACdgD,OAAOgN,SAAd;;KAbN;gBAgBc;WACL,SAAShQ,MAAT,GAAkB;eACdgD,OAAO0N,UAAd;;KAlBN;YAqBU;WACD,SAAS1Q,MAAT,GAAkB;YACjB8G,MAAMjI,MAAV,EAAkB;iBACTiI,MAAM6J,OAAN,GAAgBV,MAAvB;;eAEKjN,OAAOgK,IAAP,CAAYiD,MAAnB;OALI;WAOD,SAAS9P,MAAT,CAAgB1I,CAAhB,EAAmB;YAClBqP,MAAMjI,MAAV,EAAkB;gBACV8R,OAAN,GAAgBV,MAAhB,GAAyBxY,CAAzB;SADF,MAEO;iBACEuV,IAAP,CAAYiD,MAAZ,GAAqBxY,CAArB;;6BAEmB,IAArB;cACMmZ,MAAN;;KAnCN;WAsCS;WACA,SAAS5Q,MAAT,GAAkB;eACdgD,OAAO8C,KAAd;OAFG;WAIA,SAAS3F,MAAT,CAAgB1I,CAAhB,EAAmB;eACfqO,KAAP,GAAerO,CAAf;iBACSqP,KAAT,EAAgBrP,CAAhB;;KA5CN;UA+CQ;WACC,SAASuI,MAAT,GAAkB;eACdgD,OAAO6N,IAAd;OAFE;WAIC,SAAS1Q,MAAT,CAAgB1I,CAAhB,EAAmB;eACfoZ,IAAP,GAAcpZ,CAAd;YACIgZ,QAAJ,EAAc;mBACHna,SAAT,GAAqB0M,OAAO6N,IAA5B;;;KAtDR;YA0DU;WACD,SAAS7Q,MAAT,GAAkB;eACdgD,OAAO8N,MAAd;OAFI;WAID,SAAS3Q,MAAT,CAAgB1I,CAAhB,EAAmB;eACfqZ,MAAP,GAAgBrZ,CAAhB;YACIuL,OAAO8N,MAAX,EAAmB;cACb/L,QAAJ,CAAa+B,MAAM2I,IAAnB,EAAyBD,IAAIuB,YAA7B;SADF,MAEO;cACDzL,WAAJ,CAAgBwB,MAAM2I,IAAtB,EAA4BD,IAAIuB,YAAhC;;aAEGC,QAAL;YACIlK,MAAMmK,aAAV,EAAyB;gBACjBA,aAAN,CAAoB3a,SAApB,GAAgCmB,IAAI+X,IAAI0B,SAAR,GAAoB1B,IAAI2B,WAAxD;;;KAvER;UA2EQ;WACC,SAASnR,MAAT,GAAkB;eACdgD,OAAOgK,IAAd;;KA7EN;qBAgFmB;WACV,SAAShN,MAAT,GAAkB;eACdqQ,eAAP;OAFa;WAIV,SAASlQ,MAAT,CAAgBsE,IAAhB,EAAsB;YACrByK,sBAAJ,EAA4B;4BACRzK,IAAlB;cACIA,IAAJ,EAAU;gBACJ1L,IAAJ,CAAS9C,MAAT,EAAiB,QAAjB,EAA2Bua,kBAA3B;WADF,MAEO;gBACD5L,MAAJ,CAAW3O,MAAX,EAAmB,QAAnB,EAA6Bua,kBAA7B;;uBAEWY,OAAb,CAAqBb,oBAAoBzJ,KAApB,EAA2B,SAA3B,CAArB,EAA4DrC,IAA5D;;;;GA7FR;MAkGItM,OAAOW,WAAP,CAAmBkK,OAAOnE,MAA1B,CAAJ,EAAuC;SAChCiS,MAAL,GAAc9N,OAAO8N,MAAP,IAAiB,KAA/B;QACI/L,QAAJ,CAAa,KAAKtE,UAAlB,EAA8B+O,IAAI6B,UAAlC;QACI1P,cAAJ,CAAmB,KAAKlB,UAAxB,EAAoC,KAApC;QACIyO,sBAAJ,EAA4B;UACtBmB,eAAJ,EAAqB;cACbA,eAAN,GAAwB,IAAxB;YACIiB,WAAWnC,aAAamB,OAAb,CAAqBC,oBAAoB,IAApB,EAA0B,KAA1B,CAArB,CAAf;YACIe,QAAJ,EAAc;iBACLtE,IAAP,GAAcuE,KAAKC,KAAL,CAAWF,QAAX,CAAd;;;;SAIDL,aAAL,GAAqB9a,SAASC,aAAT,CAAuB,KAAvB,CAArB;SACK6a,aAAL,CAAmB3a,SAAnB,GAA+BkZ,IAAI2B,WAAnC;QACIpM,QAAJ,CAAa,KAAKkM,aAAlB,EAAiCzB,IAAIiC,kBAArC;QACIzO,OAAO0N,UAAX,EAAuB;UACjB3L,QAAJ,CAAa,KAAKkM,aAAlB,EAAiCzB,IAAIkC,eAArC;WACKjR,UAAL,CAAgBkR,YAAhB,CAA6B,KAAKV,aAAlC,EAAiD,KAAKxQ,UAAL,CAAgBmR,UAAhB,CAA2B,CAA3B,CAAjD;KAFF,MAGO;UACD7M,QAAJ,CAAa,KAAKkM,aAAlB,EAAiCzB,IAAIqC,kBAArC;WACKpR,UAAL,CAAgBjK,WAAhB,CAA4B,KAAKya,aAAjC;;QAEElY,IAAJ,CAAS,KAAKkY,aAAd,EAA6B,OAA7B,EAAsC,YAAY;YAC1CH,MAAN,GAAe,CAAChK,MAAMgK,MAAtB;KADF;GAvBF,MA0BO;QACD9N,OAAO8N,MAAP,KAAkBxW,SAAtB,EAAiC;aACxBwW,MAAP,GAAgB,IAAhB;;QAEEgB,eAAe3b,SAAS4b,cAAT,CAAwB/O,OAAO6N,IAA/B,CAAnB;QACI9L,QAAJ,CAAa+M,YAAb,EAA2B,iBAA3B;eACWE,OAAOlL,KAAP,EAAcgL,YAAd,CAAX;QACIG,eAAe,SAASA,YAAT,CAAsB3Q,CAAtB,EAAyB;QACxC+I,cAAF;YACMyG,MAAN,GAAe,CAAChK,MAAMgK,MAAtB;aACO,KAAP;KAHF;QAKI/L,QAAJ,CAAa,KAAK0K,IAAlB,EAAwBD,IAAIuB,YAA5B;QACIhM,QAAJ,CAAa0L,QAAb,EAAuB,OAAvB;QACI1X,IAAJ,CAAS0X,QAAT,EAAmB,OAAnB,EAA4BwB,YAA5B;QACI,CAACjP,OAAO8N,MAAZ,EAAoB;WACbA,MAAL,GAAc,KAAd;;;MAGA9N,OAAOgN,SAAX,EAAsB;QAChB7X,OAAOW,WAAP,CAAmBkK,OAAOnE,MAA1B,CAAJ,EAAuC;UACjCwQ,eAAJ,EAAqB;6BACElZ,SAASC,aAAT,CAAuB,KAAvB,CAArB;YACI2O,QAAJ,CAAauK,kBAAb,EAAiCR,aAAjC;YACI/J,QAAJ,CAAauK,kBAAb,EAAiCE,IAAI0C,0BAArC;iBACS9D,IAAT,CAAc5X,WAAd,CAA0B8Y,kBAA1B;0BACkB,KAAlB;;yBAEiB9Y,WAAnB,CAA+B,KAAKiK,UAApC;UACIsE,QAAJ,CAAa,KAAKtE,UAAlB,EAA8B+O,IAAI2C,gBAAlC;;QAEE,CAAC,KAAKtT,MAAV,EAAkB;eACPiI,KAAT,EAAgB9D,OAAO8C,KAAvB;;;OAGCsM,eAAL,GAAuB,YAAY;UAC3BC,iBAAN;GADF;MAGItZ,IAAJ,CAAS9C,MAAT,EAAiB,QAAjB,EAA2B,KAAKmc,eAAhC;MACIrZ,IAAJ,CAAS,KAAK0W,IAAd,EAAoB,qBAApB,EAA2C,KAAK2C,eAAhD;MACIrZ,IAAJ,CAAS,KAAK0W,IAAd,EAAoB,eAApB,EAAqC,KAAK2C,eAA1C;MACIrZ,IAAJ,CAAS,KAAK0W,IAAd,EAAoB,gBAApB,EAAsC,KAAK2C,eAA3C;OACKpB,QAAL;MACIhO,OAAOmN,SAAX,EAAsB;oBACJ,IAAhB;;uBAEmB,SAASK,kBAAT,GAA8B;QAC7CtB,0BAA0BC,aAAamB,OAAb,CAAqBC,oBAAoBzJ,KAApB,EAA2B,SAA3B,CAArB,MAAgE,MAA9F,EAAsG;mBACvFsK,OAAb,CAAqBb,oBAAoBzJ,KAApB,EAA2B,KAA3B,CAArB,EAAwDyK,KAAKe,SAAL,CAAexL,MAAMyL,aAAN,EAAf,CAAxD;;GAFJ;OAKKC,4BAAL,GAAoChC,kBAApC;WACSiC,UAAT,GAAsB;QAChBC,OAAO5L,MAAM6J,OAAN,EAAX;SACK7K,KAAL,IAAc,CAAd;WACOnM,KAAP,CAAa,YAAY;WAClBmM,KAAL,IAAc,CAAd;KADF;;MAIE,CAAC9C,OAAOnE,MAAZ,EAAoB;;;CA7NtB;AAiOA2Q,IAAImD,UAAJ,GAAiB,YAAY;SACpB,CAACtE,IAAR;SACO/V,IAAP,CAAYiX,YAAZ,EAA0B,UAAUqD,GAAV,EAAe;QACnCnS,UAAJ,CAAevK,KAAf,CAAqBqY,OAArB,GAA+BF,OAAO,MAAP,GAAgB,EAA/C;GADF;CAFF;AAMAmB,IAAI2C,gBAAJ,GAAuB,GAAvB;AACA3C,IAAI0C,0BAAJ,GAAiC,IAAjC;AACA1C,IAAI6B,UAAJ,GAAiB,MAAjB;AACA7B,IAAIqD,oBAAJ,GAA2B,IAA3B;AACArD,IAAIsD,cAAJ,GAAqB,oBAArB;AACAtD,IAAIuB,YAAJ,GAAmB,QAAnB;AACAvB,IAAIiC,kBAAJ,GAAyB,cAAzB;AACAjC,IAAIkC,eAAJ,GAAsB,WAAtB;AACAlC,IAAIqC,kBAAJ,GAAyB,cAAzB;AACArC,IAAIuD,UAAJ,GAAiB,MAAjB;AACAvD,IAAIO,aAAJ,GAAoB,GAApB;AACAP,IAAI2B,WAAJ,GAAkB,gBAAlB;AACA3B,IAAI0B,SAAJ,GAAgB,eAAhB;AACA1B,IAAIwD,eAAJ,GAAsB,UAAU1R,CAAV,EAAa;MAC7BnL,SAASqQ,aAAT,CAAuBC,IAAvB,KAAgC,MAAhC,KAA2CnF,EAAE2R,KAAF,KAAYlE,aAAZ,IAA6BzN,EAAE6C,OAAF,KAAc4K,aAAtF,CAAJ,EAA0G;QACpG4D,UAAJ;;CAFJ;AAKAjR,IAAI3I,IAAJ,CAAS9C,MAAT,EAAiB,SAAjB,EAA4BuZ,IAAIwD,eAAhC,EAAiD,KAAjD;AACA7a,OAAOC,MAAP,CAAcoX,IAAIzX,SAAlB,EACA;OACO,SAASmb,GAAT,CAAa3U,MAAb,EAAqBC,QAArB,EAA+B;WAC3B2U,KAAK,IAAL,EAAW5U,MAAX,EAAmBC,QAAnB,EAA6B;mBACrB1G,MAAMC,SAAN,CAAgBG,KAAhB,CAAsBK,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC;KADR,CAAP;GAFJ;YAMY,SAAS4a,QAAT,CAAkB7U,MAAlB,EAA0BC,QAA1B,EAAoC;WACrC2U,KAAK,IAAL,EAAW5U,MAAX,EAAmBC,QAAnB,EAA6B;aAC3B;KADF,CAAP;GAPJ;UAWU,SAAS6U,MAAT,CAAgBC,UAAhB,EAA4B;SAC7B7D,IAAL,CAAU8D,WAAV,CAAsBD,WAAWE,IAAjC;SACK7D,aAAL,CAAmBlK,MAAnB,CAA0B,KAAKkK,aAAL,CAAmBzK,OAAnB,CAA2BoO,UAA3B,CAA1B,EAAkE,CAAlE;QACIxM,QAAQ,IAAZ;WACOnN,KAAP,CAAa,YAAY;YACjBqX,QAAN;KADF;GAfJ;WAmBW,SAASyC,OAAT,GAAmB;QACtB,KAAK5U,MAAT,EAAiB;YACT,IAAIa,KAAJ,CAAU,0DAA0D,uDAApE,CAAN;;QAEE,KAAKsQ,SAAT,EAAoB;yBACCuD,WAAnB,CAA+B,KAAK9S,UAApC;;QAEEqG,QAAQ,IAAZ;WACOxO,IAAP,CAAY,KAAKoX,SAAjB,EAA4B,UAAUgE,SAAV,EAAqB;YACzCC,YAAN,CAAmBD,SAAnB;KADF;QAGI9O,MAAJ,CAAW3O,MAAX,EAAmB,SAAnB,EAA8BuZ,IAAIwD,eAAlC,EAAmD,KAAnD;oBACgB,IAAhB;GA/BJ;aAiCa,SAASY,SAAT,CAAmB/C,IAAnB,EAAyB;QAC9B,KAAKnB,SAAL,CAAemB,IAAf,MAAyBvW,SAA7B,EAAwC;YAChC,IAAIoF,KAAJ,CAAU,iDAAiD,SAAjD,GAA6DmR,IAA7D,GAAoE,GAA9E,CAAN;;QAEEgD,eAAe,EAAEhD,MAAMA,IAAR,EAAchS,QAAQ,IAAtB,EAAnB;iBACamR,SAAb,GAAyB,KAAKA,SAA9B;QACI,KAAKhD,IAAL,IACJ,KAAKA,IAAL,CAAU8G,OADN,IAEJ,KAAK9G,IAAL,CAAU8G,OAAV,CAAkBjD,IAAlB,CAFA,EAEyB;mBACVC,MAAb,GAAsB,KAAK9D,IAAL,CAAU8G,OAAV,CAAkBjD,IAAlB,EAAwBC,MAA9C;mBACa9D,IAAb,GAAoB,KAAKA,IAAL,CAAU8G,OAAV,CAAkBjD,IAAlB,CAApB;;QAEE+B,MAAM,IAAIpD,GAAJ,CAAQqE,YAAR,CAAV;SACKnE,SAAL,CAAemB,IAAf,IAAuB+B,GAAvB;QACImB,KAAK/B,OAAO,IAAP,EAAaY,IAAInS,UAAjB,CAAT;QACIsE,QAAJ,CAAagP,EAAb,EAAiB,QAAjB;WACOnB,GAAP;GAjDJ;gBAmDgB,SAASe,YAAT,CAAsBK,MAAtB,EAA8B;SACrCvE,IAAL,CAAU8D,WAAV,CAAsBS,OAAOvT,UAAP,CAAkBwT,aAAxC;WACO,KAAKvE,SAAL,CAAesE,OAAOnD,IAAtB,CAAP;QACI,KAAK7D,IAAL,IACJ,KAAKA,IAAL,CAAU8G,OADN,IAEJ,KAAK9G,IAAL,CAAU8G,OAAV,CAAkBE,OAAOnD,IAAzB,CAFA,EAEgC;aACvB,KAAK7D,IAAL,CAAU8G,OAAV,CAAkBE,OAAOnD,IAAzB,CAAP;;oBAEcmD,MAAhB;QACIlN,QAAQ,IAAZ;WACOxO,IAAP,CAAY0b,OAAOtE,SAAnB,EAA8B,UAAUgE,SAAV,EAAqB;aAC1CC,YAAP,CAAoBD,SAApB;KADF;WAGO/Z,KAAP,CAAa,YAAY;YACjBqX,QAAN;KADF;GAhEJ;QAoEQ,SAASkD,IAAT,GAAgB;SACfpD,MAAL,GAAc,KAAd;GArEJ;SAuES,SAASqD,KAAT,GAAiB;SACjBrD,MAAL,GAAc,IAAd;GAxEJ;QA0EQ,SAASzC,IAAT,GAAgB;SACf5N,UAAL,CAAgBvK,KAAhB,CAAsBqY,OAAtB,GAAgC,MAAhC;GA3EJ;QA6EQ,SAASD,IAAT,GAAgB;SACf7N,UAAL,CAAgBvK,KAAhB,CAAsBqY,OAAtB,GAAgC,EAAhC;GA9EJ;YAgFY,SAASyC,QAAT,GAAoB;QACxB0B,OAAO,KAAK/B,OAAL,EAAX;QACI+B,KAAKtC,UAAT,EAAqB;UACf1N,MAAMhB,IAAIuE,SAAJ,CAAcyM,KAAKjD,IAAnB,EAAyB/M,GAAnC;UACIpL,IAAI,CAAR;aACOgB,IAAP,CAAYoa,KAAKjD,IAAL,CAAUmC,UAAtB,EAAkC,UAAUwC,IAAV,EAAgB;YAC5C,EAAE1B,KAAK1C,SAAL,IAAkBoE,SAAS1B,KAAK2B,UAAlC,CAAJ,EAAmD;eAC5C3S,IAAIqE,SAAJ,CAAcqO,IAAd,CAAL;;OAFJ;UAKIne,OAAO2Y,WAAP,GAAqBlM,GAArB,GAA2BsM,mBAA3B,GAAiD1X,CAArD,EAAwD;YAClDyN,QAAJ,CAAa2N,KAAKjS,UAAlB,EAA8B+O,IAAIsD,cAAlC;aACKrD,IAAL,CAAUvZ,KAAV,CAAgB8P,MAAhB,GAAyB/P,OAAO2Y,WAAP,GAAqBlM,GAArB,GAA2BsM,mBAA3B,GAAiD,IAA1E;OAFF,MAGO;YACD1J,WAAJ,CAAgBoN,KAAKjS,UAArB,EAAiC+O,IAAIsD,cAArC;aACKrD,IAAL,CAAUvZ,KAAV,CAAgB8P,MAAhB,GAAyB,MAAzB;;;QAGA0M,KAAK4B,eAAT,EAA0B;aACjB3a,KAAP,CAAa,YAAY;aAClB2a,eAAL,CAAqBpe,KAArB,CAA2B8P,MAA3B,GAAoC0M,KAAKjD,IAAL,CAAU8E,YAAV,GAAyB,IAA7D;OADF;;QAIE7B,KAAKzB,aAAT,EAAwB;WACjBA,aAAL,CAAmB/a,KAAnB,CAAyB4P,KAAzB,GAAiC4M,KAAK5M,KAAL,GAAa,IAA9C;;GAxGN;qBA2GqB3N,OAAO0B,QAAP,CAAgB,YAAY;SACxCmX,QAAL;GADiB,EAEhB,EAFgB,CA3GrB;YA8GY,SAASwD,QAAT,GAAoB;QACxBrc,OAAOW,WAAP,CAAmBsW,aAAnB,CAAJ,EAAuC;sBACrB,IAAIlB,WAAJ,EAAhB;oBACczN,UAAd,CAAyBnK,SAAzB,GAAqCoX,kBAArC;;QAEE,KAAK7O,MAAT,EAAiB;YACT,IAAIa,KAAJ,CAAU,gDAAV,CAAN;;QAEEoH,QAAQ,IAAZ;WACOxO,IAAP,CAAYR,MAAMC,SAAN,CAAgBG,KAAhB,CAAsBK,IAAtB,CAA2BC,SAA3B,CAAZ,EAAmD,UAAU+F,MAAV,EAAkB;UAC/DuI,MAAM8I,mBAAN,CAA0BhY,MAA1B,KAAqC,CAAzC,EAA4C;oBAC9BkP,KAAZ;;UAEEA,MAAM8I,mBAAN,CAA0B1K,OAA1B,CAAkC3G,MAAlC,MAA8C,CAAC,CAAnD,EAAsD;cAC9CqR,mBAAN,CAA0BzK,IAA1B,CAA+B5G,MAA/B;;KALJ;QAQI,KAAKyR,SAAT,EAAoB;eACT,IAAT,EAAe,KAAKlK,KAApB;;GAhIN;WAmIW,SAAS6K,OAAT,GAAmB;QACtBiC,MAAM,IAAV;WACOA,IAAI/T,MAAX,EAAmB;YACX+T,IAAI/T,MAAV;;WAEK+T,GAAP;GAxIJ;iBA0IiB,SAASL,aAAT,GAAyB;QAClC7W,WAAW,KAAKsR,IAApB;aACS8D,MAAT,GAAkB,KAAKA,MAAvB;QACI,KAAKlB,mBAAL,CAAyBhY,MAAzB,GAAkC,CAAtC,EAAyC;eAC9BqY,MAAT,GAAkB,KAAKA,MAAvB;UACI,CAACvU,SAAS+Y,UAAd,EAA0B;iBACfA,UAAT,GAAsB,EAAtB;;eAEOA,UAAT,CAAoB,KAAKxE,MAAzB,IAAmCyE,iBAAiB,IAAjB,CAAnC;;aAEOZ,OAAT,GAAmB,EAAnB;WACOxb,IAAP,CAAY,KAAKoX,SAAjB,EAA4B,UAAUnI,OAAV,EAAmB1O,GAAnB,EAAwB;eACzCib,OAAT,CAAiBjb,GAAjB,IAAwB0O,QAAQgL,aAAR,EAAxB;KADF;WAGO7W,QAAP;GAxJJ;QA0JQ,SAASiZ,IAAT,GAAgB;QAChB,CAAC,KAAK3H,IAAL,CAAUyH,UAAf,EAA2B;WACpBzH,IAAL,CAAUyH,UAAV,GAAuB,EAAvB;;SAEGzH,IAAL,CAAUyH,UAAV,CAAqB,KAAKxE,MAA1B,IAAoCyE,iBAAiB,IAAjB,CAApC;uBACmB,IAAnB,EAAyB,KAAzB;SACKlC,4BAAL;GAhKJ;UAkKU,SAASoC,MAAT,CAAgBC,UAAhB,EAA4B;QAC9B,CAAC,KAAK7H,IAAL,CAAUyH,UAAf,EAA2B;WACpBzH,IAAL,CAAUyH,UAAV,GAAuB,EAAvB;WACKzH,IAAL,CAAUyH,UAAV,CAAqBxF,2BAArB,IAAoDyF,iBAAiB,IAAjB,EAAuB,IAAvB,CAApD;;SAEG1H,IAAL,CAAUyH,UAAV,CAAqBI,UAArB,IAAmCH,iBAAiB,IAAjB,CAAnC;SACKzE,MAAL,GAAc4E,UAAd;oBACgB,IAAhB,EAAsBA,UAAtB,EAAkC,IAAlC;SACKrC,4BAAL;GA1KJ;UA4KU,SAAS5B,MAAT,CAAgBgC,GAAhB,EAAqB;WACpBta,IAAP,CAAY,KAAKqX,aAAjB,EAAgC,UAAU2D,UAAV,EAAsB;UAChD,CAAC,KAAK3C,OAAL,GAAe3D,IAAf,CAAoByH,UAAzB,EAAqC;mBACxB3T,QAAX,CAAoBwS,WAAW9S,YAA/B;OADF,MAEO;yBACYoS,OAAO,KAAKjC,OAAL,EAAxB,EAAwC2C,UAAxC;;UAEEA,WAAW3S,gBAAf,EAAiC;mBACpBA,gBAAX,CAA4BpI,IAA5B,CAAiC+a,UAAjC,EAA6CA,WAAWrS,QAAX,EAA7C;;KAPJ,EASG,IATH;WAUO3I,IAAP,CAAY,KAAKoX,SAAjB,EAA4B,UAAUsE,MAAV,EAAkB;aACrCpD,MAAP,CAAcoD,MAAd;KADF;QAGI,CAACpB,GAAL,EAAU;yBACW,KAAKjC,OAAL,EAAnB,EAAmC,KAAnC;;GA3LN;UA8LU,SAASmE,MAAT,CAAgBxB,UAAhB,EAA4B;QAC9B1P,OAAO,KAAKkM,WAAL,CAAiBlY,MAAjB,KAA4B,CAAvC;SACKkY,WAAL,CAAiB3K,IAAjB,CAAsBmO,UAAtB;QACI1P,IAAJ,EAAU;qBACO,KAAKkM,WAApB;;GAlMN;iBAqMiB,SAAS9O,aAAT,GAAyB;WAC/B1I,IAAP,CAAY,KAAKqX,aAAjB,EAAgC,UAAU2D,UAAV,EAAsB;iBACzCtS,aAAX;KADF;WAGO1I,IAAP,CAAY,KAAKoX,SAAjB,EAA4B,UAAUsE,MAAV,EAAkB;aACrChT,aAAP;KADF;;CA1MJ;AA+MA,SAASgR,MAAT,CAAgBY,GAAhB,EAAqBmC,MAArB,EAA6BC,QAA7B,EAAuC;MACjCjB,KAAK5d,SAASC,aAAT,CAAuB,IAAvB,CAAT;MACI2e,MAAJ,EAAY;OACPve,WAAH,CAAeue,MAAf;;MAEEC,QAAJ,EAAc;QACRvF,IAAJ,CAASkC,YAAT,CAAsBoC,EAAtB,EAA0BiB,QAA1B;GADF,MAEO;QACDvF,IAAJ,CAASjZ,WAAT,CAAqBud,EAArB;;MAEE/C,QAAJ;SACO+C,EAAP;;AAEF,SAASkB,eAAT,CAAyBrC,GAAzB,EAA8B;MACxBhO,MAAJ,CAAW3O,MAAX,EAAmB,QAAnB,EAA6B2c,IAAIR,eAAjC;MACIQ,IAAIJ,4BAAR,EAAsC;QAChC5N,MAAJ,CAAW3O,MAAX,EAAmB,QAAnB,EAA6B2c,IAAIJ,4BAAjC;;;AAGJ,SAAS0C,kBAAT,CAA4BtC,GAA5B,EAAiCuC,QAAjC,EAA2C;MACrC3N,MAAMoL,IAAIwC,eAAJ,CAAoBxC,IAAIwC,eAAJ,CAAoB1N,aAAxC,CAAV;MACIyN,QAAJ,EAAc;QACR7e,SAAJ,GAAgBkR,IAAIrK,KAAJ,GAAY,GAA5B;GADF,MAEO;QACD7G,SAAJ,GAAgBkR,IAAIrK,KAApB;;;AAGJ,SAASkY,iBAAT,CAA2BzC,GAA3B,EAAgCmB,EAAhC,EAAoCT,UAApC,EAAgD;aACnCE,IAAX,GAAkBO,EAAlB;aACWuB,KAAX,GAAmB1C,GAAnB;SACOxa,MAAP,CAAckb,UAAd,EAA4D;aACjD,SAASlM,OAAT,CAAiBmO,QAAjB,EAA2B;UAC9B/c,UAAUZ,MAAV,GAAmB,CAAvB,EAA0B;YACpB4d,cAAclC,WAAWE,IAAX,CAAgBiC,kBAAlC;mBACWpC,MAAX;eACOF,KAAKP,GAAL,EAAUU,WAAW/U,MAArB,EAA6B+U,WAAW9U,QAAxC,EAAkD;kBAC/CgX,WAD+C;uBAE1C,CAACrd,OAAOkC,OAAP,CAAe7B,SAAf,CAAD;SAFR,CAAP;;UAKEL,OAAOwC,OAAP,CAAe4a,QAAf,KAA4Bpd,OAAOQ,QAAP,CAAgB4c,QAAhB,CAAhC,EAA2D;YACrDG,eAAepC,WAAWE,IAAX,CAAgBiC,kBAAnC;mBACWpC,MAAX;eACOF,KAAKP,GAAL,EAAUU,WAAW/U,MAArB,EAA6B+U,WAAW9U,QAAxC,EAAkD;kBAC/CkX,YAD+C;uBAE1C,CAACH,QAAD;SAFR,CAAP;;KAbsD;UAmBpD,SAAS1E,IAAT,CAAc8E,KAAd,EAAqB;iBACdnC,IAAX,CAAgBoC,iBAAhB,CAAkCA,iBAAlC,CAAoDtf,SAApD,GAAgEqf,KAAhE;aACOrC,UAAP;KArBwD;YAuBlD,SAASwB,MAAT,GAAkB;iBACbQ,KAAX,CAAiBR,MAAjB,CAAwBxB,UAAxB;aACOA,UAAP;KAzBwD;YA2BlD,SAASD,MAAT,GAAkB;iBACbiC,KAAX,CAAiBjC,MAAjB,CAAwBC,UAAxB;aACOA,UAAP;;GA7BJ;MAgCIA,sBAAsBrJ,sBAA1B,EAAkD;QAC5C4L,MAAM,IAAI1M,mBAAJ,CAAwBmK,WAAW/U,MAAnC,EAA2C+U,WAAW9U,QAAtD,EAAgE,EAAE7B,KAAK2W,WAAWpL,KAAlB,EAAyBtL,KAAK0W,WAAWnL,KAAzC,EAAgDE,MAAMiL,WAAWlL,MAAjE,EAAhE,CAAV;WACO9P,IAAP,CAAY,CAAC,eAAD,EAAkB,UAAlB,EAA8B,gBAA9B,EAAgD,MAAhD,EAAwD,KAAxD,EAA+D,KAA/D,CAAZ,EAAmF,UAAUwd,MAAV,EAAkB;UAC/FC,KAAKzC,WAAWwC,MAAX,CAAT;UACIE,KAAKH,IAAIC,MAAJ,CAAT;iBACWA,MAAX,IAAqBD,IAAIC,MAAJ,IAAc,YAAY;YACzC3c,OAAOrB,MAAMC,SAAN,CAAgBG,KAAhB,CAAsBK,IAAtB,CAA2BC,SAA3B,CAAX;WACGa,KAAH,CAASwc,GAAT,EAAc1c,IAAd;eACO4c,GAAG1c,KAAH,CAASia,UAAT,EAAqBna,IAArB,CAAP;OAHF;KAHF;QASI4L,QAAJ,CAAagP,EAAb,EAAiB,YAAjB;eACWtT,UAAX,CAAsBkR,YAAtB,CAAmCkE,IAAIpV,UAAvC,EAAmD6S,WAAW7S,UAAX,CAAsBmV,iBAAzE;GAZF,MAaO,IAAItC,sBAAsBnK,mBAA1B,EAA+C;QAChDnS,IAAI,SAASA,CAAT,CAAWif,QAAX,EAAqB;UACvB9d,OAAO0C,QAAP,CAAgByY,WAAWpL,KAA3B,KAAqC/P,OAAO0C,QAAP,CAAgByY,WAAWnL,KAA3B,CAAzC,EAA4E;YACtE+N,UAAU5C,WAAWE,IAAX,CAAgBoC,iBAAhB,CAAkCA,iBAAlC,CAAoDtf,SAAlE;YACI6f,eAAe7C,WAAWgC,KAAX,CAAiBxF,WAAjB,CAA6B5K,OAA7B,CAAqCoO,UAArC,IAAmD,CAAC,CAAvE;mBACWD,MAAX;YACI+C,gBAAgBjD,KAAKP,GAAL,EAAUU,WAAW/U,MAArB,EAA6B+U,WAAW9U,QAAxC,EAAkD;kBAC5D8U,WAAWE,IAAX,CAAgBiC,kBAD4C;uBAEvD,CAACnC,WAAWpL,KAAZ,EAAmBoL,WAAWnL,KAA9B,EAAqCmL,WAAWlL,MAAhD;SAFK,CAApB;sBAIcyI,IAAd,CAAmBqF,OAAnB;YACIC,YAAJ,EAAkBC,cAActB,MAAd;eACXsB,aAAP;;aAEKH,QAAP;KAbF;eAeWtZ,GAAX,GAAiBxE,OAAOc,OAAP,CAAejC,CAAf,EAAkBsc,WAAW3W,GAA7B,CAAjB;eACWC,GAAX,GAAiBzE,OAAOc,OAAP,CAAejC,CAAf,EAAkBsc,WAAW1W,GAA7B,CAAjB;GAjBK,MAkBA,IAAI0W,sBAAsB3M,iBAA1B,EAA6C;QAC9C5N,IAAJ,CAASgb,EAAT,EAAa,OAAb,EAAsB,YAAY;UAC5BnR,SAAJ,CAAc0Q,WAAWtM,UAAzB,EAAqC,OAArC;KADF;QAGIjO,IAAJ,CAASua,WAAWtM,UAApB,EAAgC,OAAhC,EAAyC,UAAU1F,CAAV,EAAa;QAClD+U,eAAF;KADF;GAJK,MAOA,IAAI/C,sBAAsB1I,kBAA1B,EAA8C;QAC/C7R,IAAJ,CAASgb,EAAT,EAAa,OAAb,EAAsB,YAAY;UAC5BnR,SAAJ,CAAc0Q,WAAWxI,QAAzB,EAAmC,OAAnC;KADF;QAGI/R,IAAJ,CAASgb,EAAT,EAAa,WAAb,EAA0B,YAAY;UAChChP,QAAJ,CAAauO,WAAWxI,QAAxB,EAAkC,OAAlC;KADF;QAGI/R,IAAJ,CAASgb,EAAT,EAAa,UAAb,EAAyB,YAAY;UAC/BzO,WAAJ,CAAgBgO,WAAWxI,QAA3B,EAAqC,OAArC;KADF;GAPK,MAUA,IAAIwI,sBAAsBtI,eAA1B,EAA2C;QAC5CjG,QAAJ,CAAagP,EAAb,EAAiB,OAAjB;eACW/S,aAAX,GAA2B7I,OAAOc,OAAP,CAAe,UAAUwI,GAAV,EAAe;SACpDvL,KAAH,CAASogB,eAAT,GAA2BhD,WAAWrI,OAAX,CAAmBlU,QAAnB,EAA3B;aACO0K,GAAP;KAFyB,EAGxB6R,WAAWtS,aAHa,CAA3B;eAIWA,aAAX;;aAESF,QAAX,GAAsB3I,OAAOc,OAAP,CAAe,UAAUwI,GAAV,EAAe;QAC9CmR,IAAIjC,OAAJ,GAAcyE,eAAd,IAAiC9B,WAAWpS,UAAX,EAArC,EAA8D;yBACzC0R,IAAIjC,OAAJ,EAAnB,EAAkC,IAAlC;;WAEKlP,GAAP;GAJoB,EAKnB6R,WAAWxS,QALQ,CAAtB;;AAOF,SAASyV,gBAAT,CAA0B3D,GAA1B,EAA+BU,UAA/B,EAA2C;MACrCZ,OAAOE,IAAIjC,OAAJ,EAAX;MACI6F,eAAe9D,KAAK9C,mBAAL,CAAyB1K,OAAzB,CAAiCoO,WAAW/U,MAA5C,CAAnB;MACIiY,iBAAiB,CAAC,CAAtB,EAAyB;QACnBC,gBAAgB/D,KAAK7C,sCAAL,CAA4C2G,YAA5C,CAApB;QACIC,kBAAkBnc,SAAtB,EAAiC;sBACf,EAAhB;WACKuV,sCAAL,CAA4C2G,YAA5C,IAA4DC,aAA5D;;kBAEYnD,WAAW9U,QAAzB,IAAqC8U,UAArC;QACIZ,KAAK1F,IAAL,IAAa0F,KAAK1F,IAAL,CAAUyH,UAA3B,EAAuC;UACjCiC,YAAYhE,KAAK1F,IAAL,CAAUyH,UAA1B;UACIxE,SAAS,KAAK,CAAlB;UACIyG,UAAU9D,IAAI3C,MAAd,CAAJ,EAA2B;iBAChByG,UAAU9D,IAAI3C,MAAd,CAAT;OADF,MAEO,IAAIyG,UAAUzH,2BAAV,CAAJ,EAA4C;iBACxCyH,UAAUzH,2BAAV,CAAT;OADK,MAEA;;;UAGHgB,OAAOuG,YAAP,KAAwBvG,OAAOuG,YAAP,EAAqBlD,WAAW9U,QAAhC,MAA8ClE,SAA1E,EAAqF;YAC/E6C,QAAQ8S,OAAOuG,YAAP,EAAqBlD,WAAW9U,QAAhC,CAAZ;mBACWgC,YAAX,GAA0BrD,KAA1B;mBACW2D,QAAX,CAAoB3D,KAApB;;;;;AAKR,SAASgW,IAAT,CAAcP,GAAd,EAAmBrU,MAAnB,EAA2BC,QAA3B,EAAqCwE,MAArC,EAA6C;MACvC2T,YAAJ;MACIpY,OAAO/F,SAAX,EAAsB;mBACL+F,MAAf;aACSoY,aAAane,SAAb,CAAuB+F,MAAhC;eACWoY,aAAane,SAAb,CAAuBgG,QAAlC;aACS;mBACMmY,aAAane,SAAb,CAAuB2O;KADtC;;MAIEwP,iBAAiBrc,SAAjB,IAA8BiE,OAAOC,QAAP,MAAqBlE,SAAvD,EAAkE;UAC1D,IAAIoF,KAAJ,CAAU,aAAanB,MAAb,GAAsB,qBAAtB,GAA8CC,QAA9C,GAAyD,GAAnE,CAAN;;MAEE8U,aAAa,KAAK,CAAtB;MACItQ,OAAOtM,KAAX,EAAkB;iBACH,IAAIsU,eAAJ,CAAoBzM,MAApB,EAA4BC,QAA5B,CAAb;GADF,MAEO,IAAImY,iBAAiBrc,SAAjB,IAA8B,OAAOqc,aAAanY,QAApB,KAAiC,QAAnE,EAA6E;iBACrEmY,YAAb;GADK,MAEA;QACDC,cAAc,CAACrY,MAAD,EAASC,QAAT,EAAmBqY,MAAnB,CAA0B7T,OAAO4T,WAAjC,CAAlB;iBACa9J,kBAAkBzT,KAAlB,CAAwBuZ,GAAxB,EAA6BgE,WAA7B,CAAb;;MAEEtD,eAAe,IAAnB,EAAyBA,aAAaqD,YAAb;MACrB3T,OAAO8T,MAAP,YAAyBvW,UAA7B,EAAyC;WAChCuW,MAAP,GAAgB9T,OAAO8T,MAAP,CAActD,IAA9B;;mBAEeZ,GAAjB,EAAsBU,UAAtB;MACIvO,QAAJ,CAAauO,WAAW7S,UAAxB,EAAoC,GAApC;MACIoQ,OAAO1a,SAASC,aAAT,CAAuB,MAAvB,CAAX;MACI2O,QAAJ,CAAa8L,IAAb,EAAmB,eAAnB;MACI8F,iBAAiBrc,SAAjB,IAA8B8C,UAAQuZ,aAAanY,QAArB,MAAmC,QAArE,EAA+E;SACxE,IAAIuY,YAAT,IAAyBJ,aAAanY,QAAtC,EAAgD;WACzChI,WAAL,CAAiBmgB,aAAanY,QAAb,CAAsBuY,YAAtB,CAAjB;;GAFJ,MAIOlG,KAAKva,SAAL,GAAiBgd,WAAW9U,QAA5B;MACHwY,YAAY7gB,SAASC,aAAT,CAAuB,KAAvB,CAAhB;YACUI,WAAV,CAAsBqa,IAAtB;YACUra,WAAV,CAAsB8c,WAAW7S,UAAjC;MACIsT,KAAK/B,OAAOY,GAAP,EAAYoE,SAAZ,EAAuBhU,OAAO8T,MAA9B,CAAT;MACI/R,QAAJ,CAAagP,EAAb,EAAiBvE,IAAIqD,oBAArB;MACIS,sBAAsBtI,eAA1B,EAA2C;QACrCjG,QAAJ,CAAagP,EAAb,EAAiB,OAAjB;GADF,MAEO;QACDhP,QAAJ,CAAagP,EAAb,EAAiB3W,UAAQkW,WAAWrS,QAAX,EAAR,CAAjB;;oBAEgB2R,GAAlB,EAAuBmB,EAAvB,EAA2BT,UAA3B;MACI3D,aAAJ,CAAkBxK,IAAlB,CAAuBmO,UAAvB;SACOA,UAAP;;AAEF,SAAS/C,mBAAT,CAA6BqC,GAA7B,EAAkC/Z,GAAlC,EAAuC;SAC9B1C,SAAS8gB,QAAT,CAAkBvQ,IAAlB,GAAyB,GAAzB,GAA+B7N,GAAtC;;AAEF,SAASqe,eAAT,CAAyBtE,GAAzB,EAA8B/B,IAA9B,EAAoCsG,WAApC,EAAiD;MAC3C3P,MAAMrR,SAASC,aAAT,CAAuB,QAAvB,CAAV;MACIE,SAAJ,GAAgBua,IAAhB;MACI1T,KAAJ,GAAY0T,IAAZ;MACIuE,eAAJ,CAAoB5e,WAApB,CAAgCgR,GAAhC;MACI2P,WAAJ,EAAiB;QACX/B,eAAJ,CAAoB1N,aAApB,GAAoCkL,IAAIwC,eAAJ,CAAoBxd,MAApB,GAA6B,CAAjE;;;AAGJ,SAASwf,eAAT,CAAyBxE,GAAzB,EAA8ByE,OAA9B,EAAuC;UAC7BnhB,KAAR,CAAcqY,OAAd,GAAwBqE,IAAIvC,eAAJ,GAAsB,OAAtB,GAAgC,MAAxD;;AAEF,SAASiH,WAAT,CAAqB1E,GAArB,EAA0B;MACpB2E,MAAM3E,IAAIyB,UAAJ,GAAiBle,SAASC,aAAT,CAAuB,IAAvB,CAA3B;MACI2O,QAAJ,CAAa6N,IAAInS,UAAjB,EAA6B,UAA7B;MACIgP,IAAJ,CAASkC,YAAT,CAAsB4F,GAAtB,EAA2B3E,IAAInD,IAAJ,CAAS+H,UAApC;MACIzS,QAAJ,CAAawS,GAAb,EAAkB,UAAlB;MACIE,QAAQthB,SAASC,aAAT,CAAuB,MAAvB,CAAZ;QACME,SAAN,GAAkB,QAAlB;MACIyO,QAAJ,CAAa0S,KAAb,EAAoB,cAApB;MACIC,SAASvhB,SAASC,aAAT,CAAuB,MAAvB,CAAb;SACOE,SAAP,GAAmB,MAAnB;MACIyO,QAAJ,CAAa2S,MAAb,EAAqB,QAArB;MACI3S,QAAJ,CAAa2S,MAAb,EAAqB,MAArB;MACIC,UAAUxhB,SAASC,aAAT,CAAuB,MAAvB,CAAd;UACQE,SAAR,GAAoB,KAApB;MACIyO,QAAJ,CAAa4S,OAAb,EAAsB,QAAtB;MACI5S,QAAJ,CAAa4S,OAAb,EAAsB,SAAtB;MACIC,UAAUzhB,SAASC,aAAT,CAAuB,MAAvB,CAAd;UACQE,SAAR,GAAoB,QAApB;MACIyO,QAAJ,CAAa6S,OAAb,EAAsB,QAAtB;MACI7S,QAAJ,CAAa6S,OAAb,EAAsB,QAAtB;MACIC,SAASjF,IAAIwC,eAAJ,GAAsBjf,SAASC,aAAT,CAAuB,QAAvB,CAAnC;MACIwc,IAAI5F,IAAJ,IAAY4F,IAAI5F,IAAJ,CAASyH,UAAzB,EAAqC;WAC5Bnc,IAAP,CAAYsa,IAAI5F,IAAJ,CAASyH,UAArB,EAAiC,UAAUtX,KAAV,EAAiBtE,GAAjB,EAAsB;sBACrC+Z,GAAhB,EAAqB/Z,GAArB,EAA0BA,QAAQ+Z,IAAI3C,MAAtC;KADF;GADF,MAIO;oBACW2C,GAAhB,EAAqB3D,2BAArB,EAAkD,KAAlD;;MAEElW,IAAJ,CAAS8e,MAAT,EAAiB,QAAjB,EAA2B,YAAY;SAChC,IAAIrS,QAAQ,CAAjB,EAAoBA,QAAQoN,IAAIwC,eAAJ,CAAoBxd,MAAhD,EAAwD4N,OAAxD,EAAiE;UAC3D4P,eAAJ,CAAoB5P,KAApB,EAA2BlP,SAA3B,GAAuCsc,IAAIwC,eAAJ,CAAoB5P,KAApB,EAA2BrI,KAAlE;;QAEE8S,MAAJ,GAAa,KAAK9S,KAAlB;GAJF;MAMI3G,WAAJ,CAAgBqhB,MAAhB;MACIrhB,WAAJ,CAAgBihB,KAAhB;MACIjhB,WAAJ,CAAgBkhB,MAAhB;MACIlhB,WAAJ,CAAgBmhB,OAAhB;MACInhB,WAAJ,CAAgBohB,OAAhB;MACI1I,sBAAJ,EAA4B;QACtBmI,UAAUlhB,SAAS2hB,cAAT,CAAwB,kBAAxB,CAAd;QACIC,uBAAuB5hB,SAAS2hB,cAAT,CAAwB,kBAAxB,CAA3B;QACIE,cAAc7hB,SAAS2hB,cAAT,CAAwB,iBAAxB,CAAlB;gBACY5hB,KAAZ,CAAkBqY,OAAlB,GAA4B,OAA5B;QACIY,aAAamB,OAAb,CAAqBC,oBAAoBqC,GAApB,EAAyB,SAAzB,CAArB,MAA8D,MAAlE,EAA0E;2BACnDvc,YAArB,CAAkC,SAAlC,EAA6C,SAA7C;;oBAEcuc,GAAhB,EAAqByE,OAArB;QACIte,IAAJ,CAASgf,oBAAT,EAA+B,QAA/B,EAAyC,YAAY;UAC/C1H,eAAJ,GAAsB,CAACuC,IAAIvC,eAA3B;sBACgBuC,GAAhB,EAAqByE,OAArB;KAFF;;MAKEY,yBAAyB9hB,SAAS2hB,cAAT,CAAwB,oBAAxB,CAA7B;MACI/e,IAAJ,CAASkf,sBAAT,EAAiC,SAAjC,EAA4C,UAAU3W,CAAV,EAAa;QACnDA,EAAE4C,OAAF,KAAc5C,EAAE2R,KAAF,KAAY,EAAZ,IAAkB3R,EAAE6C,OAAF,KAAc,EAA9C,CAAJ,EAAuD;oBACvCkK,IAAd;;GAFJ;MAKItV,IAAJ,CAAS0e,KAAT,EAAgB,OAAhB,EAAyB,YAAY;2BACZnhB,SAAvB,GAAmCib,KAAKe,SAAL,CAAeM,IAAIL,aAAJ,EAAf,EAAoCjY,SAApC,EAA+C,CAA/C,CAAnC;kBACcgU,IAAd;2BACuB4J,KAAvB;2BACuBL,MAAvB;GAJF;MAMI9e,IAAJ,CAAS2e,MAAT,EAAiB,OAAjB,EAA0B,YAAY;QAChC/C,IAAJ;GADF;MAGI5b,IAAJ,CAAS4e,OAAT,EAAkB,OAAlB,EAA2B,YAAY;QACjC9C,aAAasD,OAAO,0BAAP,CAAjB;QACItD,UAAJ,EAAgB;UACVD,MAAJ,CAAWC,UAAX;;GAHJ;MAMI9b,IAAJ,CAAS6e,OAAT,EAAkB,OAAlB,EAA2B,YAAY;QACjChH,MAAJ;GADF;;AAIF,SAASwH,eAAT,CAAyBxF,GAAzB,EAA8B;MACxByF,UAAU,KAAK,CAAnB;MACI/D,eAAJ,GAAsBne,SAASC,aAAT,CAAuB,KAAvB,CAAtB;SACOgC,MAAP,CAAcwa,IAAI0B,eAAJ,CAAoBpe,KAAlC,EAAyC;WAChC,KADgC;gBAE3B,MAF2B;YAG/B,OAH+B;YAI/B,WAJ+B;cAK7B;GALZ;WAOSoiB,IAAT,CAAchX,CAAd,EAAiB;MACb+I,cAAF;QACIvE,KAAJ,IAAauS,UAAU/W,EAAE8B,OAAzB;QACI4N,QAAJ;cACU1P,EAAE8B,OAAZ;WACO,KAAP;;WAEOmV,QAAT,GAAoB;QACdjT,WAAJ,CAAgBsN,IAAI3B,aAApB,EAAmCzB,IAAIuD,UAAvC;QACInO,MAAJ,CAAW3O,MAAX,EAAmB,WAAnB,EAAgCqiB,IAAhC;QACI1T,MAAJ,CAAW3O,MAAX,EAAmB,SAAnB,EAA8BsiB,QAA9B;;WAEOC,SAAT,CAAmBlX,CAAnB,EAAsB;MAClB+I,cAAF;cACU/I,EAAE8B,OAAZ;QACI2B,QAAJ,CAAa6N,IAAI3B,aAAjB,EAAgCzB,IAAIuD,UAApC;QACIha,IAAJ,CAAS9C,MAAT,EAAiB,WAAjB,EAA8BqiB,IAA9B;QACIvf,IAAJ,CAAS9C,MAAT,EAAiB,SAAjB,EAA4BsiB,QAA5B;WACO,KAAP;;MAEExf,IAAJ,CAAS6Z,IAAI0B,eAAb,EAA8B,WAA9B,EAA2CkE,SAA3C;MACIzf,IAAJ,CAAS6Z,IAAI3B,aAAb,EAA4B,WAA5B,EAAyCuH,SAAzC;MACI/X,UAAJ,CAAekR,YAAf,CAA4BiB,IAAI0B,eAAhC,EAAiD1B,IAAInS,UAAJ,CAAemV,iBAAhE;;AAEF,SAAS6C,QAAT,CAAkB7F,GAAlB,EAAuB8F,CAAvB,EAA0B;MACpBjY,UAAJ,CAAevK,KAAf,CAAqB4P,KAArB,GAA6B4S,IAAI,IAAjC;MACI9F,IAAIyB,UAAJ,IAAkBzB,IAAI5C,SAA1B,EAAqC;QAC/BqE,UAAJ,CAAene,KAAf,CAAqB4P,KAArB,GAA6B4S,IAAI,IAAjC;;MAEE9F,IAAI3B,aAAR,EAAuB;QACjBA,aAAJ,CAAkB/a,KAAlB,CAAwB4P,KAAxB,GAAgC4S,IAAI,IAApC;;;AAGJ,SAAShE,gBAAT,CAA0B9B,GAA1B,EAA+B+F,gBAA/B,EAAiD;MAC3Cjd,WAAW,EAAf;SACOpD,IAAP,CAAYsa,IAAIhD,mBAAhB,EAAqC,UAAUnO,GAAV,EAAe+D,KAAf,EAAsB;QACrDoT,cAAc,EAAlB;QACInC,gBAAgB7D,IAAI/C,sCAAJ,CAA2CrK,KAA3C,CAApB;WACOlN,IAAP,CAAYme,aAAZ,EAA2B,UAAUnD,UAAV,EAAsB9U,QAAtB,EAAgC;kBAC7CA,QAAZ,IAAwBma,mBAAmBrF,WAAW9S,YAA9B,GAA6C8S,WAAWrS,QAAX,EAArE;KADF;aAGSuE,KAAT,IAAkBoT,WAAlB;GANF;SAQOld,QAAP;;AAEF,SAASmd,oBAAT,CAA8BjG,GAA9B,EAAmC;OAC5B,IAAIpN,QAAQ,CAAjB,EAAoBA,QAAQoN,IAAIwC,eAAJ,CAAoBxd,MAAhD,EAAwD4N,OAAxD,EAAiE;QAC3DoN,IAAIwC,eAAJ,CAAoB5P,KAApB,EAA2BrI,KAA3B,KAAqCyV,IAAI3C,MAA7C,EAAqD;UAC/CmF,eAAJ,CAAoB1N,aAApB,GAAoClC,KAApC;;;;AAIN,SAASsT,cAAT,CAAwBC,eAAxB,EAAyC;MACnCA,gBAAgBnhB,MAAhB,KAA2B,CAA/B,EAAkC;4BACRW,IAAxB,CAA6BtC,MAA7B,EAAqC,YAAY;qBAChC8iB,eAAf;KADF;;SAIKzgB,IAAP,CAAYygB,eAAZ,EAA6B,UAAUtc,CAAV,EAAa;MACtCuE,aAAF;GADF;;AAKF,AAKA,IAAIgY,cAAc;cACJzY,UADI;qBAEGoG,iBAFH;oBAGEO,gBAHF;oBAIES,gBAJF;oBAKEK,gBALF;uBAMKmB,mBANL;0BAOQc,sBAPR;sBAQIW,kBARJ;mBASCI,eATD;oBAUE+B;CAVpB;;ACt8EO,MAAMkM,cAAN,SAA6BD,YAAYjM,gBAAzC,CAA0D;aACnDxO,MAAb,EAAqBC,QAArB,EAA+BnH,CAA/B,EAAkCD,CAAlC,EAAsC;QAC9BmH,MAAP,EAAeC,QAAf;QAIMsI,QAAQ,IAAd;OAGKc,OAAL,GAAezR,SAASC,aAAT,CAAwB,OAAxB,CAAf;OACKwR,OAAL,CAAavR,YAAb,CAA2B,MAA3B,EAAmC,QAAnC;OACKuR,OAAL,CAAa1R,KAAb,CAAmB4P,KAAnB,GAA2B,KAA3B;OACK9E,aAAL;OACKP,UAAL,CAAgBjK,WAAhB,CAA6B,KAAKoR,OAAlC;MAGI8P,SAASvhB,SAASC,aAAT,CAAwB,OAAxB,CAAb;SACOC,YAAP,CAAqB,MAArB,EAA6B,QAA7B;SACO8G,KAAP,GAAe,SAASqB,QAAxB;SACOtI,KAAP,CAAa4P,KAAb,GAAqB,KAArB;SACOoT,OAAP,GAAiB,UAAW5X,CAAX,EAAe;UACxB9C,QAAP,IAAmBnH,IAAID,CAAvB;SACM4J,aAAN;GAFD;OAIKP,UAAL,CAAgBjK,WAAhB,CAA6BkhB,MAA7B;;iBAGe;OACV9P,OAAL,CAAazK,KAAb,GAAqB,KAAK8D,QAAL,EAArB;;;AAaF,AAAO,MAAMkY,cAAN,SAA6BH,YAAYjM,gBAAzC,CAA0D;aACnDnJ,IAAb,EAAoB;QACZ;aAEI,CAFJ;aAGIA;GAHX,EAKG,UALH,EAKe,CALf,EAKkB,EALlB,EAKsB,CALtB;MAOK,KAAKpF,QAAL,KAAkBlE,SAAvB,EACC8e,QAAQC,KAAR,CAAe,oBAAoB,KAAK7a,QAAxC;;;AAYH,AAAO,MAAM8a,qBAAN,SAAoCN,YAAYjM,gBAAhD,CAAiE;aAC1DnJ,IAAb,EAAoB;QACZ;aACIA;GADX;MAIK,KAAKpF,QAAL,KAAkBlE,SAAvB,EACC8e,QAAQC,KAAR,CAAe,qBAAqB,KAAK7a,QAAzC;;;;;;"} \ No newline at end of file diff --git a/index.js b/index.js index e16df1a..63fcbf8 100644 --- a/index.js +++ b/index.js @@ -19,35 +19,79 @@ import { GUI, controllers } from '../../dat.gui'; * * @extends dat.controllers.CustomController * + * @param {Object} object The object to be manipulated + * @param {string} property The name of the property to be manipulated * @param {number} a * @param {number} b */ export class KnobController extends controllers.CustomController { - constructor( a, b ) { - super(function (controller) { + constructor( object, property, a, b ) { + super( object, property ); - var button = document.createElement('span'); - button.innerHTML = 'Knob Controller'; - button.title = 'Please press knob'; - button.style.cursor = 'pointer'; - button.style.margin = '0px 2px'; - button.onclick = function (value) { + // ... set up options if needed - alert('Knob Controller ' + ( knobController.a + knobController.b )); + const _this = this; - } - controller.domElement.appendChild(button); + //input element + this.__input = document.createElement( 'input' ); + this.__input.setAttribute( 'type', 'number' ); + this.__input.style.width = '40%'; + this.updateDisplay(); + this.domElement.appendChild( this.__input ); - }); - this.a = a; - this.b = b; - var knobController = this; + //button element + var button = document.createElement( 'input' ); + button.setAttribute( 'type', 'button' ); + button.value = 'Set ' + property; + button.style.width = '50%'; + button.onclick = function ( e ) { + object[property] = a + b; + _this.updateDisplay(); + } + this.domElement.appendChild( button ); + } + updateDisplay() { + this.__input.value = this.getValue(); } } +/** + * @class Example of subtype of CustomController class. + * Periodically changes the selected 3D object. + * Adds NumberControllerSlider controller into PlayController for changing of the rate of changing of 3D obects per second. + * + * @extends dat.controllers.CustomController + * + * @param {Function} init Returns an object with elements for adding into "property-name" class element. + */ export class PlayController extends controllers.CustomController { - constructor( init ) { - super( init ); + constructor( init ) { + super( { + + playRate: 1,//Default play rate is 1 changes per second + property: init, + + }, 'playRate', 1, 25, 1 ); + if ( this.property === undefined ) + console.error( 'init() returns ' + this.property ); + } +} + +/** + * @class Example of subtype of CustomController class. + * Selects previous or next 3D object + * + * @extends dat.controllers.CustomController + * + * @param {Function} init Returns an object with elements for adding into "property-name" class element. + */ +export class PrevAndNextController extends controllers.CustomController { + constructor( init ) { + super( { + property: init, + } ); + if ( this.property === undefined ) + console.error( ' init() returns ' + this.property ); } }