@xviewer.js/debug 1.0.4-alpha.0 → 1.0.4-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -1
- package/dist/assets/index-DeOiC-Xv.css +545 -0
- package/dist/main.cjs +622 -107
- package/dist/main.cjs.map +1 -1
- package/dist/module.js +606 -109
- package/dist/module.js.map +1 -1
- package/package.json +5 -2
- package/types/Inspector.d.ts +7 -6
- package/types/Stats.d.ts +2 -2
- package/types/gui/GUI.d.ts +16 -3
- package/types/gui/controllers/SceneTreeController.d.ts +67 -0
- package/types/gui/controllers/SceneTreeController.example.d.ts +12 -0
- package/types/gui/utils/getColorFormat.d.ts +2 -2
- package/types/helpers/BoxProjectionHelper.d.ts +10 -0
- package/types/helpers/ViewerHelper.d.ts +30 -0
- package/types/index.d.ts +0 -1
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../../../node_modules/.pnpm/rollup-plugin-styles@4.0.0_rollup@4.17.2/node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/gui/controllers/Controller.ts","../src/gui/controllers/OptionController.ts","../src/gui/utils/normalizeColorString.ts","../src/gui/utils/getColorFormat.ts","../src/gui/utils/index.ts","../src/gui/controllers/NumberController.ts","../src/gui/controllers/BooleanController.ts","../src/gui/controllers/StringController.ts","../src/gui/controllers/FunctionController.ts","../src/gui/controllers/ColorController.ts","../src/gui/common/UIElement.ts","../src/gui/common/UINumber.ts","../src/gui/controllers/VectorController.ts","../src/gui/curve/CurveEditor.ts","../src/gui/controllers/CurveController.ts","../src/gui/controllers/TextureController.ts","../src/gui/GUI.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/ViewerHelper.ts","../src/Inspector.ts","../src/stats/Stats.js","../src/Stats.ts","../src/BoxProjectionHelper.ts"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import { GUI } from \"../GUI\";\n\nexport class Controller {\n static nextNameID: number = 0;\n\n parent: GUI;\n object: Object;\n property: string;\n /**\n * The value of `object[ property ]` when the controller was created.\n */\n initialValue: any;\n /**\n * The outermost container DOM element for this controller.\n */\n domElement: HTMLElement;\n /**\n * The DOM element that contains the controller's name.\n */\n $name: HTMLElement;\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n */\n $widget: HTMLElement;\n /**\n * The DOM element that receives the disabled attribute when using disable()\n */\n $disable: HTMLElement;\n /**\n * Used to determine if the controller is disabled.\n * Use `controller.disable( true|false )` to modify this value\n */\n protected _disabled: boolean = false;\n /**\n * Used to determine if the Controller is hidden.\n * Use `controller.show()` or `controller.hide()` to change this.\n */\n protected _hidden: boolean = false;\n protected _changed: boolean = false;\n /**\n * Used to determine if the controller is currently listening. Don't modify this value\n * directly. Use the `controller.listen( true|false )` method instead.\n */\n protected _listening: boolean = false;\n protected _listenCallbackID: number = -1;\n protected _listenPrevValue: any;\n /**\n * The controller's name. Use `controller.name( 'Name' )` to modify this value.\n */\n _name: string = \"\";\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value directly.\n * Use the `controller.onChange( callback )` method instead.\n */\n protected _onChange: Function;\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `controller.onFinishChange( callback )` method instead.\n */\n protected _onFinishChange: Function;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n className: string,\n widgetTag: string = 'div'\n ) {\n this.parent = parent;\n this.object = object;\n this.property = property;\n\n this.initialValue = this.getValue();\n this.domElement = document.createElement('div');\n this.domElement.classList.add('controller');\n this.domElement.classList.add(className);\n\n this.$name = document.createElement('div');\n this.$name.classList.add('name');\n\n Controller.nextNameID = Controller.nextNameID || 0;\n this.$name.id = `lil-gui-name-${++Controller.nextNameID}`;\n\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n * @type {HTMLElement}\n */\n this.$widget = document.createElement(widgetTag);\n this.$widget.classList.add('widget');\n this.$disable = this.$widget;\n\n this.domElement.appendChild(this.$name);\n this.domElement.appendChild(this.$widget);\n // Don't fire global key events while typing in a controller\n this.domElement.addEventListener('keydown', e => e.stopPropagation());\n this.domElement.addEventListener('keyup', e => e.stopPropagation());\n\n this.parent.children.push(this);\n this.parent.controllers.push(this);\n\n this.parent.$children.appendChild(this.domElement);\n\n this._listenCallback = this._listenCallback.bind(this);\n\n this.name(property);\n\n }\n\n /**\n * Sets the name of the controller and its label in the GUI.\n * @param {string} name\n * @returns {this}\n */\n name(name: string) {\n this._name = name;\n this.$name.innerHTML = name;\n return this;\n }\n\n /**\n * Pass a function to be called whenever the value is modified by this controller.\n * The function receives the new value as its first parameter. The value of `this` will be the\n * controller.\n *\n * For function controllers, the `onChange` callback will be fired on click, after the function\n * executes.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onChange( function( v ) {\n * \tconsole.log( 'The value is now ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n /**\n * Calls the onChange methods of this controller and its parent GUI.\n */\n protected _callOnChange() {\n this.parent._callOnChange(this);\n if (this._onChange !== undefined) {\n this._onChange.call(this, this.getValue());\n }\n this._changed = true;\n }\n\n /**\n * Pass a function to be called after this controller has been modified and loses focus.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onFinishChange( function( v ) {\n * \tconsole.log( 'Changes complete: ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n /**\n * Should be called by Controller when its widgets lose focus.\n */\n protected _callOnFinishChange() {\n if (this._changed) {\n this.parent._callOnFinishChange(this);\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, this.getValue());\n }\n }\n this._changed = false;\n }\n\n /**\n * Sets the controller back to its initial value.\n * @returns {this}\n */\n reset() {\n this.setValue(this.initialValue);\n this._callOnFinishChange();\n return this;\n }\n\n /**\n * Enables this controller.\n * @param {boolean} enabled\n * @returns {this}\n * @example\n * controller.enable();\n * controller.enable( false ); // disable\n * controller.enable( controller._disabled ); // toggle\n */\n enable(enabled = true) {\n return this.disable(!enabled);\n }\n\n /**\n * Disables this controller.\n * @param {boolean} disabled\n * @returns {this}\n * @example\n * controller.disable();\n * controller.disable( false ); // enable\n * controller.disable( !controller._disabled ); // toggle\n */\n disable(disabled = true) {\n if (disabled === this._disabled) return this;\n this._disabled = disabled;\n this.domElement.classList.toggle('disabled', disabled);\n this.$disable.toggleAttribute('disabled', disabled);\n return this;\n\n }\n\n /**\n * Shows the Controller after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * controller.show();\n * controller.show( false ); // hide\n * controller.show( controller._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n\n }\n\n /**\n * Hides the Controller.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n options(options: any) {\n return this;\n }\n\n /**\n * Sets the minimum value. Only works on number controllers.\n * @param {number} min\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n min(min: number) {\n return this;\n }\n\n /**\n * Sets the maximum value. Only works on number controllers.\n * @param {number} max\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n max(max: number) {\n return this;\n }\n\n /**\n * Values set by this controller will be rounded to multiples of `step`. Only works on number\n * controllers.\n * @param {number} step\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n step(step: number) {\n return this;\n }\n\n /**\n * Rounds the displayed value to a fixed number of decimals, without affecting the actual value\n * like `step()`. Only works on number controllers.\n * @example\n * gui.add( object, 'property' ).listen().decimals( 4 );\n * @param {number} decimals\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n decimals(decimals: number) {\n return this;\n }\n\n /**\n * Calls `updateDisplay()` every animation frame. Pass `false` to stop listening.\n * @param {boolean} listen\n * @returns {this}\n */\n listen(listen: boolean = true) {\n this._listening = listen;\n if (this._listenCallbackID !== undefined) {\n cancelAnimationFrame(this._listenCallbackID);\n this._listenCallbackID = undefined;\n }\n if (this._listening) {\n this._listenCallback();\n }\n return this;\n\n }\n\n checkDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.save();\n if (this._listenPrevValue !== value) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n private _listenCallback() {\n this._listenCallbackID = requestAnimationFrame(this._listenCallback);\n // To prevent framerate loss, make sure the value has changed before updating the display.\n // Note: save() is used here instead of getValue() only because of ColorController. The !== operator\n // won't work for color objects or arrays, but ColorController.save() always returns a string.\n if (this.checkDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Returns `object[ property ]`.\n * @returns {any}\n */\n getValue() {\n return this.object[this.property];\n }\n\n /**\n * Sets the value of `object[ property ]`, invokes any `onChange` handlers and updates the display.\n * @param {any} value\n * @param {boolean} callOnChange\n * @returns {this}\n */\n setValue(value: any) {\n this.object[this.property] = value;\n this._callOnChange();\n this.updateDisplay();\n return this;\n }\n\n update() {\n if (this.checkDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Updates the display to keep it in sync with the current value. Useful for updating your\n * controllers when their values have been modified outside of the GUI.\n * @returns {this}\n */\n updateDisplay() {\n return this;\n }\n\n load(value: any) {\n this.setValue(value);\n this._callOnFinishChange();\n return this;\n }\n\n save() {\n return this.getValue();\n }\n\n /**\n * Destroys this controller and removes it from the parent GUI.\n */\n destroy() {\n this.listen(false);\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.controllers.splice(this.parent.controllers.indexOf(this), 1);\n this.parent.$children.removeChild(this.domElement);\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class OptionController extends Controller {\n $select: HTMLSelectElement;\n $display: HTMLElement;\n\n private _values: any[];\n private _names: string[];\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n options: Array<any> | Object\n ) {\n super(parent, object, property, 'option');\n\n this.$select = document.createElement('select');\n this.$select.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n\n this._values = Array.isArray(options) ? options : Object.values(options);\n this._names = Array.isArray(options) ? options : Object.keys(options);\n this._names.forEach(name => {\n const $option = document.createElement('option');\n $option.innerHTML = name;\n this.$select.appendChild($option);\n });\n this.$select.addEventListener('change', () => {\n this.setValue(this._values[this.$select.selectedIndex]);\n this._callOnFinishChange();\n });\n this.$select.addEventListener('focus', () => {\n this.$display.classList.add('focus');\n });\n this.$select.addEventListener('blur', () => {\n this.$display.classList.remove('focus');\n });\n\n this.$widget.appendChild(this.$select);\n this.$widget.appendChild(this.$display);\n this.$disable = this.$select;\n }\n\n updateDisplay() {\n const value = this.getValue();\n const index = this._values.indexOf(value);\n this.$select.selectedIndex = index;\n this.$display.innerHTML = index === -1 ? value : this._names[index];\n return this;\n }\n\n options(options: Array<any> | Object) {\n this.$select.innerHTML = \"\";\n this._values = Array.isArray(options) ? options : Object.values(options);\n this._names = Array.isArray(options) ? options : Object.keys(options);\n this._names.forEach(name => {\n const $option = document.createElement('option');\n $option.innerHTML = name;\n this.$select.appendChild($option);\n });\n return this;\n }\n}\n","/* eslint-disable no-cond-assign */\n\nexport function normalizeColorString(string: String) {\n\tlet match, result;\n\n\tif (match = string.match(/(#|0x)?([a-f0-9]{6})/i)) {\n\t\tresult = match[2];\n\t} else if (match = string.match(/rgb\\(\\s*(\\d*)\\s*,\\s*(\\d*)\\s*,\\s*(\\d*)\\s*\\)/)) {\n\t\tresult = parseInt(match[1]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[2]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[3]).toString(16).padStart(2, \"0\");\n\t} else if (match = string.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i)) {\n\t\tresult = match[1] + match[1] + match[2] + match[2] + match[3] + match[3];\n\t}\n\n\tif (result) {\n\t\treturn '#' + result;\n\t}\n\n\treturn false;\n\n}\n","import { normalizeColorString } from './normalizeColorString';\n\nconst STRING = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'string',\n\tfromHexString: normalizeColorString,\n\ttoHexString: normalizeColorString\n};\n\nconst INT = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'number',\n\tfromHexString: string => parseInt(string.substring(1), 16),\n\ttoHexString: value => '#' + value.toString(16).padStart(6, 0)\n};\n\nconst ARRAY = {\n\tisPrimitive: false,\n\n\t// The arrow function is here to appease tree shakers like esbuild or webpack.\n\t// See https://esbuild.github.io/api/#tree-shaking\n\tmatch: v => Array.isArray(v),\n\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget[0] = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget[1] = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget[2] = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString([r, g, b], rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst OBJECT = {\n\tisPrimitive: false,\n\tmatch: v => Object(v) === v,\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget.r = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget.g = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget.b = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString({ r, g, b }, rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst FORMATS = [STRING, INT, ARRAY, OBJECT];\n\nexport function getColorFormat(value) {\n\treturn FORMATS.find(format => format.match(value));\n}\n","export * from \"./getColorFormat\";\nexport * from \"./normalizeColorString\";\n\nexport function toFixedFloat(v: number, fractionDigits: number) {\n\treturn parseFloat(v.toFixed(fractionDigits));\n}\n\nexport function toFixed(v: number, fractionDigits: number) {\n\treturn toFixedFloat(v, fractionDigits).toString();\n}\n\nexport function getPrecision(value: number) {\n\tlet str = value.toString();\n\tlet index = str.indexOf('.');\n\tif (index > 0) {\n\t\treturn str.length - index - 1;\n\t}\n\treturn 0;\n}\n\nexport function hasDecimal(value: number) {\n\treturn value % 1 !== 0;\n}","import { GUI } from \"../GUI\";\nimport { getPrecision, hasDecimal } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class NumberController extends Controller {\n private _min: number;\n private _max: number;\n private _step: number;\n\n private _stepExplicit: boolean;\n private _hasSlider: boolean;\n private _inputFocused: boolean;\n\n $fill: HTMLElement;\n $input: HTMLInputElement;\n $slider: HTMLElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n\n super(parent, object, property, 'number');\n\n this._initInput();\n\n this.min(min);\n this.max(max);\n\n const stepExplicit = step !== undefined;\n this.step(stepExplicit ? step : this._getImplicitStep(), stepExplicit);\n }\n\n min(min: number) {\n this._min = min;\n this._onUpdateMinMax();\n return this;\n }\n\n max(max: number) {\n this._max = max;\n this._onUpdateMinMax();\n return this;\n }\n\n step(step: number, explicit: boolean = true) {\n this._step = step;\n this._stepExplicit = explicit;\n return this;\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.getValue();\n if (this._listenPrevValue === undefined || (Math.abs(this._listenPrevValue - value) >= this._step)) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n updateDisplay() {\n const value = this._snap(this.getValue());\n if (this._hasSlider) {\n let percent = (value - this._min) / (this._max - this._min);\n percent = Math.max(0, Math.min(percent, 1));\n this.$fill.style.width = percent * 100 + '%';\n }\n if (!this._inputFocused) {\n this.$input.value = \"\" + value;\n }\n return this;\n }\n\n private _initInput() {\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n // On touch devices only, use input[type=number] to force a numeric keyboard.\n // Ideally we could use one input type everywhere, but [type=number] has quirks\n // on desktop, and [inputmode=decimal] has quirks on iOS.\n // See https://github.com/georgealways/lil-gui/pull/16\n\n const isTouch = window.matchMedia('(pointer: coarse)').matches;\n\n if (isTouch) {\n this.$input.setAttribute('type', 'number');\n this.$input.setAttribute('step', 'any');\n }\n\n this.$widget.appendChild(this.$input);\n\n this.$disable = this.$input;\n\n const onInput = () => {\n let value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n if (this._stepExplicit) {\n value = this._snap(value);\n }\n this.setValue(this._clamp(value));\n };\n\n // Keys & mouse wheel\n // ---------------------------------------------------------------------\n const increment = delta => {\n const value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n this._snapClampSetValue(value + delta);\n // Force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n };\n\n const onKeyDown = e => {\n // Using `e.key` instead of `e.code` also catches NumpadEnter\n if (e.key === 'Enter') {\n this.$input.blur();\n }\n if (e.code === 'ArrowUp') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e));\n }\n if (e.code === 'ArrowDown') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e) * -1);\n }\n };\n\n const onWheel = e => {\n if (this._inputFocused) {\n e.preventDefault();\n increment(this._step * this._normalizeMouseWheel(e));\n }\n };\n\n // Vertical drag\n // ---------------------------------------------------------------------\n\n let testingForVerticalDrag = false,\n initClientX,\n initClientY,\n prevClientY,\n initValue,\n dragDelta;\n\n // Once the mouse is dragged more than DRAG_THRESH px on any axis, we decide\n // on the user's intent: horizontal means highlight, vertical means drag.\n const DRAG_THRESH = 5;\n\n const onMouseDown = e => {\n\n initClientX = e.clientX;\n initClientY = prevClientY = e.clientY;\n testingForVerticalDrag = true;\n\n initValue = this.getValue();\n dragDelta = 0;\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n\n };\n\n const onMouseMove = e => {\n if (testingForVerticalDrag) {\n const dx = e.clientX - initClientX;\n const dy = e.clientY - initClientY;\n if (Math.abs(dy) > DRAG_THRESH) {\n e.preventDefault();\n this.$input.blur();\n testingForVerticalDrag = false;\n this._setDraggingStyle(true, 'vertical');\n } else if (Math.abs(dx) > DRAG_THRESH) {\n onMouseUp();\n }\n }\n\n // This isn't an else so that the first move counts towards dragDelta\n if (!testingForVerticalDrag) {\n const dy = e.clientY - prevClientY;\n dragDelta -= dy * this._step * this._arrowKeyMultiplier(e);\n\n // Clamp dragDelta so we don't have 'dead space' after dragging past bounds.\n // We're okay with the fact that bounds can be undefined here.\n if (initValue + dragDelta > this._max) {\n dragDelta = this._max - initValue;\n } else if (initValue + dragDelta < this._min) {\n dragDelta = this._min - initValue;\n }\n\n this._snapClampSetValue(initValue + dragDelta);\n\n }\n\n prevClientY = e.clientY;\n\n };\n\n const onMouseUp = () => {\n this._setDraggingStyle(false, 'vertical');\n this._callOnFinishChange();\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n };\n\n // Focus state & onFinishChange\n // ---------------------------------------------------------------------\n\n const onFocus = () => {\n this._inputFocused = true;\n };\n\n const onBlur = () => {\n this._inputFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n };\n\n this.$input.addEventListener('input', onInput);\n this.$input.addEventListener('keydown', onKeyDown);\n this.$input.addEventListener('wheel', onWheel, { passive: false });\n this.$input.addEventListener('mousedown', onMouseDown);\n this.$input.addEventListener('focus', onFocus);\n this.$input.addEventListener('blur', onBlur);\n\n }\n\n private _initSlider() {\n this._hasSlider = true;\n\n // Build DOM\n // ---------------------------------------------------------------------\n\n this.$slider = document.createElement('div');\n this.$slider.classList.add('slider');\n\n this.$fill = document.createElement('div');\n this.$fill.classList.add('fill');\n\n this.$slider.appendChild(this.$fill);\n this.$widget.insertBefore(this.$slider, this.$input);\n\n this.domElement.classList.add('hasSlider');\n\n // Map clientX to value\n // ---------------------------------------------------------------------\n\n const map = (v, a, b, c, d) => {\n return (v - a) / (b - a) * (d - c) + c;\n };\n\n const setValueFromX = clientX => {\n const rect = this.$slider.getBoundingClientRect();\n let value = map(clientX, rect.left, rect.right, this._min, this._max);\n this._snapClampSetValue(value);\n };\n\n // Mouse drag\n // ---------------------------------------------------------------------\n\n const mouseDown = e => {\n this._setDraggingStyle(true);\n setValueFromX(e.clientX);\n window.addEventListener('mousemove', mouseMove);\n window.addEventListener('mouseup', mouseUp);\n };\n\n const mouseMove = e => {\n setValueFromX(e.clientX);\n };\n\n const mouseUp = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('mousemove', mouseMove);\n window.removeEventListener('mouseup', mouseUp);\n };\n\n // Touch drag\n // ---------------------------------------------------------------------\n\n let testingForScroll = false, prevClientX, prevClientY;\n\n const beginTouchDrag = e => {\n e.preventDefault();\n this._setDraggingStyle(true);\n setValueFromX(e.touches[0].clientX);\n testingForScroll = false;\n };\n\n const onTouchStart = e => {\n\n if (e.touches.length > 1) return;\n\n // If we're in a scrollable container, we should wait for the first\n // touchmove to see if the user is trying to slide or scroll.\n if (this._hasScrollBar) {\n\n prevClientX = e.touches[0].clientX;\n prevClientY = e.touches[0].clientY;\n testingForScroll = true;\n\n } else {\n\n // Otherwise, we can set the value straight away on touchstart.\n beginTouchDrag(e);\n\n }\n\n window.addEventListener('touchmove', onTouchMove, { passive: false });\n window.addEventListener('touchend', onTouchEnd);\n\n };\n\n const onTouchMove = e => {\n\n if (testingForScroll) {\n\n const dx = e.touches[0].clientX - prevClientX;\n const dy = e.touches[0].clientY - prevClientY;\n\n if (Math.abs(dx) > Math.abs(dy)) {\n\n // We moved horizontally, set the value and stop checking.\n beginTouchDrag(e);\n\n } else {\n\n // This was, in fact, an attempt to scroll. Abort.\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n\n }\n\n } else {\n\n e.preventDefault();\n setValueFromX(e.touches[0].clientX);\n\n }\n\n };\n\n const onTouchEnd = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n };\n\n // Mouse wheel\n // ---------------------------------------------------------------------\n\n // We have to use a debounced function to call onFinishChange because\n // there's no way to tell when the user is \"done\" mouse-wheeling.\n const callOnFinishChange = this._callOnFinishChange.bind(this);\n const WHEEL_DEBOUNCE_TIME = 400;\n let wheelFinishChangeTimeout;\n\n const onWheel = e => {\n\n // ignore vertical wheels if there's a scrollbar\n const isVertical = Math.abs(e.deltaX) < Math.abs(e.deltaY);\n if (isVertical && this._hasScrollBar) return;\n\n e.preventDefault();\n\n // set value\n const delta = this._normalizeMouseWheel(e) * this._step;\n this._snapClampSetValue(this.getValue() + delta);\n\n // force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n\n // debounce onFinishChange\n clearTimeout(wheelFinishChangeTimeout);\n wheelFinishChangeTimeout = setTimeout(callOnFinishChange, WHEEL_DEBOUNCE_TIME);\n\n };\n\n this.$slider.addEventListener('mousedown', mouseDown);\n this.$slider.addEventListener('touchstart', onTouchStart, { passive: false });\n this.$slider.addEventListener('wheel', onWheel, { passive: false });\n\n }\n\n private _setDraggingStyle(active, axis = 'horizontal') {\n if (this.$slider) {\n this.$slider.classList.toggle('active', active);\n }\n document.body.classList.toggle('lil-gui-dragging', active);\n document.body.classList.toggle(`lil-gui-${axis}`, active);\n }\n\n private _getImplicitStep() {\n const value = this.getValue();\n if (this._hasMin && this._hasMax) {\n return (this._max - this._min) / 100;\n }\n else if (hasDecimal(value)) {\n return Math.pow(0.1, getPrecision(value));\n }\n return 0.1;\n }\n\n private _onUpdateMinMax() {\n if (!this._hasSlider && this._hasMin && this._hasMax) {\n // If this is the first time we're hearing about min and max\n // and we haven't explicitly stated what our step is, let's\n // update that too.\n if (!this._stepExplicit) {\n this.step(this._getImplicitStep(), false);\n }\n\n this._initSlider();\n this.updateDisplay();\n }\n }\n\n private _normalizeMouseWheel(e) {\n let { deltaX, deltaY } = e;\n // Safari and Chrome report weird non-integral values for a notched wheel,\n // but still expose actual lines scrolled via wheelDelta. Notched wheels\n // should behave the same way as arrow keys.\n if (Math.floor(e.deltaY) !== e.deltaY && e.wheelDelta) {\n deltaX = 0;\n deltaY = -e.wheelDelta / 120;\n deltaY *= this._stepExplicit ? 1 : 10;\n }\n const wheel = deltaX + -deltaY;\n return wheel;\n\n }\n\n private _arrowKeyMultiplier(e) {\n let mult = this._stepExplicit ? 1 : 10;\n if (e.shiftKey) {\n mult *= 10;\n } else if (e.altKey) {\n mult /= 10;\n }\n return mult;\n\n }\n\n private _snap(value) {\n // This would be the logical way to do things, but floating point errors.\n // return Math.round( value / this._step ) * this._step;\n\n // Using inverse step solves a lot of them, but not all\n // const inverseStep = 1 / this._step;\n // return Math.round( value * inverseStep ) / inverseStep;\n\n // Not happy about this, but haven't seen it break.\n const r = Math.round(value / this._step) * this._step;\n return parseFloat(r.toPrecision(15));\n }\n\n private _clamp(value) {\n // either condition is false if min or max is undefined\n if (value < this._min) value = this._min;\n if (value > this._max) value = this._max;\n return value;\n }\n\n private _snapClampSetValue(value) {\n this.setValue(this._clamp(this._snap(value)));\n }\n\n private get _hasScrollBar() {\n const root = this.parent.root.$children;\n return root.scrollHeight > root.clientHeight;\n }\n\n private get _hasMin() {\n return this._min !== undefined;\n }\n\n private get _hasMax() {\n return this._max !== undefined;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class BooleanController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'boolean', 'label');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'checkbox');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$widget.appendChild(this.$input);\n this.$input.addEventListener('change', () => {\n this.setValue(this.$input.checked);\n this._callOnFinishChange();\n });\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.checked = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class StringController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n\n super(parent, object, property, 'string');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$input.addEventListener('input', () => {\n this.setValue(this.$input.value);\n });\n this.$input.addEventListener('keydown', e => {\n if (e.code === 'Enter') {\n this.$input.blur();\n }\n });\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n this.$widget.appendChild(this.$input);\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.value = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class FunctionController extends Controller {\n $button: HTMLButtonElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'function');\n\n // Buttons are the only case where widget contains name\n this.$button = document.createElement('button');\n this.$button.appendChild(this.$name);\n this.$widget.appendChild(this.$button);\n\n this.$button.addEventListener('click', e => {\n e.preventDefault();\n this.getValue().call(this.object);\n this._callOnChange();\n });\n\n // enables :active pseudo class on mobile\n this.$button.addEventListener('touchstart', () => { }, { passive: true });\n this.$disable = this.$button;\n }\n\n}","import { GUI } from \"../GUI\";\nimport { getColorFormat, normalizeColorString } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class ColorController extends Controller {\n $input: HTMLInputElement;\n $text: HTMLInputElement;\n $display: HTMLDivElement;\n $alpha: HTMLDivElement;\n\n private _textFocused: boolean = false;\n private _initialValueHexString: string = \"\";\n private _rgbScale: number = 1;\n private _format: any;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n rgbScale: number\n ) {\n super(parent, object, property, 'color');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'color');\n this.$input.setAttribute('tabindex', \"-1\");\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$text = document.createElement('input');\n this.$text.setAttribute('type', 'text');\n this.$text.setAttribute('spellcheck', 'false');\n this.$text.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n this.$display.appendChild(this.$input);\n\n this.$widget.appendChild(this.$display);\n this.$widget.appendChild(this.$text);\n\n this._format = getColorFormat(this.initialValue);\n this._rgbScale = rgbScale;\n\n this._initialValueHexString = this.save();\n this._textFocused = false;\n\n this.$input.addEventListener('input', () => {\n this._setValueFromHexString(this.$input.value);\n });\n\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n\n this.$text.addEventListener('input', () => {\n const tryParse = normalizeColorString(this.$text.value);\n if (tryParse) {\n this._setValueFromHexString(tryParse);\n }\n });\n\n this.$text.addEventListener('focus', () => {\n this._textFocused = true;\n this.$text.select();\n });\n\n this.$text.addEventListener('blur', () => {\n this._textFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n });\n\n this.$disable = this.$text;\n this.listen();\n }\n\n reset() {\n this._setValueFromHexString(this._initialValueHexString);\n return this;\n }\n\n private _setValueFromHexString(value: string) {\n if (this._format.isPrimitive) {\n const newValue = this._format.fromHexString(value);\n this.setValue(newValue);\n } else {\n this._format.fromHexString(value, this.getValue(), this._rgbScale);\n this.setValue(this.getValue());\n }\n }\n\n save() {\n return this._format.toHexString(this.getValue(), this._rgbScale);\n }\n\n load(value: string) {\n this._setValueFromHexString(value);\n this._callOnFinishChange();\n return this;\n }\n\n updateDisplay() {\n this.$input.value = this._format.toHexString(this.getValue(), this._rgbScale);\n if (!this._textFocused) {\n this.$text.value = this.$input.value.substring(1);\n }\n this.$display.style.backgroundColor = this.$input.value;\n return this;\n }\n\n}\n","export class UIElement<T extends HTMLElement = HTMLElement> {\n\tpublic dom: T & { disabled?: boolean };\n\n\tconstructor(dom: T) {\n\t\tthis.dom = dom;\n\t}\n\n\tpublic add(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.appendChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic remove(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.removeChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic clear() {\n\t\twhile (this.dom.children.length) {\n\t\t\tthis.dom.removeChild(this.dom.lastChild);\n\t\t}\n\t}\n\n\tpublic setId(id: string) {\n\t\tthis.dom.id = id;\n\t\treturn this;\n\n\t}\n\n\tpublic getId() {\n\t\treturn this.dom.id;\n\n\t}\n\n\tpublic setClass(name: string) {\n\t\tthis.dom.className = name;\n\t\treturn this;\n\t}\n\n\tpublic addClass(name) {\n\t\tthis.dom.classList.add(name);\n\t\treturn this;\n\t}\n\n\tpublic removeClass(name) {\n\t\tthis.dom.classList.remove(name);\n\t\treturn this;\n\t}\n\n\tpublic setStyle(style: string, array: any[]) {\n\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\tthis.dom.style[style] = array[i];\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setDisabled(value: boolean) {\n\t\tthis.dom.disabled = value;\n\t\treturn this;\n\n\t}\n\n\tpublic setTextContent(value: string) {\n\t\tthis.dom.textContent = value;\n\t\treturn this;\n\n\t}\n\n\tpublic getIndexOfChild(element: UIElement) {\n\t\treturn Array.prototype.indexOf.call(this.dom.children, element.dom);\n\t}\n\n}\n","import { getPrecision, hasDecimal } from '../utils';\nimport { UIElement } from './UIElement';\n\nexport class UINumber extends UIElement<HTMLInputElement> {\n\tvalue: number = 0;\n\tmin: number = -Infinity;\n\tmax: number = Infinity;\n\tstep: number = 1;\n\tnudge: number = 1;\n\tunit: string = \"\";\n\n\tprivate _onChangeCallback: Function;\n\n\tconstructor(\n\t\tvalue: number,\n\t\tmin: number,\n\t\tmax: number,\n\t\tstep: number\n\t) {\n\t\tsuper(document.createElement('input'));\n\n\t\tthis.dom.style.cursor = 'ns-resize';\n\t\tthis.dom.value = '0.00';\n\n\t\tthis.min = min ?? this.min;\n\t\tthis.max = max ?? this.max;\n\t\tthis.step = step ?? this._getImplicitStep(value);\n\t\tthis.setValue(value);\n\n\t\tconst scope = this;\n\n\t\tconst changeEvent = document.createEvent('HTMLEvents');\n\t\tchangeEvent.initEvent('change', true, true);\n\n\t\tlet distance = 0;\n\t\tlet onMouseDownValue = 0;\n\n\t\tconst pointer = { x: 0, y: 0 };\n\t\tconst prevPointer = { x: 0, y: 0 };\n\n\t\tfunction onMouseDown(event: MouseEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tdistance = 0;\n\t\t\tonMouseDownValue = scope.value;\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\n\t\t\tdocument.addEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.addEventListener('mouseup', onMouseUp, false);\n\t\t}\n\n\t\tfunction onMouseMove(event: MouseEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.clientX;\n\t\t\tpointer.y = event.clientY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance * 10 / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\n\t\t\t}\n\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\t\t}\n\n\t\tfunction onMouseUp() {\n\t\t\tdocument.removeEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.removeEventListener('mouseup', onMouseUp, false);\n\n\t\t\tif (Math.abs(distance) < 2) {\n\t\t\t\tscope.dom.focus();\n\t\t\t\tscope.dom.select();\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchStart(event: TouchEvent) {\n\t\t\tif (event.touches.length === 1) {\n\t\t\t\tdistance = 0;\n\t\t\t\tonMouseDownValue = scope.value;\n\n\t\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\t\tprevPointer.y = event.touches[0].pageY;\n\n\t\t\t\tdocument.addEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.addEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchMove(event: TouchEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.touches[0].pageX;\n\t\t\tpointer.y = event.touches[0].pageY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t}\n\n\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\tprevPointer.y = event.touches[0].pageY;\n\t\t}\n\n\t\tfunction onTouchEnd(event: TouchEvent) {\n\t\t\tif (event.touches.length === 0) {\n\t\t\t\tdocument.removeEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.removeEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onChange() {\n\t\t\tscope.setValue(parseFloat(scope.dom.value));\n\t\t}\n\n\t\tfunction onFocus() {\n\t\t\tscope.dom.style.backgroundColor = '';\n\t\t\tscope.dom.style.cursor = '';\n\t\t}\n\n\t\tfunction onBlur() {\n\t\t\t// scope.dom.style.backgroundColor = 'transparent';\n\t\t\tscope.dom.style.cursor = 'ns-resize';\n\t\t}\n\n\t\tfunction onKeyDown(event: KeyboardEvent) {\n\t\t\tevent.stopPropagation();\n\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tscope.dom.blur();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() + scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 40: // down\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() - scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tonBlur();\n\n\t\tthis.dom.addEventListener('keydown', onKeyDown, false);\n\t\tthis.dom.addEventListener('mousedown', onMouseDown, false);\n\t\tthis.dom.addEventListener('touchstart', onTouchStart, { passive: true });\n\t\tthis.dom.addEventListener('change', onChange, false);\n\t\tthis.dom.addEventListener('focus', onFocus, false);\n\t\tthis.dom.addEventListener('blur', onBlur, false);\n\t}\n\n\tequals(v: number) {\n\t\treturn Math.abs(this.value - v) <= this.step;\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsetValue(value: any) {\n\t\tif (value !== undefined) {\n\t\t\tif (value < this.min) value = this.min;\n\t\t\tif (value > this.max) value = this.max;\n\t\t\tthis.value = value;\n\t\t\tthis.updateDisplay();\n\t\t\tthis._onChangeCallback && this._onChangeCallback(value);\n\t\t}\n\t\treturn this;\n\t}\n\n\tupdateDisplay() {\n\t\tlet value = this._snap(this.getValue());\n\t\tthis.dom.value = \"\" + value;\n\t\tif (this.unit !== '') this.dom.value += ' ' + this.unit;\n\t}\n\n\tprivate _getImplicitStep(value: number) {\n\t\tif (this.max !== Infinity && this.min !== -Infinity) {\n\t\t\treturn (this.max - this.min) / 100;\n\t\t}\n\t\telse if (hasDecimal(value)) {\n\t\t\treturn 1 / Math.pow(10, getPrecision(value));\n\t\t}\n\t\treturn 0.1;\n\t}\n\n\tprivate _snap(value: number) {\n\t\tconst r = Math.round(value / this.step) * this.step;\n\t\treturn parseFloat(r.toPrecision(15));\n\t}\n\n\tonChange(callback: Function) {\n\t\tthis._onChangeCallback = callback;\n\t\treturn this;\n\t}\n\n\tsetUnit(unit: string) {\n\t\tthis.unit = unit;\n\t\treturn this;\n\t}\n\n}\n","import { GUI } from \"../GUI\";\nimport { UINumber } from \"../common/UINumber\";\nimport { Controller } from \"./Controller\";\n\nexport class VectorController extends Controller {\n xElement: UINumber;\n yElement: UINumber;\n zElement: UINumber;\n wElement: UINumber;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n super(parent, object, property, 'vector');\n\n const value = this.getValue();\n this.initialValue = value.clone && value.clone() || Object.assign({}, value);\n if (this.initialValue.x !== undefined) this.xElement = this.createElement(true, this.initialValue.x, min, max, step, v => { value.x = v; this._callOnChange() });\n if (this.initialValue.y !== undefined) this.yElement = this.createElement(true, this.initialValue.y, min, max, step, v => { value.y = v; this._callOnChange() });\n if (this.initialValue.z !== undefined) this.zElement = this.createElement(true, this.initialValue.z, min, max, step, v => { value.z = v; this._callOnChange() });\n if (this.initialValue.w !== undefined) this.wElement = this.createElement(false, this.initialValue.w, min, max, step, v => { value.w = v; this._callOnChange() });\n }\n\n createElement(\n fill: boolean,\n value: number,\n min: number,\n max: number,\n step: number,\n onChange: Function\n ) {\n let uiNumber = new UINumber(value, min, max, step);\n uiNumber.dom.setAttribute('type', 'number');\n uiNumber.dom.setAttribute('aria-labelledby', this.$name.id);\n uiNumber.onChange(onChange);\n this.$widget.appendChild(uiNumber.dom);\n if (fill) {\n let $fill = document.createElement('div');\n $fill.classList.add('fill');\n this.$widget.appendChild($fill);\n }\n return uiNumber;\n }\n\n setValue(value: { x?: number, y?: number, z?: number, w?: number }) {\n let target = this.getValue();\n if (value.x !== undefined) target.x = value.x;\n if (value.y !== undefined) target.y = value.y;\n if (value.z !== undefined) target.z = value.z;\n if (value.w !== undefined) target.w = value.w;\n this._callOnChange();\n return this;\n }\n\n checkDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n let value = this.getValue();\n if (value.x !== undefined && this.xElement && !this.xElement.equals(value.x)) {\n this.xElement.value = value.x;\n this.xElement.updateDisplay();\n }\n if (value.y !== undefined && this.yElement && !this.yElement.equals(value.y)) {\n this.yElement.value = value.y;\n this.yElement.updateDisplay();\n }\n if (value.z !== undefined && this.zElement && !this.zElement.equals(value.z)) {\n this.zElement.value = value.z;\n this.zElement.updateDisplay();\n }\n if (value.w !== undefined && this.wElement && !this.wElement.equals(value.w)) {\n this.wElement.value = value.w;\n this.wElement.updateDisplay();\n }\n return this;\n }\n}\n","import { IAnimationCurve } from \"./IAnimationCurve\";\nimport { ICurvePoint } from \"./ICurvePoint\";\n\nfunction clamp(v: number, minv: number, maxv: number) {\n return Math.max(Math.min(v, maxv), minv);\n}\n\nfunction hitTest(x: number, y: number, cx: number, cy: number, hw: number, hh: number) {\n if (x < cx - hw || x > cx + hw || y < cy - hh || y > cy + hh) {\n return false;\n }\n return true;\n}\n\nconst theme = {\n BACKGROUND: \"#545454\",\n GRID: \"#646464\",\n LINE: \"#000000\",\n COVER: \"#19191980\",\n POINT: \"#878787\",\n SELECTED: \"#ffffff\",\n}\n\nclass CurvePanel {\n private _canvas: HTMLCanvasElement;\n private _context: CanvasRenderingContext2D;\n private _xRes: number = 1;\n private _yRes: number = 1;\n private _cx: number = 0;\n private _cy: number = 0;\n private _ra: number = 2;\n private _fixed: boolean = false;\n private _autoResize: boolean = true;\n\n private _mouse: { x: number, y: number } = { x: 0, y: 0 };\n private _offsetXRef: number = 0;\n private _offsetYRef: number = 0;\n private _cxRef: number = 0;\n private _cyRef: number = 0;\n private _pxRef: number = 0;\n private _pyRef: number = 0;\n private _button: number = -1;\n\n private _curve: IAnimationCurve = null;\n private _selectedPoint: ICurvePoint = null;\n private _tryAddingPoint: boolean = false;\n private _trySelectingPoint: boolean = false;\n private _onCurveChanged?: (curve: IAnimationCurve) => void;\n private _onPointChanged?: (point: ICurvePoint) => void;\n private _onPointRemoved?: (point: ICurvePoint) => void;\n private _onPointAdded?: (point: ICurvePoint) => void;\n\n get dom() {\n return this._canvas;\n }\n\n get curve() {\n return this._curve;\n }\n\n constructor() {\n this._canvas = document.createElement(\"canvas\");\n this._context = this._canvas.getContext(\"2d\");\n\n const canvas = this._canvas;\n canvas.addEventListener(\"mousedown\", e => this._onMouseDown(e));\n canvas.addEventListener(\"mouseup\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mouseleave\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mousemove\", e => this._onMouseMove(e));\n canvas.addEventListener(\"wheel\", e => this._onWheel(e as any));\n canvas.addEventListener(\"dblclick\", e => this._onDblClick(e));\n }\n\n resize(width?: number, height?: number) {\n const canvas = this._canvas;\n const DPR = window.devicePixelRatio || 1;\n const xRes = (width ?? canvas.offsetWidth) * DPR;\n const yRes = (height ?? canvas.offsetHeight) * DPR;\n if (Math.hypot(xRes - this._xRes, yRes - this._yRes) > 0.001) {\n this._xRes = canvas.width = xRes;\n this._yRes = canvas.height = yRes;\n }\n }\n\n onCurveChanged(callback: (curve: IAnimationCurve) => void) {\n this._onCurveChanged = callback;\n return this;\n }\n\n onPointChanged(callback: (point: ICurvePoint) => void) {\n this._onPointChanged = callback;\n return this;\n }\n\n onPointRemoved(callback: (point: ICurvePoint) => void) {\n this._onPointRemoved = callback;\n return this;\n }\n\n onPointAdded(callback: (point: ICurvePoint) => void) {\n this._onPointAdded = callback;\n return this;\n }\n\n private _onDblClick(e: MouseEvent) {\n e.preventDefault();\n if (e.button === 0) {\n this._tryAddingPoint = true;\n }\n }\n\n private _onMouseDown(e: MouseEvent) {\n e.preventDefault();\n if (e.button == 0) {\n this._cxRef = this._cx;\n this._cyRef = this._cy;\n this._offsetXRef = e.offsetX;\n this._offsetYRef = e.offsetY;\n this._trySelectingPoint = true;\n }\n this._button = e.button;\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n this._selectedPoint = null;\n }\n\n _onMouseUp(e: MouseEvent) {\n e.preventDefault();\n this._button = -1;\n }\n\n private _onMouseMove(e: MouseEvent) {\n e.preventDefault();\n const cxRes = this._canvas.offsetWidth;\n const cyRes = this._canvas.offsetHeight;\n if (this._button == 0) {\n if (this._selectedPoint) {\n const rx = this._ra;\n const ry = this._fixed ? this._ra * cyRes / cxRes : this._ra;\n const x = this._pxRef + (e.offsetX - this._offsetXRef) / cxRes * rx / 2;\n const y = this._pyRef - (e.offsetY - this._offsetYRef) / cyRes * ry / 2;\n this.setPointPos(x, y);\n }\n else {\n this._cx = this._cxRef - (e.offsetX - this._offsetXRef) * 2 * this._ra / cxRes;\n this._cy = this._cyRef + (e.offsetY - this._offsetYRef) * 2 * this._ra / cyRes;\n }\n }\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n }\n\n private _onWheel(e: WheelEvent & { wheelDelta: number }) {\n e.preventDefault();\n const sfactor = 1.1;\n this._ra *= (e.deltaY < 0 || e.wheelDelta > 0) ? 1.0 / sfactor : sfactor;\n this._ra = clamp(this._ra, 1, 2);\n }\n\n render() {\n if (this._autoResize) {\n this.resize();\n }\n\n const rx = this._ra;\n const ry = this._fixed ? this._ra * this._yRes / this._xRes : this._ra;\n\n const a = 2 - this._ra;\n this._cx = clamp(this._cx, -a, a);\n this._cy = clamp(this._cy, -a, a);\n\n const ctx = this._context;\n ctx.setTransform(1, 0.0, 0.0, 1, 0.5, 0.5);\n ctx.fillStyle = theme.BACKGROUND;\n ctx.fillRect(0, 0, this._xRes, this._yRes);\n\n this._drawGrid(ctx, theme.GRID, rx, ry);\n // this._drawAxis(ctx, theme.GRID, rx, ry);\n this._drawCurve(ctx, theme.LINE, rx, ry);\n }\n\n private _drawGrid(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const iax = Math.floor(this._cx - rx);\n const ibx = Math.floor(this._cx + rx);\n const iay = Math.floor(this._cy - ry);\n const iby = Math.floor(this._cy + ry);\n\n ctx.lineWidth = 2.0;\n ctx.strokeStyle = color;\n ctx.beginPath();\n for (let i = iax; i <= ibx; i++) {\n let ix = this._xRes * (0.5 + (i - this._cx) / (2 * rx));\n ctx.moveTo(ix, this._yRes);\n ctx.lineTo(ix, 0);\n }\n for (let i = iay; i <= iby; i++) {\n let iy = this._yRes * (0.5 - (i - this._cy) / (2 * ry));\n ctx.moveTo(this._xRes, iy);\n ctx.lineTo(0, iy);\n }\n ctx.stroke();\n }\n\n private _drawAxis(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const xPos = this._xRes * (0.5 - this._cx / (2.0 * rx));\n const yPos = this._yRes * (0.5 + this._cy / (2.0 * ry));\n ctx.strokeStyle = color;\n ctx.lineWidth = 4;\n ctx.beginPath();\n ctx.moveTo(xPos, 0); ctx.lineTo(xPos, this._yRes);\n ctx.moveTo(0, yPos); ctx.lineTo(this._xRes, yPos);\n ctx.stroke();\n }\n\n private _drawCurve(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n if (!this._curve) return;\n\n const ax = 2 / rx; //缩放\n const ay = 2 / ry;\n const bx = (1 - ax) / 2; //偏移,保持居中\n const by = (1 - ay) / 2;\n const cx = this._cx / 4; //缩小4倍至单位1\n const cy = this._cy / 4;\n\n const SAMPLES = Math.min(100, this._xRes);\n const STEP = 1 / (SAMPLES - 1);\n const point = this._curve.createCurvePoint();\n\n const DPR = window.devicePixelRatio || 1;\n const mx = this._mouse.x * DPR;\n const my = this._mouse.y * DPR;\n\n let hitCurve = null;\n let hitPoint = null;\n let isFirstPoint = true;\n\n //配置参数\n ctx.lineWidth = 2;\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n\n //绘制曲线\n ctx.beginPath();\n for (let i = 0; i < SAMPLES; i++) {\n let p = this._curve.getPoint(i * STEP, point);\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitCurve === null && hitTest(mx, my, x, y, 15, 15)) {\n hitCurve = p;\n }\n\n if (isFirstPoint) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n isFirstPoint = false;\n }\n ctx.stroke();\n ctx.lineTo(this._xRes, this._yRes);\n ctx.closePath();\n ctx.fillStyle = theme.COVER;\n ctx.fill();\n\n //绘制控制点\n const points = this._curve.points;\n for (let i = 1; i < points.length - 1; i++) {\n let p = points[i];\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitPoint === null && hitTest(mx, my, x, y, 20, 20)) {\n hitPoint = p;\n }\n\n ctx.fillStyle = p === hitPoint || p === this._selectedPoint ? theme.SELECTED : theme.POINT;\n ctx.fillRect(x - 2.5, y - 2.5, 5, 5);\n }\n\n //状态检查\n if (this._tryAddingPoint && hitPoint) {\n this._tryAddingPoint = false;\n points.splice(points.indexOf(hitPoint), 1);\n this._onPointRemoved && this._onPointRemoved(hitPoint);\n }\n if (this._tryAddingPoint && hitCurve) {\n this._tryAddingPoint = false;\n let px = (mx / this._xRes - bx) / ax + cx;\n let py = cy - (my / this._yRes + by - 1) / ay;\n let p = this._curve.createCurvePoint(px, py);\n points.push(p);\n points.sort((a, b) => a.x - b.x);\n this._onPointAdded && this._onPointAdded(p);\n }\n if (this._trySelectingPoint && hitPoint) {\n this._trySelectingPoint = false;\n this.selectPoint(hitPoint);\n }\n this._tryAddingPoint = false;\n this._trySelectingPoint = false;\n }\n\n setCurve(curve: IAnimationCurve) {\n this._curve = curve;\n this._selectedPoint = null;\n this._onCurveChanged && this._onCurveChanged(curve);\n return this;\n }\n\n setPointMode(mode: number) {\n if (this._selectedPoint) {\n this._selectedPoint.mode = mode;\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n setPointPos(x: number, y: number) {\n if (this._selectedPoint) {\n this._selectedPoint.set(clamp(x, 0, 1), clamp(y, 0, 1));\n this._curve.points.sort((a, b) => a.x - b.x);\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n selectPoint(point?: ICurvePoint) {\n if (point) {\n this._selectedPoint = point;\n this._pxRef = point.x;\n this._pyRef = point.y;\n this._onPointChanged && this._onPointChanged(point);\n }\n else {\n this._selectedPoint = null;\n }\n return this;\n }\n}\n\nfunction copyToClipboard(text: string) {\n const tempInput = document.createElement('textarea');\n tempInput.value = text;\n\n document.body.appendChild(tempInput);\n\n tempInput.select();\n tempInput.setSelectionRange(0, 99999); // 兼容移动设备\n\n document.execCommand('copy');\n document.body.removeChild(tempInput);\n}\n\nfunction toFixedFloat(v: number, fractionDigits?: number) {\n return parseFloat(v.toFixed(fractionDigits));\n}\n\nexport class CurveEditor {\n private _dom: HTMLElement;\n private _tabs: HTMLDivElement[] = [];\n private _sharpTab: HTMLDivElement;\n private _smoothTab: HTMLDivElement;\n private _xPosInput: HTMLInputElement;\n private _yPosInput: HTMLInputElement;\n private _curvePanel: CurvePanel;\n private _curvePointPanel: HTMLDivElement;\n private _layoutPoint: ICurvePoint;\n private _curves: IAnimationCurve[];\n private _target: IAnimationCurve | IAnimationCurve[];\n private _onChange: Function;\n\n get dom() {\n return this._dom;\n }\n\n constructor(target: IAnimationCurve | IAnimationCurve[]) {\n this._dom = document.createElement(\"div\");\n this._dom.classList.add(\"curve-editor\");\n document.body.appendChild(this._dom);\n\n let tabGroup = document.createElement(\"div\");\n tabGroup.classList.add(\"curve-top\");\n tabGroup.ondblclick = (e) => {\n e.preventDefault();\n let text = this._curves.map(v => v.points.length + \",\" + v.points.map(p => `${toFixedFloat(p.x, 3)},${toFixedFloat(p.y, 3)},${p.mode}`).join(\",\")).join(\",\");\n copyToClipboard(text);\n alert(\"Copyed curve points\");\n }\n this._dom.appendChild(tabGroup);\n\n let curves = Array.isArray(target) ? target : [target];\n if (curves.length > 1) {\n for (let i = 0; i < curves.length; i++) {\n let c = curves[i];\n let tab = document.createElement(\"div\");\n tab.classList.add(\"button-medium\");\n tab.textContent = c.name || i.toString();\n tab.onclick = () => this._onToggleTab(i);\n tabGroup.appendChild(tab);\n this._tabs.push(tab);\n }\n }\n this._target = target;\n this._curves = curves;\n this._layoutPoint = curves[0].createCurvePoint(0, 0, -1);\n this._curvePanel = new CurvePanel();\n this._curvePanel.dom.classList.add(\"curve-panel\");\n this._curvePanel.onCurveChanged(c => this._onCurveChanged(c));\n this._curvePanel.onPointChanged(p => this._onPointChanged(p));\n this._curvePanel.onPointAdded(p => this._onPointAdded(p));\n this._curvePanel.onPointRemoved(p => this._onPointRemoved(p));\n this._dom.appendChild(this._curvePanel.dom);\n\n this._curvePointPanel = document.createElement(\"div\");\n this._curvePointPanel.classList.add(\"curve-point-panel\");\n this._curvePointPanel.style.display = \"none\";\n this._dom.appendChild(this._curvePointPanel);\n\n this._smoothTab = document.createElement(\"div\");\n this._smoothTab.classList.add(\"button-medium\");\n this._smoothTab.innerHTML = /*html*/`\n <svg viewBox=\"351.367 172.836 32 32\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:bx=\"https://boxy-svg.com\">\n <path style=\"fill: none; stroke-width: 2px; stroke: rgb(240, 240, 240);\" d=\"M 356 200 C 356 200 355.7892846963982 195.12801796288684 356 193 C 356.17984169835074 191.18377517899805 356.2627725586097 189.58207992830177 357 188 C 357.82614089255884 186.22711303095053 359.32609311863524 184.16719383631644 361 183 C 362.6636054267734 181.83998923607413 364.99999999999994 180.99999999999997 367 181 C 368.99999999999994 180.99999999999997 371.3363945732266 181.83998923607413 373 183 C 374.6739068813647 184.16719383631644 376.1738591074412 186.22711303095053 377 188 C 377.73722744139036 189.58207992830177 377.8201583016493 191.18377517899808 378 193 C 378.2107153036018 195.12801796288684 378 200 378 200\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\" bx:d=\"M 356 200 R 356 193 R 357 188 R 361 183 R 367 181 R 373 183 R 377 188 R 378 193 R 378 200 1@f911f19e\"/>\n <rect x=\"368\" y=\"176.021\" width=\"6\" height=\"5.979\" style=\"fill: rgb(255, 255, 255);\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\"/>\n </svg>\n `;\n this._curvePointPanel.appendChild(this._smoothTab);\n\n this._sharpTab = document.createElement(\"div\");\n this._sharpTab.classList.add(\"button-medium\");\n this._sharpTab.innerHTML = /*html*/`\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <polyline style=\"fill: none; stroke: rgb(240, 240, 240); stroke-width: 2px;\" points=\"6 26 17 7 28 26\"/>\n <rect x=\"14\" y=\"4\" width=\"6\" height=\"6\" style=\"fill: rgb(255, 255, 255);\"/>\n </svg>\n `\n this._curvePointPanel.appendChild(this._sharpTab);\n\n this._smoothTab.onclick = () => this._curvePanel.setPointMode(0);\n this._sharpTab.onclick = () => this._curvePanel.setPointMode(1);\n\n this._xPosInput = document.createElement(\"input\");\n this._xPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._xPosInput);\n\n this._yPosInput = document.createElement(\"input\");\n this._yPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._yPosInput);\n\n this._onToggleTab(0);\n }\n\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n private _onToggleTab(tabInex: number) {\n for (let i = 0; i < this._tabs.length; i++) {\n if (i === tabInex) this._tabs[i].classList.add(\"selected\");\n else this._tabs[i].classList.remove(\"selected\");\n }\n this._curvePanel.setCurve(this._curves[tabInex]);\n }\n\n private _onTogglePointTab(tab: number) {\n if (tab === 0) {\n this._smoothTab.classList.add(\"selected\");\n this._sharpTab.classList.remove(\"selected\");\n }\n else {\n this._smoothTab.classList.remove(\"selected\");\n this._sharpTab.classList.add(\"selected\");\n }\n }\n\n private _onCurveChanged(curve: IAnimationCurve) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPosChanged() {\n this._curvePanel.setPointPos(parseFloat(this._xPosInput.value), parseFloat(this._yPosInput.value));\n }\n\n private _onPointAdded(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(point);\n }\n\n private _onPointRemoved(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPointChanged(point: ICurvePoint) {\n let isChanged = false;\n let layoutPoint = this._layoutPoint;\n if (layoutPoint.mode !== point.mode) {\n layoutPoint.mode = point.mode;\n this._onTogglePointTab(point.mode);\n isChanged = true;\n }\n if (Math.hypot(layoutPoint.x - point.x, layoutPoint.y - point.y) > 0.001) {\n layoutPoint.x = point.x;\n layoutPoint.y = point.y;\n this._xPosInput.value = parseFloat(point.x.toFixed(3)).toString();\n this._yPosInput.value = parseFloat(point.y.toFixed(3)).toString();\n isChanged = true;\n }\n if (isChanged) {\n this._curvePanel.curve.needsUpdate = true;\n this._onChange && this._onChange(this._target);\n }\n }\n\n render() {\n this._curvePanel.render();\n }\n}","import { GUI } from \"../GUI\";\nimport { CurveEditor } from \"../curve/CurveEditor\";\nimport { Controller } from \"./Controller\";\n\nexport class CurveController extends Controller {\n private _curveEditor: CurveEditor;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"label\");\n this._curveEditor = new CurveEditor(this.getValue());\n this._curveEditor.onChange(v => this.setValue(v));\n this.$widget.appendChild(this._curveEditor.dom);\n }\n\n needsUpdateDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n this._curveEditor.render();\n return this;\n }\n}","import { Texture } from \"three\";\nimport { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class TextureController extends Controller {\n private _autoRefresh: boolean = false;\n\n $img: HTMLImageElement;\n $canvas: HTMLCanvasElement;\n $label: HTMLDivElement;\n\n getImage?: ((texture: Texture, width: number, height: number) => HTMLCanvasElement) | null;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n ) {\n super(parent, object, property, \"texture\");\n\n const group = this.$widget.appendChild(document.createElement(\"div\"));\n group.classList.add(\"group\");\n\n this.$canvas = group.appendChild(document.createElement(\"canvas\"));\n\n const label = this.$label = group.appendChild(document.createElement(\"div\"));\n label.classList.add(\"label\");\n\n let texture = this.getValue();\n if (texture && texture.image && texture.image.depth) {\n\n const block = group.appendChild(document.createElement(\"div\"));\n block.classList.add(\"block\");\n block.onclick = () => {\n this._autoRefresh = !this._autoRefresh;\n if (this._autoRefresh) block.classList.add(\"select\");\n else block.classList.remove(\"select\");\n }\n\n }\n }\n\n checkDisplay(): boolean {\n return this._autoRefresh || super.checkDisplay();\n }\n\n updateDisplay() {\n const canvas = this.$canvas;\n const context = canvas.getContext(\"2d\");\n\n let texture = this.getValue();\n if (texture) {\n let image = texture.image;\n if (image && image.width > 0) {\n\n this.$label.textContent = `${image.width}x${image.height}`;\n canvas.title = texture.sourceFile || \"\";\n canvas.height = canvas.width / image.width * image.height;\n\n if (this.getImage) {\n const w = 256, h = 256 / image.width * image.height;\n context.drawImage(this.getImage(texture, w, h), 0, 0, w * 1.5, h * 1.5, 0, 0, canvas.width, canvas.height); //why 1.5 ?\n }\n }\n else {\n canvas.title = texture.sourceFile + ' (error)';\n }\n }\n else {\n canvas.title = 'empty';\n }\n\n return this;\n }\n}","import \"./css/index.scss\";\nimport { Controller } from \"./controllers/Controller\";\nimport { OptionController } from \"./controllers/OptionController\";\nimport { NumberController } from \"./controllers/NumberController\";\nimport { BooleanController } from \"./controllers/BooleanController\";\nimport { StringController } from \"./controllers/StringController\";\nimport { FunctionController } from \"./controllers/FunctionController\";\nimport { ColorController } from \"./controllers/ColorController\";\nimport { VectorController } from \"./controllers/VectorController\";\nimport { CurveController } from \"./controllers/CurveController\";\nimport { TextureController } from \"./controllers/TextureController\";\n\nexport class GUI {\n id: string;\n\n parent: GUI;\n root: GUI;\n children: Array<GUI | Controller> = [];\n controllers: Array<Controller> = [];\n folders: Array<GUI> = [];\n\n domElement: HTMLElement;\n $title: HTMLElement;\n $children: HTMLElement;\n /**\n * Current title of the GUI. Use `gui.title( 'Title' )` to modify this value.\n */\n _title: string = \"\";\n _closed: boolean = false;\n _hidden: boolean = false;\n _closeFolders: boolean = false;\n\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `gui.onFinishChange( callback )` method instead.\n */\n private _onFinishChange: Function;\n private _onOpenClose: Function;\n private _onChange: Function;\n\n constructor({\n parent,\n container,\n width,\n autoPlace = parent === undefined,\n title = 'Controls',\n id = title,\n closeFolders = false,\n touchStyles = true,\n }: {\n parent?: GUI;\n container?: HTMLElement;\n autoPlace?: boolean;\n width?: number;\n title?: string;\n id?: string;\n closeFolders?: boolean;\n touchStyles?: boolean;\n } = {}) {\n this.id = id;\n this.parent = parent;\n this.root = parent ? parent.root : this;\n this.domElement = document.createElement(\"div\");\n this.domElement.classList.add(\"lil-gui\");\n\n this.$title = document.createElement('div');\n this.$title.classList.add('title');\n this.$title.setAttribute('role', 'button');\n this.$title.setAttribute('aria-expanded', \"true\");\n this.$title.setAttribute('tabindex', \"0\");\n this.$title.addEventListener('click', () => {\n this.openAnimated(this._closed);\n });\n this.$title.addEventListener('keydown', e => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n this.$title.click();\n }\n });\n\n // enables :active pseudo class on mobile\n this.$title.addEventListener('touchstart', () => { }, { passive: true });\n\n /**\n * The DOM element that contains children.\n * @type {HTMLElement}\n */\n this.$children = document.createElement('div');\n this.$children.classList.add('children');\n\n this.domElement.appendChild(this.$title);\n this.domElement.appendChild(this.$children);\n\n this.title(title);\n\n if (this.parent) {\n this.parent.children.push(this);\n this.parent.folders.push(this);\n this.parent.$children.appendChild(this.domElement);\n\n // Stop the constructor early, everything onward only applies to root GUI's\n return;\n\n }\n\n this.domElement.classList.add('root');\n\n if (touchStyles) {\n this.domElement.classList.add('allow-touch-styles');\n }\n if (container) {\n container.appendChild(this.domElement);\n } else if (autoPlace) {\n this.domElement.classList.add('autoPlace');\n document.body.appendChild(this.domElement);\n }\n if (width) {\n this.domElement.style.setProperty('--width', width + 'px');\n }\n\n this._closeFolders = closeFolders;\n }\n\n\n /**\n * Adds a controller to the GUI, inferring controller type using the `typeof` operator.\n * @example\n * gui.add( object, 'property' );\n * gui.add( object, 'number', 0, 100, 1 );\n * gui.add( object, 'options', [ 1, 2, 3 ] );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number|object|Array} [$1] Minimum value for number controllers, or the set of\n * selectable values for a dropdown.\n * @param {number} [max] Maximum value for number controllers.\n * @param {number} [step] Step value for number controllers.\n * @returns {Controller}\n */\n add(\n object: Object,\n property: string,\n $1?: number | object | Array<any>,\n max?: number,\n step?: number\n ) {\n if (Object($1) === $1) {\n return new OptionController(this, object, property, $1);\n }\n\n const initialValue = object[property];\n switch (typeof initialValue) {\n case 'number':\n return new NumberController(this, object, property, $1 as number, max, step);\n case 'boolean':\n return new BooleanController(this, object, property);\n case 'string':\n return new StringController(this, object, property);\n case 'function':\n return new FunctionController(this, object, property);\n\n }\n\n // eslint-disable-next-line no-console\n console.error(`gui.add failed\n property:`, property, `\n object:`, object, `\n value:`, initialValue\n );\n\n }\n\n /**\n * Adds a color controller to the GUI.\n * @example\n * params = {\n * \tcssColor: '#ff00ff',\n * \trgbColor: { r: 0, g: 0.2, b: 0.4 },\n * \tcustomRange: [ 0, 127, 255 ],\n * };\n *\n * gui.addColor( params, 'cssColor' );\n * gui.addColor( params, 'rgbColor' );\n * gui.addColor( params, 'customRange', 255 );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number} rgbScale Maximum value for a color channel when using an RGB color. You may\n * need to set this to 255 if your colors are too bright.\n * @returns {Controller}\n */\n addColor(\n object: Object,\n property: string,\n rgbScale: number = 1,\n ) {\n return new ColorController(this, object, property, rgbScale);\n }\n\n addTexture(\n object: Object,\n property: string,\n ) {\n return new TextureController(this, object, property);\n }\n /**\n *\n * @param {object} object\n * @param {string} property\n * @param min\n * @param max\n * @param step\n * @returns {Controller}\n */\n addVector(\n object: Object,\n property: string,\n min?: number,\n max?: number,\n step?: number\n ) {\n return new VectorController(this, object, property, min, max, step);\n }\n\n addCurve(\n object: Object,\n property: string,\n ) {\n return new CurveController(this, object, property);\n }\n /**\n * Adds a folder to the GUI, which is just another GUI. This method returns\n * the nested GUI so you can add controllers to it.\n * @example\n * const folder = gui.addFolder( 'Position' );\n * folder.add( position, 'x' );\n * folder.add( position, 'y' );\n * folder.add( position, 'z' );\n *\n * @param {string} title Name to display in the folder's title bar.\n * @param {string} id Id\n * @returns {GUI}\n */\n addFolder(title: string, id: string = title) {\n const folder = new GUI({ parent: this, title, id });\n if (this.root._closeFolders) folder.close();\n return folder;\n }\n\n /**\n *\n * @param {string} id\n * @returns {this}\n */\n removeFolder(id: string) {\n let folder = this.getFolder(id);\n if (folder) folder.destroy();\n return this;\n }\n /**\n *\n * @param {string} id\n * @returns {GUI}\n */\n getFolder(id: string) {\n return this.folders.find(v => v.id === id);\n }\n\n /**\n * Recalls values that were saved with `gui.save()`.\n * @param {object} obj\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n load(obj: GUI, recursive: boolean = true) {\n if (obj.controllers) {\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n c.load(obj.controllers[c._name]);\n }\n });\n }\n\n if (recursive && obj.folders) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n f.load(obj.folders[f._title]);\n }\n });\n\n }\n\n return this;\n\n }\n\n /**\n * Returns an object mapping controller names to values. The object can be passed to `gui.load()` to\n * recall these values.\n * @example\n * {\n * \tcontrollers: {\n * \t\tprop1: 1,\n * \t\tprop2: 'value',\n * \t\t...\n * \t},\n * \tfolders: {\n * \t\tfolderName1: { controllers, folders },\n * \t\tfolderName2: { controllers, folders }\n * \t\t...\n * \t}\n * }\n *\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {object}\n */\n save(recursive: boolean = true) {\n const obj = {\n controllers: {},\n folders: {}\n };\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n throw new Error(`Cannot save GUI with duplicate property \"${c._name}\"`);\n }\n obj.controllers[c._name] = c.save();\n });\n\n if (recursive) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n throw new Error(`Cannot save GUI with duplicate folder \"${f._title}\"`);\n }\n obj.folders[f._title] = f.save();\n });\n }\n return obj;\n }\n\n /**\n * Opens a GUI or folder. GUI and folders are open by default.\n * @param {boolean} open Pass false to close\n * @returns {this}\n * @example\n * gui.open(); // open\n * gui.open( false ); // close\n * gui.open( gui._closed ); // toggle\n */\n open(open: boolean = true) {\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n this.domElement.classList.toggle('closed', this._closed);\n return this;\n }\n\n /**\n * Closes the GUI.\n * @returns {this}\n */\n close() {\n return this.open(false);\n }\n\n private _setClosed(closed: boolean) {\n if (this._closed === closed) return;\n this._closed = closed;\n this._callOnOpenClose(this);\n }\n\n /**\n * Shows the GUI after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * gui.show();\n * gui.show( false ); // hide\n * gui.show( gui._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n }\n\n /**\n * Hides the GUI.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n openAnimated(open: boolean = true) {\n // set state immediately\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n\n // wait for next frame to measure $children\n requestAnimationFrame(() => {\n // explicitly set initial height for transition\n const initialHeight = this.$children.clientHeight;\n this.$children.style.height = initialHeight + 'px';\n\n this.domElement.classList.add('transition');\n\n const onTransitionEnd = e => {\n if (e.target !== this.$children) return;\n this.$children.style.height = '';\n this.domElement.classList.remove('transition');\n this.$children.removeEventListener('transitionend', onTransitionEnd);\n };\n\n this.$children.addEventListener('transitionend', onTransitionEnd);\n\n // todo: this is wrong if children's scrollHeight makes for a gui taller than maxHeight\n const targetHeight = !open ? 0 : this.$children.scrollHeight;\n this.domElement.classList.toggle('closed', !open);\n\n requestAnimationFrame(() => {\n this.$children.style.height = targetHeight + 'px';\n });\n });\n\n return this;\n }\n\n /**\n * Change the title of this GUI.\n * @param {string} title\n * @returns {this}\n */\n title(title: string) {\n this._title = title;\n this.$title.innerHTML = title;\n return this;\n }\n\n /**\n * Resets all controllers to their initial values.\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n reset(recursive = true) {\n const controllers = recursive ? this.controllersRecursive() : this.controllers;\n controllers.forEach(c => c.reset());\n return this;\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI changes.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onChange(callback) {\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value\n * directly. Use the `gui.onChange( callback )` method instead.\n * @type {Function}\n */\n this._onChange = callback;\n return this;\n }\n\n _callOnChange(controller) {\n\n if (this.parent) {\n this.parent._callOnChange(controller);\n }\n\n if (this._onChange !== undefined) {\n this._onChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI has finished changing.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onFinishChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n _callOnFinishChange(controller: Controller) {\n if (this.parent) {\n this.parent._callOnFinishChange(controller);\n }\n\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called when this GUI or its descendants are opened or closed.\n * @param {function(GUI)} callback\n * @returns {this}\n * @example\n * gui.onOpenClose( changedGUI => {\n * \tconsole.log( changedGUI._closed );\n * } );\n */\n onOpenClose(callback: Function) {\n this._onOpenClose = callback;\n return this;\n }\n\n private _callOnOpenClose(changedGUI: GUI) {\n if (this.parent) {\n this.parent._callOnOpenClose(changedGUI);\n }\n\n if (this._onOpenClose !== undefined) {\n this._onOpenClose.call(this, changedGUI);\n }\n }\n\n /**\n * Destroys all DOM elements and event listeners associated with this GUI\n */\n destroy() {\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.folders.splice(this.parent.folders.indexOf(this), 1);\n }\n\n if (this.domElement.parentElement) {\n this.domElement.parentElement.removeChild(this.domElement);\n }\n\n Array.from(this.children).forEach(c => c.destroy());\n }\n\n /**\n * Returns an array of controllers contained by this GUI and its descendents.\n * @returns {Controller[]}\n */\n controllersRecursive() {\n let controllers = Array.from(this.controllers);\n this.folders.forEach(f => {\n controllers = controllers.concat(f.controllersRecursive());\n });\n return controllers;\n }\n\n /**\n * Returns an array of folders contained by this GUI and its descendents.\n * @returns {GUI[]}\n */\n foldersRecursive() {\n let folders = Array.from(this.folders);\n this.folders.forEach(f => {\n folders = folders.concat(f.foldersRecursive());\n });\n return folders;\n }\n\n update() {\n for (let child of this.children) {\n child.update();\n }\n }\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { ObjectInstance, property, Viewer } from \"@xviewer.js/core\";\nimport { Color, ColorSpace, CubeTexture, Euler, Scene, Texture, ToneMapping, WebGLRenderer } from \"three\";\n\nexport class ViewerHelper extends ObjectInstance {\n\n @property({\n value: {\n SRGBColorSpace: \"srgb\",\n LinearSRGBColorSpace: \"srgb-linear\",\n DisplayP3ColorSpace: \"display-p3\",\n LinearDisplayP3ColorSpace: \"display-p3-linear\",\n }\n })\n get outputColorSpace() {\n return this._renderer.outputColorSpace as ColorSpace;\n }\n set outputColorSpace(v: ColorSpace) {\n this._renderer.outputColorSpace = v;\n }\n\n @property({\n value: {\n NoToneMapping: 0,\n LinearToneMapping: 1,\n ReinhardToneMapping: 2,\n CineonToneMapping: 3,\n ACESFilmicToneMapping: 4\n }\n })\n get toneMapping() {\n return this._renderer.toneMapping;\n }\n set toneMapping(v: ToneMapping) {\n this._renderer.toneMapping = v;\n }\n\n @property({ min: 0, max: 10, step: 0.01 })\n get toneMappingExposure() {\n return this._renderer.toneMappingExposure;\n }\n set toneMappingExposure(v: number) {\n this._renderer.toneMappingExposure = v;\n }\n\n @property\n get shadows() {\n return this._renderer.shadowMap.enabled;\n }\n set shadows(v: boolean) {\n this._renderer.shadowMap.enabled = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get backgroundBlurriness() {\n return this._scene.backgroundBlurriness;\n }\n set backgroundBlurriness(v: number) {\n this._scene.backgroundBlurriness = v;\n }\n\n @property({ value: new Texture() })\n get environment() {\n return this._scene.environment;\n }\n set environment(v: Texture) {\n this._scene.environment = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get environmentIntensity() {\n return this._scene.environmentIntensity;\n }\n set environmentIntensity(v: number) {\n this._scene.environmentIntensity = v;\n }\n\n @property({ step: 0.01 })\n get environmentRotation() {\n return this._scene.environmentRotation;\n }\n set environmentRotation(v: Euler) {\n this._scene.environmentRotation.copy(v);\n }\n\n @property\n get background() {\n return this._scene.background;\n }\n set background(v: Texture | Color | CubeTexture) {\n this._scene.background = v;\n }\n\n @property({ step: 0.01 })\n get backgroundRotation() {\n return this._scene.backgroundRotation;\n }\n set backgroundRotation(v: Euler) {\n this._scene.backgroundRotation.copy(v);\n }\n\n @property\n get targetFrameRate() {\n return this._viewer.targetFrameRate;\n }\n set targetFrameRate(v) {\n this._viewer.targetFrameRate = v;\n }\n\n\n private _scene: Scene;\n private _renderer: WebGLRenderer;\n private _viewer: Viewer;\n\n constructor(viewer: Viewer) {\n super();\n this._viewer = viewer;\n this._scene = viewer.scene;\n this._renderer = viewer.renderer;\n }\n}","import {\n Material,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n OrthographicCamera,\n Scene,\n ShaderMaterial,\n Sprite,\n Texture,\n Vector3,\n} from \"three\";\n\nimport { Component, Mount, PropertyManager, property } from \"@xviewer.js/core\";\nimport { GUI } from \"./gui/GUI\";\nimport { ViewerHelper } from \"./ViewerHelper\";\n\ntype uuidObject = { uuid: string, name: string, type: string }\n\nexport class Inspector extends Mount {\n\n private _gui: GUI;\n private _scene: Scene;\n private _camera: OrthographicCamera;\n private _sprite: Sprite;\n \n private _refCntMap: Map<uuidObject, number> = new Map();\n private _targetMap: Map<Object, Object> = new Map();\n\n onLoad() {\n const { width, height } = this.viewer;\n this._scene = new Scene();\n this._camera = new OrthographicCamera(0, width, height, 0, -1, 1);\n this._gui = new GUI({ width: 310, title: \"Inspector\" }).close();\n this._gui.addFolder(\"Viewer\").close().hide();\n this._gui.addFolder(\"Component\").close().hide();\n this._gui.addFolder(\"Material\").close().hide();\n this._gui.addFolder(\"Other\").close().hide();\n this._inspect(new ViewerHelper(this.viewer));\n this._addSprite();\n }\n\n onDestroy() {\n this._gui.destroy();\n this._refCntMap.clear();\n this._targetMap.clear();\n }\n\n update(dt: number): void {\n this._gui.update();\n this._updateFolders();\n }\n\n resize(width: number, height: number): void {\n this._camera.left = 0;\n this._camera.right = width;\n this._camera.top = height;\n this._camera.bottom = 0;\n this._camera.updateProjectionMatrix();\n }\n\n private _addSprite() {\n const viewer = this.viewer;\n this._sprite = viewer.add(Sprite, {\n parent: this._scene,\n scale: new Vector3(256, 256, 1),\n position: new Vector3(viewer.width / 2, viewer.height / 2),\n visible: false,\n });\n }\n\n private _renderScene() {\n const { renderer } = this.viewer;\n const autoClearDepth = renderer.autoClearDepth;\n const autoClearColor = renderer.autoClearColor;\n\n renderer.autoClearDepth = true;\n renderer.autoClearColor = false;\n renderer.render(this._scene, this._camera);\n\n renderer.autoClearDepth = autoClearDepth;\n renderer.autoClearColor = autoClearColor;\n\n return renderer.domElement;\n }\n\n private _renderSprite(texture: Texture, w: number, h: number) {\n this._sprite.visible = true;\n this._sprite.scale.set(w, h, 1);\n this._sprite.position.set(w / 2, this._camera.top - h / 2, 0);\n this._sprite.material.map = texture;\n this._sprite.material.needsUpdate = true;\n const dom = this._renderScene();\n this._sprite.visible = false;\n return dom;\n }\n\n private _updateFolders() {\n const refCntMap = this._refCntMap;\n const setState = (v: uuidObject) => {\n if (refCntMap.get(v) === -1) refCntMap.set(v, 0);\n if (refCntMap.get(v) === undefined) refCntMap.set(v, 1);\n }\n\n refCntMap.forEach((_, k, map) => map.set(k, -1));\n\n this.viewer.traverseMaterials(setState);\n this.viewer.traverseComponents(setState);\n\n refCntMap.forEach((v, k, map) => {\n if (v === 1) {\n this._inspect(k);\n }\n if (v === -1) {\n this._uninspect(k);\n map.delete(k);\n }\n })\n }\n\n private _getPropertiesList<T extends uuidObject>(target: T) {\n const list = [];\n\n let props = PropertyManager._getMergedProperties(target.constructor);\n if (props) {\n const values = propsSort(props);\n this._targetMap.set(values, target);\n list.push(values);\n }\n if (target instanceof ShaderMaterial) {\n props = Object.create(null);\n const uniforms = Object.create(null);\n\n Object.keys(target.uniforms).forEach((name) => {\n Object.defineProperty(uniforms, name, {\n get: () => target.uniforms[name].value,\n set: (v) => (target.uniforms[name].value = v),\n });\n props[name] = { dir: \"uniforms\" };\n });\n\n const values = propsSort(props);\n this._targetMap.set(values, uniforms);\n list.push(values);\n }\n\n return list;\n }\n\n private _inspect<T extends uuidObject>(target: T) {\n let propsList = this._getPropertiesList(target);\n if (propsList.length === 0) return;\n\n let gui = this._gui;\n if (target instanceof ViewerHelper) {\n gui = gui.getFolder(\"Viewer\").show();\n }\n else if (target instanceof Component) {\n gui = gui.getFolder(\"Component\").show();\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\").show();\n }\n else {\n gui = gui.getFolder(\"Other\").show();\n }\n\n if (gui._title !== \"Viewer\") {\n gui = gui.getFolder(target.uuid) || gui.addFolder(targetName(target), target.uuid).close();\n }\n\n this._addGUI(gui, propsList, target);\n return target;\n }\n\n private _addGUI(gui: GUI, list: [string, any][][], target: Object, dir: string = \"\") {\n if (dir) {\n gui = gui.getFolder(dir) || gui.addFolder(dir).close();\n }\n\n const source = target;\n for (const props of list) {\n target = this._targetMap.get(props) || source;\n\n for (const [k, prop] of props) {\n let value = target[k] == null ? prop.value : target[k];\n if (value == null || (prop.parent && target[prop.parent] == null)) {\n continue;\n }\n\n let folder = gui;\n if (prop.dir) {\n folder = folder.getFolder(prop.dir) || folder.addFolder(prop.dir).close();\n }\n\n if (PropertyManager._hasProperties(value.constructor)) {\n this._addGUI(folder, this._getPropertiesList(value), target, k);\n }\n\n if (Array.isArray(value)) {\n this._addGUI(folder, [value.map((_, i) => [i.toString(), {}])], value, k);\n }\n else {\n const type = typeof value;\n\n let ins = null;\n if (value.isColor) {\n ins = folder.addColor(target, k);\n }\n else if (value.isAnimationCurve) {\n ins = folder.addCurve(target, k);\n }\n else if (value.isVector2 || value.isVector3 || value.isVector4 || value.isEuler) {\n ins = folder.addVector(target, k, prop.min, prop.max, prop.step);\n }\n else if (value.isTexture) {\n ins = folder.addTexture(target, k);\n ins.getImage = (texture, w, h) => this._renderSprite(texture, w, h);\n }\n else if (type === \"number\" || type === \"boolean\" || type === \"string\" || type === \"function\") {\n ins = folder.add(target, k, prop.value || prop.min, prop.max, prop.step);\n }\n else {\n //do nothing\n }\n if (ins && prop.name) {\n ins.name(prop.name);\n }\n }\n\n }\n }\n }\n\n private _uninspect(target: uuidObject) {\n let gui = this._gui;\n if (target instanceof Component) {\n gui = gui.getFolder(\"Component\");\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\");\n }\n else {\n gui = gui.getFolder(\"Other\");\n }\n\n gui.removeFolder(target.uuid);\n\n if (gui.children.length === 0) {\n gui.hide();\n }\n }\n}\n\nfunction targetName(target: uuidObject) {\n return target.name || target.constructor.name || target.type;\n}\n\nfunction propsSort(props: Object) {\n const order = v => v.order || 10000;\n const values = Object.entries<any>(props);\n const array0 = values.filter(v => !v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n const array1 = values.filter(v => v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n return array0.concat(array1);\n}\n\nconst materialProperties = {\n visible: { order: 1 },\n transparent: { order: 2 },\n side: { order: 3, value: { FrontSide: 0, BackSide: 1, DoubleSide: 2 } },\n color: { order: 4, dir: \"diffuse\" },\n opacity: { order: 5, dir: \"diffuse\", min: 0, max: 1, step: 0.01 }\n}\nfor (let k in materialProperties) {\n property(materialProperties[k])(Material.prototype, k);\n}\n\nconst meshBasicMaterislProperties = {\n map: { dir: \"diffuse\" },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n specularMap: {},\n alphaMap: {},\n envMap: {},\n}\nfor (let k in meshBasicMaterislProperties) {\n property(meshBasicMaterislProperties[k])(MeshBasicMaterial.prototype, k);\n}\n\nconst meshStandardMaterialProperties = {\n map: { dir: \"diffuse\" },\n roughnessMap: { dir: \"roughness\" },\n roughness: { dir: \"roughness\", min: 0, max: 1, step: 0.01 },\n metalnessMap: { dir: \"metalness\" },\n metalness: { dir: \"metalness\", min: 0, max: 1, step: 0.01 },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n emissive: { dir: \"emissive\" },\n emissiveMap: { dir: \"emissive\" },\n emissiveIntensity: { dir: \"emissive\", min: 0, max: 1, step: 0.01, parent: \"emissiveMap\" },\n normalMap: { dir: \"normal\" },\n normalScale: { dir: \"normal\", step: 0.01, parent: \"normalMap \" },\n displacementScale: { dir: \"displacement\", min: 0, max: 1, step: 0.01, parent: \"displacementMap\" },\n displacementBias: { dir: \"displacement\", parent: \"displacementMap\" },\n envMap: { dir: \"envMap\" },\n envMapIntensity: { dir: \"envMap\", min: 0, max: 1, step: 0.01, parent: \"envMap\" },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n}\nfor (let k in meshStandardMaterialProperties) {\n property(meshStandardMaterialProperties[k])(MeshStandardMaterial.prototype, k);\n}\n\nconst meshPhysicalMaterialProperties = {\n ior: { min: 0, max: 10, step: 0.01 },\n anisotropy: { min: 0, max: 10, step: 0.01 },\n clearcoat: { dir: \"clearcoat\" },\n clearcoatMap: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatRoughness: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatNormalScale: { dir: \"clearcoat\", step: 0.01 },\n clearcoatNormalMap: { dir: \"clearcoat\" },\n iridescence: { dir: \"iridescence\", min: 0, max: 1, step: 0.01 },\n iridescenceMap: { dir: \"iridescence\" },\n iridescenceIOR: { dir: \"iridescence\", step: 0.01 },\n iridescenceThicknessRange: { dir: \"iridescence\" },\n iridescenceThicknessMap: { dir: \"iridescence\" },\n sheen: { dir: \"sheen\" },\n sheenColor: { dir: \"sheen\" },\n sheenColorMap: { dir: \"sheen\" },\n sheenRoughness: { dir: \"sheen\", min: 0, max: 1, step: 0.01 },\n sheenRoughnessMap: { dir: \"sheen\" },\n transmission: { dir: \"transmission\" },\n transmissionMap: { dir: \"transmission\" },\n thickness: { dir: \"thickness\", min: 0, max: 1, step: 0.01 },\n thicknessMap: { dir: \"thickness\" },\n attenuationDistance: { dir: \"attenuation\" },\n attenuationColor: { dir: \"attenuation\" },\n specularIntensity: { dir: \"specular\", min: 0, max: 1, step: 0.01 },\n specularIntensityMap: { dir: \"specular\" },\n specularColor: { dir: \"specular\" },\n specularColorMap: { dir: \"specular\" },\n}\nfor (let k in meshPhysicalMaterialProperties) {\n property(meshPhysicalMaterialProperties[k])(MeshPhysicalMaterial.prototype, k);\n}\n\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction format(v) {\n\tif (v > 1000) {\n\t\treturn Math.floor(v * 0.001) + \"k\";\n\t}\n\telse if (v > 1000000) {\n\t\treturn Math.floor(v * 0.000001) + \"m\"\n\t}\n\telse {\n\t\treturn v;\n\t}\n}\n\nvar Panel = function (name, fg, bg) {\n\n\tvar min = Infinity, max = 0, round = Math.round;\n\tvar PR = round(window.devicePixelRatio || 1);\n\n\tvar WIDTH = 80 * PR, HEIGHT = 48 * PR,\n\t\tTEXT_X = 3 * PR, TEXT_Y = 2 * PR,\n\t\tGRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,\n\t\tGRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;\n\n\tvar canvas = document.createElement('canvas');\n\tcanvas.width = WIDTH;\n\tcanvas.height = HEIGHT;\n\tcanvas.style.cssText = 'width:80px;height:48px';\n\n\tvar context = canvas.getContext('2d');\n\tcontext.font = 'bold ' + (9 * PR) + 'px Helvetica,Arial,sans-serif';\n\tcontext.textBaseline = 'top';\n\n\tcontext.fillStyle = bg;\n\tcontext.fillRect(0, 0, WIDTH, HEIGHT);\n\n\tcontext.fillStyle = fg;\n\tcontext.fillText(name, TEXT_X, TEXT_Y);\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\tcontext.fillStyle = bg;\n\tcontext.globalAlpha = 0.9;\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\treturn {\n\n\t\tdom: canvas,\n\n\t\tupdate: function (value, maxValue) {\n\n\t\t\tmin = Math.min(min, value);\n\t\t\tmax = Math.max(max, value);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 1;\n\t\t\tcontext.fillRect(0, 0, WIDTH, GRAPH_Y);\n\t\t\tcontext.fillStyle = fg;\n\t\t\tcontext.fillText(format(round(value)) + ' ' + name + ' (' + format(round(min)) + '-' + format(round(max)) + ')', TEXT_X, TEXT_Y);\n\n\t\t\tcontext.drawImage(canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 0.9;\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round((1 - (value / maxValue)) * GRAPH_HEIGHT));\n\n\t\t}\n\n\t};\n\n};\n\nvar Stats = function () {\n\n\tvar mode = 0;\n\n\tvar container = document.createElement('div');\n\tcontainer.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';\n\tcontainer.addEventListener('click', function (event) {\n\n\t\tevent.preventDefault();\n\t\tshowPanel(++mode % container.children.length);\n\n\t}, false);\n\n\t//\n\n\tfunction addPanel(panel) {\n\n\t\tcontainer.appendChild(panel.dom);\n\t\treturn panel;\n\n\t}\n\n\tfunction showPanel(id) {\n\n\t\tfor (var i = 0; i < container.children.length; i++) {\n\n\t\t\tcontainer.children[i].style.display = i === id ? 'block' : 'none';\n\n\t\t}\n\n\t\tmode = id;\n\n\t}\n\n\t//\n\n\tvar beginTime = (performance || Date).now(), prevTime = beginTime, frames = 0;\n\n\tvar fpsPanel = addPanel(new Panel('FPS', '#0ff', '#002'));\n\tvar msPanel = addPanel(new Panel('MS', '#0f0', '#020'));\n\n\tif (self.performance && self.performance.memory) {\n\n\t\tvar memPanel = addPanel(new Panel('MB', '#f08', '#201'));\n\n\t}\n\n\tshowPanel(0);\n\n\treturn {\n\n\t\tREVISION: 16,\n\n\t\tdom: container,\n\n\t\taddPanel: addPanel,\n\t\tshowPanel: showPanel,\n\n\t\tbegin: function () {\n\n\t\t\tbeginTime = (performance || Date).now();\n\n\t\t},\n\n\t\tend: function () {\n\n\t\t\tframes++;\n\n\t\t\tvar time = (performance || Date).now();\n\n\t\t\tmsPanel.update(time - beginTime, 200);\n\n\t\t\tif (time >= prevTime + 1000) {\n\n\t\t\t\tfpsPanel.update((frames * 1000) / (time - prevTime), 100);\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t\tif (memPanel) {\n\n\t\t\t\t\tvar memory = performance.memory;\n\t\t\t\t\tmemPanel.update(memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tbeginTime = this.end();\n\n\t\t},\n\n\t\t// Backwards Compatibility\n\n\t\tdomElement: container,\n\t\tsetMode: showPanel\n\n\t};\n\n};\nexport { Stats, Panel };\n","import { Mount } from \"@xviewer.js/core\";\nimport { Panel, Stats as StatsPrimitive } from \"./stats/Stats\";\n\nexport class Stats extends Mount {\n private _stats: StatsPrimitive = new StatsPrimitive();\n private _dcPanel: Panel = new Panel('DC', '#ff8', '#221');\n private _triPanel: Panel = new Panel(\"TRI\", '#ff8', '#221')\n private _texPanel: Panel = new Panel('TEX', '#ff8', '#221')\n private _prgPanel: Panel = new Panel('PRG', '#ff8', '#221')\n\n onLoad() {\n this._stats.addPanel(this._dcPanel);\n this._stats.addPanel(this._texPanel);\n this._stats.addPanel(this._triPanel);\n this._stats.addPanel(this._prgPanel);\n this._stats.showPanel(0);\n document.body.appendChild(this._stats.dom);\n }\n\n onDestroy() {\n document.body.removeChild(this._stats.dom);\n }\n\n update(dt: number): void {\n const info = this.viewer.renderer.info;\n this._dcPanel.update(info.render.calls, 300);\n this._triPanel.update(info.render.triangles, 500000);\n this._texPanel.update(info.memory.textures, 200);\n this._prgPanel.update(info.programs.length, 50);\n this._stats.update();\n }\n}","import { BoxProjection, Mount } from \"@xviewer.js/core\";\nimport { Box3, Box3Helper } from \"three\";\n\nexport class BoxProjectionHelper extends Mount {\n private _box3: Box3;\n private _helper: Box3Helper;\n private _target: BoxProjection;\n\n onLoad(): void {\n this._box3 = new Box3();\n this._target = this.viewer.mount(BoxProjection);\n this._helper = this.viewer.add(new Box3Helper(this._box3));\n }\n\n onEnable(): void {\n this._helper.visible = true;\n }\n\n onDisable(): void {\n this._helper.visible = false;\n }\n\n update(dt: number): void {\n const { center, boxMin, boxMax } = this._target;\n this._box3.min.copy(center).add(boxMin);\n this._box3.max.copy(center).add(boxMax);\n this._helper.updateMatrixWorld();\n }\n}"],"names":["Controller","name","_name","$name","innerHTML","onChange","callback","_onChange","parent","_callOnChange","undefined","call","getValue","_changed","onFinishChange","_onFinishChange","_callOnFinishChange","reset","setValue","initialValue","enable","enabled","disable","disabled","_disabled","domElement","classList","toggle","$disable","toggleAttribute","show","_hidden","style","display","hide","options","min","max","step","decimals","listen","_listening","_listenCallbackID","cancelAnimationFrame","_listenCallback","checkDisplay","_closed","value","save","_listenPrevValue","requestAnimationFrame","updateDisplay","object","property","update","load","destroy","children","splice","indexOf","controllers","$children","removeChild","constructor","className","widgetTag","document","createElement","add","nextNameID","id","$widget","appendChild","addEventListener","e","stopPropagation","push","bind","OptionController","index","_values","$select","selectedIndex","$display","_names","Array","isArray","Object","values","keys","forEach","$option","setAttribute","remove","normalizeColorString","string","match","result","parseInt","toString","padStart","STRING","isPrimitive","v","fromHexString","toHexString","INT","substring","ARRAY","target","rgbScale","int","r","g","b","OBJECT","FORMATS","getColorFormat","find","format","getPrecision","str","length","hasDecimal","NumberController","_min","_onUpdateMinMax","_max","explicit","_step","_stepExplicit","needsUpdateDisplay","Math","abs","_snap","_hasSlider","percent","$fill","width","_inputFocused","$input","_initInput","isTouch","window","matchMedia","matches","onInput","parseFloat","isNaN","_clamp","increment","delta","_snapClampSetValue","onKeyDown","key","blur","code","preventDefault","_arrowKeyMultiplier","onWheel","_normalizeMouseWheel","testingForVerticalDrag","initClientX","initClientY","prevClientY","initValue","dragDelta","DRAG_THRESH","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","dx","dy","_setDraggingStyle","removeEventListener","onFocus","onBlur","passive","_initSlider","$slider","insertBefore","map","a","c","d","setValueFromX","rect","getBoundingClientRect","left","right","mouseDown","mouseMove","mouseUp","testingForScroll","prevClientX","beginTouchDrag","touches","onTouchStart","_hasScrollBar","onTouchMove","onTouchEnd","callOnFinishChange","WHEEL_DEBOUNCE_TIME","wheelFinishChangeTimeout","isVertical","deltaX","deltaY","clearTimeout","setTimeout","active","axis","body","_getImplicitStep","_hasMin","_hasMax","pow","floor","wheelDelta","wheel","mult","shiftKey","altKey","round","toPrecision","root","scrollHeight","clientHeight","stepExplicit","BooleanController","checked","StringController","FunctionController","$button","ColorController","_setValueFromHexString","_initialValueHexString","_format","newValue","_rgbScale","_textFocused","$text","backgroundColor","tryParse","select","UIElement","args","i","argument","dom","console","error","clear","lastChild","setId","getId","setClass","addClass","removeClass","setStyle","array","setDisabled","setTextContent","textContent","getIndexOfChild","element","prototype","UINumber","equals","_onChangeCallback","unit","Infinity","setUnit","nudge","cursor","scope","changeEvent","createEvent","initEvent","distance","onMouseDownValue","pointer","x","y","prevPointer","event","currentValue","dispatchEvent","focus","pageX","pageY","keyCode","VectorController","fill","uiNumber","z","w","xElement","yElement","zElement","wElement","clone","assign","clamp","minv","maxv","hitTest","cx","cy","hw","hh","theme","BACKGROUND","GRID","LINE","COVER","POINT","SELECTED","CurvePanel","_canvas","curve","_curve","resize","height","canvas","DPR","devicePixelRatio","xRes","offsetWidth","yRes","offsetHeight","hypot","_xRes","_yRes","onCurveChanged","_onCurveChanged","onPointChanged","_onPointChanged","onPointRemoved","_onPointRemoved","onPointAdded","_onPointAdded","_onDblClick","button","_tryAddingPoint","_onMouseDown","_cxRef","_cx","_cyRef","_cy","_offsetXRef","offsetX","_offsetYRef","offsetY","_trySelectingPoint","_button","_mouse","_selectedPoint","_onMouseUp","_onMouseMove","cxRes","cyRes","rx","_ra","ry","_fixed","_pxRef","_pyRef","setPointPos","_onWheel","sfactor","render","_autoResize","ctx","_context","setTransform","fillStyle","fillRect","_drawGrid","_drawCurve","color","iax","ibx","iay","iby","lineWidth","strokeStyle","beginPath","ix","moveTo","lineTo","iy","stroke","_drawAxis","xPos","yPos","ax","ay","bx","by","SAMPLES","STEP","point","createCurvePoint","mx","my","hitCurve","hitPoint","isFirstPoint","p","getPoint","closePath","points","px","py","sort","selectPoint","setCurve","setPointMode","mode","set","getContext","copyToClipboard","text","tempInput","setSelectionRange","execCommand","toFixedFloat","fractionDigits","toFixed","CurveEditor","_dom","_onToggleTab","tabInex","_tabs","_curvePanel","_curves","_onTogglePointTab","tab","_smoothTab","_sharpTab","_curvePointPanel","_onPosChanged","_xPosInput","_yPosInput","isChanged","layoutPoint","_layoutPoint","needsUpdate","_target","tabGroup","ondblclick","join","alert","curves","onclick","onchange","CurveController","_curveEditor","TextureController","_autoRefresh","$canvas","context","texture","image","$label","title","sourceFile","getImage","h","drawImage","group","label","depth","block","GUI","$1","addColor","addTexture","addVector","addCurve","addFolder","folder","_closeFolders","close","removeFolder","getFolder","folders","obj","recursive","f","_title","Error","open","_setClosed","$title","closed","_callOnOpenClose","openAnimated","initialHeight","onTransitionEnd","targetHeight","controllersRecursive","controller","onOpenClose","_onOpenClose","changedGUI","parentElement","from","concat","foldersRecursive","child","container","autoPlace","closeFolders","touchStyles","click","setProperty","ViewerHelper","ObjectInstance","outputColorSpace","_renderer","toneMapping","toneMappingExposure","shadows","shadowMap","backgroundBlurriness","_scene","environment","environmentIntensity","environmentRotation","copy","background","backgroundRotation","targetFrameRate","_viewer","viewer","scene","renderer","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","Texture","Inspector","Mount","onLoad","Scene","_camera","OrthographicCamera","_gui","_inspect","_addSprite","onDestroy","_refCntMap","_targetMap","dt","_updateFolders","top","bottom","updateProjectionMatrix","_sprite","Sprite","scale","Vector3","position","visible","_renderScene","autoClearDepth","autoClearColor","_renderSprite","material","refCntMap","setState","get","_","k","traverseMaterials","traverseComponents","_uninspect","delete","_getPropertiesList","list","props","PropertyManager","_getMergedProperties","propsSort","ShaderMaterial","create","uniforms","defineProperty","dir","propsList","gui","Component","Material","uuid","targetName","_addGUI","source","prop","_hasProperties","type","ins","isColor","isAnimationCurve","isVector2","isVector3","isVector4","isEuler","isTexture","Map","order","entries","array0","filter","array1","materialProperties","transparent","side","FrontSide","BackSide","DoubleSide","opacity","meshBasicMaterislProperties","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","MeshBasicMaterial","meshStandardMaterialProperties","roughnessMap","roughness","metalnessMap","metalness","emissive","emissiveMap","emissiveIntensity","normalMap","normalScale","displacementScale","displacementBias","envMapIntensity","MeshStandardMaterial","meshPhysicalMaterialProperties","ior","anisotropy","clearcoat","clearcoatMap","clearcoatRoughness","clearcoatNormalScale","clearcoatNormalMap","iridescence","iridescenceMap","iridescenceIOR","iridescenceThicknessRange","iridescenceThicknessMap","sheen","sheenColor","sheenColorMap","sheenRoughness","sheenRoughnessMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","specularIntensity","specularIntensityMap","specularColor","specularColorMap","MeshPhysicalMaterial","Panel","fg","bg","PR","WIDTH","HEIGHT","TEXT_X","TEXT_Y","GRAPH_X","GRAPH_Y","GRAPH_WIDTH","GRAPH_HEIGHT","cssText","font","textBaseline","fillText","globalAlpha","maxValue","Stats","showPanel","addPanel","panel","beginTime","performance","Date","now","prevTime","frames","fpsPanel","msPanel","self","memory","memPanel","REVISION","begin","end","time","usedJSHeapSize","jsHeapSizeLimit","setMode","_stats","_dcPanel","_texPanel","_triPanel","_prgPanel","info","calls","triangles","textures","programs","StatsPrimitive","BoxProjectionHelper","_box3","Box3","mount","BoxProjection","_helper","Box3Helper","onEnable","onDisable","center","boxMin","boxMax","updateMatrixWorld"],"mappings":";;;;;AAAA,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;ACE9tB,MAAMA,UAAAA,CAAAA;AA0GT;;;;QAKAC,IAAAA,CAAKA,IAAY,EAAE;QACf,IAAI,CAACC,KAAK,GAAGD,IAAAA,CAAAA;AACb,QAAA,IAAI,CAACE,KAAK,CAACC,SAAS,GAAGH,IAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;;;;;;;;;;;;;QAiBAI,QAAAA,CAASC,QAAkB,EAAE;QACzB,IAAI,CAACC,SAAS,GAAGD,QAAAA,CAAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;AAEC,QACD,aAA0B,GAAA;AACtB,QAAA,IAAI,CAACE,MAAM,CAACC,aAAa,CAAC,IAAI,CAAA,CAAA;AAC9B,QAAA,IAAI,IAAI,CAACF,SAAS,KAAKG,SAAW,EAAA;YAC9B,IAAI,CAACH,SAAS,CAACI,IAAI,CAAC,IAAI,EAAE,IAAI,CAACC,QAAQ,EAAA,CAAA,CAAA;AAC3C,SAAA;QACA,IAAI,CAACC,QAAQ,GAAG,IAAA,CAAA;AACpB,KAAA;AAEA;;;;;;;;;;;QAYAC,cAAAA,CAAeR,QAAkB,EAAE;QAC/B,IAAI,CAACS,eAAe,GAAGT,QAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;AAEC,QACD,mBAAgC,GAAA;QAC5B,IAAI,IAAI,CAACO,QAAQ,EAAE;AACf,YAAA,IAAI,CAACL,MAAM,CAACQ,mBAAmB,CAAC,IAAI,CAAA,CAAA;AACpC,YAAA,IAAI,IAAI,CAACD,eAAe,KAAKL,SAAW,EAAA;gBACpC,IAAI,CAACK,eAAe,CAACJ,IAAI,CAAC,IAAI,EAAE,IAAI,CAACC,QAAQ,EAAA,CAAA,CAAA;AACjD,aAAA;AACJ,SAAA;QACA,IAAI,CAACC,QAAQ,GAAG,KAAA,CAAA;AACpB,KAAA;AAEA;;;AAGC,QACDI,KAAQ,GAAA;AACJ,QAAA,IAAI,CAACC,QAAQ,CAAC,IAAI,CAACC,YAAY,CAAA,CAAA;AAC/B,QAAA,IAAI,CAACH,mBAAmB,EAAA,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;;;;;QASAI,MAAAA,CAAOC,OAAU,GAAA,IAAI,EAAE;AACnB,QAAA,OAAO,IAAI,CAACC,OAAO,CAAC,CAACD,OAAAA,CAAAA,CAAAA;AACzB,KAAA;AAEA;;;;;;;;QASAC,OAAAA,CAAQC,QAAW,GAAA,IAAI,EAAE;AACrB,QAAA,IAAIA,aAAa,IAAI,CAACC,SAAS,EAAE,OAAO,IAAI,CAAA;QAC5C,IAAI,CAACA,SAAS,GAAGD,QAAAA,CAAAA;AACjB,QAAA,IAAI,CAACE,UAAU,CAACC,SAAS,CAACC,MAAM,CAAC,UAAYJ,EAAAA,QAAAA,CAAAA,CAAAA;AAC7C,QAAA,IAAI,CAACK,QAAQ,CAACC,eAAe,CAAC,UAAYN,EAAAA,QAAAA,CAAAA,CAAAA;AAC1C,QAAA,OAAO,IAAI,CAAA;AAEf,KAAA;AAEA;;;;;;;;QASAO,IAAAA,CAAKA,IAAgB,GAAA,IAAI,EAAE;QACvB,IAAI,CAACC,OAAO,GAAG,CAACD,IAAAA,CAAAA;QAChB,IAAI,CAACL,UAAU,CAACO,KAAK,CAACC,OAAO,GAAG,IAAI,CAACF,OAAO,GAAG,MAAS,GAAA,EAAA,CAAA;AACxD,QAAA,OAAO,IAAI,CAAA;AAEf,KAAA;AAEA;;;AAGC,QACDG,IAAO,GAAA;QACH,OAAO,IAAI,CAACJ,IAAI,CAAC,KAAA,CAAA,CAAA;AACrB,KAAA;AAEAK,IAAAA,OAAAA,CAAQA,OAAY,EAAE;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;AAIC;AAEDC,IAAAA,GAAAA,CAAIA,GAAW,EAAE;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;AAIC;AAEDC,IAAAA,GAAAA,CAAIA,GAAW,EAAE;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;;AAKC;AAEDC,IAAAA,IAAAA,CAAKA,IAAY,EAAE;AACf,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;;;;AAOC;AAEDC,IAAAA,QAAAA,CAASA,QAAgB,EAAE;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;QAKAC,MAAAA,CAAOA,MAAkB,GAAA,IAAI,EAAE;QAC3B,IAAI,CAACC,UAAU,GAAGD,MAAAA,CAAAA;AAClB,QAAA,IAAI,IAAI,CAACE,iBAAiB,KAAKhC,SAAW,EAAA;YACtCiC,oBAAqB,CAAA,IAAI,CAACD,iBAAiB,CAAA,CAAA;YAC3C,IAAI,CAACA,iBAAiB,GAAGhC,SAAAA,CAAAA;AAC7B,SAAA;QACA,IAAI,IAAI,CAAC+B,UAAU,EAAE;AACjB,YAAA,IAAI,CAACG,eAAe,EAAA,CAAA;AACxB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AAEf,KAAA;IAEAC,YAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAACrC,MAAM,CAACsC,OAAO,EAAE;YACrB,OAAO,KAAA,CAAA;AACX,SAAA;QACA,IAAIC,KAAAA,GAAQ,IAAI,CAACC,IAAI,EAAA,CAAA;AACrB,QAAA,IAAI,IAAI,CAACC,gBAAgB,KAAKF,KAAO,EAAA;YACjC,IAAI,CAACE,gBAAgB,GAAGF,KAAAA,CAAAA;YACxB,OAAO,IAAA,CAAA;AACX,SAAA;QACA,OAAO,KAAA,CAAA;AACX,KAAA;IAEQH,eAAkB,GAAA;AACtB,QAAA,IAAI,CAACF,iBAAiB,GAAGQ,qBAAsB,CAAA,IAAI,CAACN,eAAe,CAAA,CAAA;;;;QAInE,IAAI,IAAI,CAACC,YAAY,EAAI,EAAA;AACrB,YAAA,IAAI,CAACM,aAAa,EAAA,CAAA;AACtB,SAAA;AACJ,KAAA;AAEA;;;AAGC,QACDvC,QAAW,GAAA;AACP,QAAA,OAAO,IAAI,CAACwC,MAAM,CAAC,IAAI,CAACC,QAAQ,CAAC,CAAA;AACrC,KAAA;AAEA;;;;;QAMAnC,QAAAA,CAAS6B,KAAU,EAAE;AACjB,QAAA,IAAI,CAACK,MAAM,CAAC,IAAI,CAACC,QAAQ,CAAC,GAAGN,KAAAA,CAAAA;AAC7B,QAAA,IAAI,CAACtC,aAAa,EAAA,CAAA;AAClB,QAAA,IAAI,CAAC0C,aAAa,EAAA,CAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAG,MAAS,GAAA;QACL,IAAI,IAAI,CAACT,YAAY,EAAI,EAAA;AACrB,YAAA,IAAI,CAACM,aAAa,EAAA,CAAA;AACtB,SAAA;AACJ,KAAA;AAEA;;;;AAIC,QACDA,aAAgB,GAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAI,IAAAA,IAAAA,CAAKR,KAAU,EAAE;QACb,IAAI,CAAC7B,QAAQ,CAAC6B,KAAAA,CAAAA,CAAAA;AACd,QAAA,IAAI,CAAC/B,mBAAmB,EAAA,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAgC,IAAO,GAAA;QACH,OAAO,IAAI,CAACpC,QAAQ,EAAA,CAAA;AACxB,KAAA;AAEA;;AAEC,QACD4C,OAAU,GAAA;QACN,IAAI,CAAChB,MAAM,CAAC,KAAA,CAAA,CAAA;AACZ,QAAA,IAAI,CAAChC,MAAM,CAACiD,QAAQ,CAACC,MAAM,CAAC,IAAI,CAAClD,MAAM,CAACiD,QAAQ,CAACE,OAAO,CAAC,IAAI,CAAG,EAAA,CAAA,CAAA,CAAA;AAChE,QAAA,IAAI,CAACnD,MAAM,CAACoD,WAAW,CAACF,MAAM,CAAC,IAAI,CAAClD,MAAM,CAACoD,WAAW,CAACD,OAAO,CAAC,IAAI,CAAG,EAAA,CAAA,CAAA,CAAA;QACtE,IAAI,CAACnD,MAAM,CAACqD,SAAS,CAACC,WAAW,CAAC,IAAI,CAACrC,UAAU,CAAA,CAAA;AACrD,KAAA;IAxUAsC,WACIvD,CAAAA,MAAW,EACX4C,MAAc,EACdC,QAAgB,EAChBW,SAAiB,EACjBC,SAAoB,GAAA,KAAK,CAC3B;AAvCF;;;AAGC,QAAA,IAAA,CACSzC,SAAqB,GAAA,KAAA,CAAA;AAC/B;;;AAGC,QAAA,IAAA,CACSO,OAAmB,GAAA,KAAA,CAAA;aACnBlB,QAAoB,GAAA,KAAA,CAAA;AAC9B;;;AAGC,QAAA,IAAA,CACS4B,UAAsB,GAAA,KAAA,CAAA;AACtBC,QAAAA,IAAAA,CAAAA,iBAAAA,GAA4B,CAAC,CAAA,CAAA;AAEvC;;AAEC,QAAA,IAAA,CACDxC,KAAgB,GAAA,EAAA,CAAA;QAmBZ,IAAI,CAACM,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAAC4C,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACC,QAAQ,GAAGA,QAAAA,CAAAA;AAEhB,QAAA,IAAI,CAAClC,YAAY,GAAG,IAAI,CAACP,QAAQ,EAAA,CAAA;AACjC,QAAA,IAAI,CAACa,UAAU,GAAGyC,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACzC,QAAA,IAAI,CAAC1C,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAAC,YAAA,CAAA,CAAA;AAC9B,QAAA,IAAI,CAAC3C,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAACJ,SAAAA,CAAAA,CAAAA;AAE9B,QAAA,IAAI,CAAC7D,KAAK,GAAG+D,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACpC,QAAA,IAAI,CAAChE,KAAK,CAACuB,SAAS,CAAC0C,GAAG,CAAC,MAAA,CAAA,CAAA;AAEzBpE,QAAAA,UAAAA,CAAWqE,UAAU,GAAGrE,UAAWqE,CAAAA,UAAU,IAAI,CAAA,CAAA;AACjD,QAAA,IAAI,CAAClE,KAAK,CAACmE,EAAE,GAAG,CAAC,aAAa,EAAE,EAAEtE,UAAAA,CAAWqE,UAAU,CAAC,CAAC,CAAA;AAEzD;;;AAGC,YACD,IAAI,CAACE,OAAO,GAAGL,QAAAA,CAASC,aAAa,CAACF,SAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAI,CAACM,OAAO,CAAC7C,SAAS,CAAC0C,GAAG,CAAC,QAAA,CAAA,CAAA;AAC3B,QAAA,IAAI,CAACxC,QAAQ,GAAG,IAAI,CAAC2C,OAAO,CAAA;AAE5B,QAAA,IAAI,CAAC9C,UAAU,CAAC+C,WAAW,CAAC,IAAI,CAACrE,KAAK,CAAA,CAAA;AACtC,QAAA,IAAI,CAACsB,UAAU,CAAC+C,WAAW,CAAC,IAAI,CAACD,OAAO,CAAA,CAAA;;QAExC,IAAI,CAAC9C,UAAU,CAACgD,gBAAgB,CAAC,SAAWC,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEC,eAAe,EAAA,CAAA,CAAA;QAClE,IAAI,CAAClD,UAAU,CAACgD,gBAAgB,CAAC,OAASC,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEC,eAAe,EAAA,CAAA,CAAA;AAEhE,QAAA,IAAI,CAACnE,MAAM,CAACiD,QAAQ,CAACmB,IAAI,CAAC,IAAI,CAAA,CAAA;AAC9B,QAAA,IAAI,CAACpE,MAAM,CAACoD,WAAW,CAACgB,IAAI,CAAC,IAAI,CAAA,CAAA;QAEjC,IAAI,CAACpE,MAAM,CAACqD,SAAS,CAACW,WAAW,CAAC,IAAI,CAAC/C,UAAU,CAAA,CAAA;QAEjD,IAAI,CAACmB,eAAe,GAAG,IAAI,CAACA,eAAe,CAACiC,IAAI,CAAC,IAAI,CAAA,CAAA;QAErD,IAAI,CAAC5E,IAAI,CAACoD,QAAAA,CAAAA,CAAAA;AAEd,KAAA;AA6RJ,CAAA;AArYarD,UAAAA,CACFqE,UAAqB,GAAA,CAAA;;ACAzB,MAAMS,gBAAyB9E,SAAAA,UAAAA,CAAAA;IA4ClCmD,aAAgB,GAAA;QACZ,MAAMJ,KAAAA,GAAQ,IAAI,CAACnC,QAAQ,EAAA,CAAA;AAC3B,QAAA,MAAMmE,QAAQ,IAAI,CAACC,OAAO,CAACrB,OAAO,CAACZ,KAAAA,CAAAA,CAAAA;AACnC,QAAA,IAAI,CAACkC,OAAO,CAACC,aAAa,GAAGH,KAAAA,CAAAA;AAC7B,QAAA,IAAI,CAACI,QAAQ,CAAC/E,SAAS,GAAG2E,KAAAA,KAAU,CAAC,CAAA,GAAIhC,KAAQ,GAAA,IAAI,CAACqC,MAAM,CAACL,KAAM,CAAA,CAAA;AACnE,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA5C,IAAAA,OAAAA,CAAQA,OAA4B,EAAE;AAClC,QAAA,IAAI,CAAC8C,OAAO,CAAC7E,SAAS,GAAG,EAAA,CAAA;QACzB,IAAI,CAAC4E,OAAO,GAAGK,KAAMC,CAAAA,OAAO,CAACnD,OAAWA,CAAAA,GAAAA,OAAAA,GAAUoD,MAAOC,CAAAA,MAAM,CAACrD,OAAAA,CAAAA,CAAAA;QAChE,IAAI,CAACiD,MAAM,GAAGC,KAAMC,CAAAA,OAAO,CAACnD,OAAWA,CAAAA,GAAAA,OAAAA,GAAUoD,MAAOE,CAAAA,IAAI,CAACtD,OAAAA,CAAAA,CAAAA;AAC7D,QAAA,IAAI,CAACiD,MAAM,CAACM,OAAO,CAACzF,CAAAA,IAAAA,GAAAA;YAChB,MAAM0F,OAAAA,GAAUzB,QAASC,CAAAA,aAAa,CAAC,QAAA,CAAA,CAAA;AACvCwB,YAAAA,OAAAA,CAAQvF,SAAS,GAAGH,IAAAA,CAAAA;AACpB,YAAA,IAAI,CAACgF,OAAO,CAACT,WAAW,CAACmB,OAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA,CAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAvDA5B,IAAAA,WAAAA,CACIvD,MAAW,EACX4C,MAAc,EACdC,QAAgB,EAChBlB,OAA4B,CAC9B;QACE,KAAK,CAAC3B,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,QAAA,CAAA,CAAA;AAEhC,QAAA,IAAI,CAAC4B,OAAO,GAAGf,QAAAA,CAASC,aAAa,CAAC,QAAA,CAAA,CAAA;QACtC,IAAI,CAACc,OAAO,CAACW,YAAY,CAAC,mBAAmB,IAAI,CAACzF,KAAK,CAACmE,EAAE,CAAA,CAAA;AAE1D,QAAA,IAAI,CAACa,QAAQ,GAAGjB,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACvC,QAAA,IAAI,CAACgB,QAAQ,CAACzD,SAAS,CAAC0C,GAAG,CAAC,SAAA,CAAA,CAAA;QAE5B,IAAI,CAACY,OAAO,GAAGK,KAAMC,CAAAA,OAAO,CAACnD,OAAWA,CAAAA,GAAAA,OAAAA,GAAUoD,MAAOC,CAAAA,MAAM,CAACrD,OAAAA,CAAAA,CAAAA;QAChE,IAAI,CAACiD,MAAM,GAAGC,KAAMC,CAAAA,OAAO,CAACnD,OAAWA,CAAAA,GAAAA,OAAAA,GAAUoD,MAAOE,CAAAA,IAAI,CAACtD,OAAAA,CAAAA,CAAAA;AAC7D,QAAA,IAAI,CAACiD,MAAM,CAACM,OAAO,CAACzF,CAAAA,IAAAA,GAAAA;YAChB,MAAM0F,OAAAA,GAAUzB,QAASC,CAAAA,aAAa,CAAC,QAAA,CAAA,CAAA;AACvCwB,YAAAA,OAAAA,CAAQvF,SAAS,GAAGH,IAAAA,CAAAA;AACpB,YAAA,IAAI,CAACgF,OAAO,CAACT,WAAW,CAACmB,OAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAACV,OAAO,CAACR,gBAAgB,CAAC,QAAU,EAAA,IAAA;AACpC,YAAA,IAAI,CAACvD,QAAQ,CAAC,IAAI,CAAC8D,OAAO,CAAC,IAAI,CAACC,OAAO,CAACC,aAAa,CAAC,CAAA,CAAA;AACtD,YAAA,IAAI,CAAClE,mBAAmB,EAAA,CAAA;AAC5B,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAACiE,OAAO,CAACR,gBAAgB,CAAC,OAAS,EAAA,IAAA;AACnC,YAAA,IAAI,CAACU,QAAQ,CAACzD,SAAS,CAAC0C,GAAG,CAAC,OAAA,CAAA,CAAA;AAChC,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAACa,OAAO,CAACR,gBAAgB,CAAC,MAAQ,EAAA,IAAA;AAClC,YAAA,IAAI,CAACU,QAAQ,CAACzD,SAAS,CAACmE,MAAM,CAAC,OAAA,CAAA,CAAA;AACnC,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACtB,OAAO,CAACC,WAAW,CAAC,IAAI,CAACS,OAAO,CAAA,CAAA;AACrC,QAAA,IAAI,CAACV,OAAO,CAACC,WAAW,CAAC,IAAI,CAACW,QAAQ,CAAA,CAAA;AACtC,QAAA,IAAI,CAACvD,QAAQ,GAAG,IAAI,CAACqD,OAAO,CAAA;AAChC,KAAA;AAqBJ;;AClEA,oCAEO,SAASa,oBAAAA,CAAqBC,MAAc,EAAA;AAClD,IAAA,IAAIC,KAAOC,EAAAA,MAAAA,CAAAA;AAEX,IAAA,IAAID,KAAQD,GAAAA,MAAAA,CAAOC,KAAK,CAAC,uBAA0B,CAAA,EAAA;QAClDC,MAASD,GAAAA,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,KAAA,MAAO,IAAIA,KAAAA,GAAQD,MAAOC,CAAAA,KAAK,CAAC,4CAA+C,CAAA,EAAA;AAC9EC,QAAAA,MAAAA,GAASC,QAASF,CAAAA,KAAK,CAAC,CAAA,CAAE,EAAEG,QAAQ,CAAC,EAAIC,CAAAA,CAAAA,QAAQ,CAAC,CAAG,EAAA,GAAA,CAAA,GAClDF,QAASF,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAEG,QAAQ,CAAC,EAAIC,CAAAA,CAAAA,QAAQ,CAAC,CAAA,EAAG,OAC5CF,QAASF,CAAAA,KAAK,CAAC,CAAA,CAAE,EAAEG,QAAQ,CAAC,EAAIC,CAAAA,CAAAA,QAAQ,CAAC,CAAG,EAAA,GAAA,CAAA,CAAA;AAChD,KAAA,MAAO,IAAIJ,KAAAA,GAAQD,MAAOC,CAAAA,KAAK,CAAC,qCAAwC,CAAA,EAAA;QACvEC,MAASD,GAAAA,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAA,CAAE,GAAGA,KAAK,CAAC,CAAA,CAAE,GAAGA,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAE,CAAA,CAAA;AACzE,KAAA;AAEA,IAAA,IAAIC,MAAQ,EAAA;AACX,QAAA,OAAO,GAAMA,GAAAA,MAAAA,CAAAA;AACd,KAAA;IAEA,OAAO,KAAA,CAAA;AAER;;ACnBA,MAAMI,MAAS,GAAA;IACdC,WAAa,EAAA,IAAA;IACbN,KAAOO,EAAAA,CAAAA,CAAK,GAAA,OAAOA,CAAM,KAAA,QAAA;IACzBC,aAAeV,EAAAA,oBAAAA;IACfW,WAAaX,EAAAA,oBAAAA;AACd,CAAA,CAAA;AAEA,MAAMY,GAAM,GAAA;IACXJ,WAAa,EAAA,IAAA;IACbN,KAAOO,EAAAA,CAAAA,CAAK,GAAA,OAAOA,CAAM,KAAA,QAAA;AACzBC,IAAAA,aAAAA,EAAeT,CAAAA,MAAUG,GAAAA,QAAAA,CAASH,MAAOY,CAAAA,SAAS,CAAC,CAAI,CAAA,EAAA,EAAA,CAAA;IACvDF,WAAa1D,EAAAA,CAAAA,QAAS,GAAMA,GAAAA,KAAAA,CAAMoD,QAAQ,CAAC,EAAA,CAAA,CAAIC,QAAQ,CAAC,CAAG,EAAA,CAAA,CAAA;AAC5D,CAAA,CAAA;AAEA,MAAMQ,KAAQ,GAAA;IACbN,WAAa,EAAA,KAAA;;;AAIbN,IAAAA,KAAAA,EAAOO,CAAAA,CAAAA,GAAKlB,KAAMC,CAAAA,OAAO,CAACiB,CAAAA,CAAAA;AAE1BC,IAAAA,aAAAA,CAAAA,CAAcT,MAAM,EAAEc,MAAM,EAAEC,WAAW,CAAC,EAAA;QAEzC,MAAMC,GAAAA,GAAML,GAAIF,CAAAA,aAAa,CAACT,MAAAA,CAAAA,CAAAA;QAE9Bc,MAAM,CAAC,EAAE,GAAIE,CAAAA,GAAO,IAAA,EAAA,GAAK,GAAE,IAAK,GAAMD,GAAAA,QAAAA,CAAAA;QACtCD,MAAM,CAAC,EAAE,GAAIE,CAAAA,GAAO,IAAA,CAAA,GAAI,GAAE,IAAK,GAAMD,GAAAA,QAAAA,CAAAA;QACrCD,MAAM,CAAC,EAAE,GAAIE,CAAAA,GAAM,GAAA,GAAE,IAAK,GAAMD,GAAAA,QAAAA,CAAAA;AAEjC,KAAA;AACAL,IAAAA,WAAAA,CAAAA,CAAY,CAACO,CAAGC,EAAAA,CAAAA,EAAGC,CAAE,CAAA,EAAEJ,WAAW,CAAC,EAAA;AAElCA,QAAAA,QAAAA,GAAW,GAAMA,GAAAA,QAAAA,CAAAA;QAEjB,MAAMC,GAAAA,GAAM,CAACC,GAAIF,QAAa,IAAA,EAAA,GAC7B,CAACG,GAAIH,QAAa,IAAA,CAAA,GAClB,CAACI,GAAIJ,QAAa,IAAA,CAAA,CAAA;QAEnB,OAAOJ,GAAAA,CAAID,WAAW,CAACM,GAAAA,CAAAA,CAAAA;AAExB,KAAA;AACD,CAAA,CAAA;AAEA,MAAMI,MAAS,GAAA;IACdb,WAAa,EAAA,KAAA;IACbN,KAAOO,EAAAA,CAAAA,CAAKhB,GAAAA,MAAAA,CAAOgB,CAAOA,CAAAA,KAAAA,CAAAA;AAC1BC,IAAAA,aAAAA,CAAAA,CAAcT,MAAM,EAAEc,MAAM,EAAEC,WAAW,CAAC,EAAA;QAEzC,MAAMC,GAAAA,GAAML,GAAIF,CAAAA,aAAa,CAACT,MAAAA,CAAAA,CAAAA;QAE9Bc,MAAOG,CAAAA,CAAC,GAAG,CAACD,OAAO,EAAK,GAAA,GAAE,IAAK,GAAMD,GAAAA,QAAAA,CAAAA;QACrCD,MAAOI,CAAAA,CAAC,GAAG,CAACF,OAAO,CAAI,GAAA,GAAE,IAAK,GAAMD,GAAAA,QAAAA,CAAAA;AACpCD,QAAAA,MAAAA,CAAOK,CAAC,GAAIH,CAAAA,GAAM,GAAA,GAAE,IAAK,GAAMD,GAAAA,QAAAA,CAAAA;AAEhC,KAAA;IACAL,WAAY,CAAA,CAAA,EAAEO,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE,EAAEJ,QAAAA,GAAW,CAAC,EAAA;AAEpCA,QAAAA,QAAAA,GAAW,GAAMA,GAAAA,QAAAA,CAAAA;QAEjB,MAAMC,GAAAA,GAAM,CAACC,GAAIF,QAAa,IAAA,EAAA,GAC7B,CAACG,GAAIH,QAAa,IAAA,CAAA,GAClB,CAACI,GAAIJ,QAAa,IAAA,CAAA,CAAA;QAEnB,OAAOJ,GAAAA,CAAID,WAAW,CAACM,GAAAA,CAAAA,CAAAA;AAExB,KAAA;AACD,CAAA,CAAA;AAEA,MAAMK,OAAU,GAAA;AAACf,IAAAA,MAAAA;AAAQK,IAAAA,GAAAA;AAAKE,IAAAA,KAAAA;AAAOO,IAAAA,MAAAA;AAAO,CAAA,CAAA;AAErC,SAASE,eAAetE,KAAK,EAAA;AACnC,IAAA,OAAOqE,QAAQE,IAAI,CAACC,CAAAA,MAAUA,GAAAA,MAAAA,CAAOvB,KAAK,CAACjD,KAAAA,CAAAA,CAAAA,CAAAA;AAC5C;;AC/DO,SAASyE,aAAazE,KAAa,EAAA;IACzC,IAAI0E,GAAAA,GAAM1E,MAAMoD,QAAQ,EAAA,CAAA;IACxB,IAAIpB,KAAAA,GAAQ0C,GAAI9D,CAAAA,OAAO,CAAC,GAAA,CAAA,CAAA;AACxB,IAAA,IAAIoB,QAAQ,CAAG,EAAA;QACd,OAAO0C,GAAAA,CAAIC,MAAM,GAAG3C,KAAQ,GAAA,CAAA,CAAA;AAC7B,KAAA;IACA,OAAO,CAAA,CAAA;AACR,CAAA;AAEO,SAAS4C,WAAW5E,KAAa,EAAA;AACvC,IAAA,OAAOA,QAAQ,CAAM,KAAA,CAAA,CAAA;AACtB;;AClBO,MAAM6E,gBAAyB5H,SAAAA,UAAAA,CAAAA;AAiClCoC,IAAAA,GAAAA,CAAIA,GAAW,EAAE;QACb,IAAI,CAACyF,IAAI,GAAGzF,GAAAA,CAAAA;AACZ,QAAA,IAAI,CAAC0F,eAAe,EAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAzF,IAAAA,GAAAA,CAAIA,GAAW,EAAE;QACb,IAAI,CAAC0F,IAAI,GAAG1F,GAAAA,CAAAA;AACZ,QAAA,IAAI,CAACyF,eAAe,EAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAxF,IAAAA,IAAAA,CAAKA,IAAY,EAAE0F,QAAoB,GAAA,IAAI,EAAE;QACzC,IAAI,CAACC,KAAK,GAAG3F,IAAAA,CAAAA;QACb,IAAI,CAAC4F,aAAa,GAAGF,QAAAA,CAAAA;AACrB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAG,kBAAqB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC3H,MAAM,CAACsC,OAAO,EAAE;YACrB,OAAO,KAAA,CAAA;AACX,SAAA;QACA,IAAIC,KAAAA,GAAQ,IAAI,CAACnC,QAAQ,EAAA,CAAA;AACzB,QAAA,IAAI,IAAI,CAACqC,gBAAgB,KAAKvC,SAAAA,IAAc0H,KAAKC,GAAG,CAAC,IAAI,CAACpF,gBAAgB,GAAGF,KAAAA,CAAAA,IAAU,IAAI,CAACkF,KAAK,EAAG;YAChG,IAAI,CAAChF,gBAAgB,GAAGF,KAAAA,CAAAA;YACxB,OAAO,IAAA,CAAA;AACX,SAAA;QACA,OAAO,KAAA,CAAA;AACX,KAAA;IAEAI,aAAgB,GAAA;AACZ,QAAA,MAAMJ,QAAQ,IAAI,CAACuF,KAAK,CAAC,IAAI,CAAC1H,QAAQ,EAAA,CAAA,CAAA;QACtC,IAAI,IAAI,CAAC2H,UAAU,EAAE;AACjB,YAAA,IAAIC,UAAU,CAACzF,KAAQ,GAAA,IAAI,CAAC8E,IAAG,KAAM,IAAI,CAACE,IAAI,GAAG,IAAI,CAACF,IAAI,CAAD,CAAA;AACzDW,YAAAA,OAAAA,GAAUJ,KAAK/F,GAAG,CAAC,GAAG+F,IAAKhG,CAAAA,GAAG,CAACoG,OAAS,EAAA,CAAA,CAAA,CAAA,CAAA;YACxC,IAAI,CAACC,KAAK,CAACzG,KAAK,CAAC0G,KAAK,GAAGF,UAAU,GAAM,GAAA,GAAA,CAAA;AAC7C,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACG,aAAa,EAAE;AACrB,YAAA,IAAI,CAACC,MAAM,CAAC7F,KAAK,GAAG,EAAKA,GAAAA,KAAAA,CAAAA;AAC7B,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEQ8F,UAAa,GAAA;AACjB,QAAA,IAAI,CAACD,MAAM,GAAG1E,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;AACrC,QAAA,IAAI,CAACyE,MAAM,CAAChD,YAAY,CAAC,MAAQ,EAAA,MAAA,CAAA,CAAA;QACjC,IAAI,CAACgD,MAAM,CAAChD,YAAY,CAAC,mBAAmB,IAAI,CAACzF,KAAK,CAACmE,EAAE,CAAA,CAAA;;;;;AAOzD,QAAA,MAAMwE,OAAUC,GAAAA,MAAAA,CAAOC,UAAU,CAAC,qBAAqBC,OAAO,CAAA;AAE9D,QAAA,IAAIH,OAAS,EAAA;AACT,YAAA,IAAI,CAACF,MAAM,CAAChD,YAAY,CAAC,MAAQ,EAAA,QAAA,CAAA,CAAA;AACjC,YAAA,IAAI,CAACgD,MAAM,CAAChD,YAAY,CAAC,MAAQ,EAAA,KAAA,CAAA,CAAA;AACrC,SAAA;AAEA,QAAA,IAAI,CAACrB,OAAO,CAACC,WAAW,CAAC,IAAI,CAACoE,MAAM,CAAA,CAAA;AAEpC,QAAA,IAAI,CAAChH,QAAQ,GAAG,IAAI,CAACgH,MAAM,CAAA;AAE3B,QAAA,MAAMM,OAAU,GAAA,IAAA;AACZ,YAAA,IAAInG,QAAQoG,UAAW,CAAA,IAAI,CAACP,MAAM,CAAC7F,KAAK,CAAA,CAAA;AACxC,YAAA,IAAIqG,MAAMrG,KAAQ,CAAA,EAAA,OAAA;YAClB,IAAI,IAAI,CAACmF,aAAa,EAAE;gBACpBnF,KAAQ,GAAA,IAAI,CAACuF,KAAK,CAACvF,KAAAA,CAAAA,CAAAA;AACvB,aAAA;AACA,YAAA,IAAI,CAAC7B,QAAQ,CAAC,IAAI,CAACmI,MAAM,CAACtG,KAAAA,CAAAA,CAAAA,CAAAA;AAC9B,SAAA,CAAA;;;AAIA,QAAA,MAAMuG,YAAYC,CAAAA,KAAAA,GAAAA;AACd,YAAA,MAAMxG,QAAQoG,UAAW,CAAA,IAAI,CAACP,MAAM,CAAC7F,KAAK,CAAA,CAAA;AAC1C,YAAA,IAAIqG,MAAMrG,KAAQ,CAAA,EAAA,OAAA;YAClB,IAAI,CAACyG,kBAAkB,CAACzG,KAAQwG,GAAAA,KAAAA,CAAAA,CAAAA;;AAEhC,YAAA,IAAI,CAACX,MAAM,CAAC7F,KAAK,GAAG,IAAI,CAACnC,QAAQ,EAAA,CAAA;AACrC,SAAA,CAAA;AAEA,QAAA,MAAM6I,YAAY/E,CAAAA,CAAAA,GAAAA;;YAEd,IAAIA,CAAAA,CAAEgF,GAAG,KAAK,OAAS,EAAA;gBACnB,IAAI,CAACd,MAAM,CAACe,IAAI,EAAA,CAAA;AACpB,aAAA;YACA,IAAIjF,CAAAA,CAAEkF,IAAI,KAAK,SAAW,EAAA;AACtBlF,gBAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;AAChBP,gBAAAA,SAAAA,CAAU,IAAI,CAACrB,KAAK,GAAG,IAAI,CAAC6B,mBAAmB,CAACpF,CAAAA,CAAAA,CAAAA,CAAAA;AACpD,aAAA;YACA,IAAIA,CAAAA,CAAEkF,IAAI,KAAK,WAAa,EAAA;AACxBlF,gBAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;gBAChBP,SAAU,CAAA,IAAI,CAACrB,KAAK,GAAG,IAAI,CAAC6B,mBAAmB,CAACpF,CAAAA,CAAAA,GAAK,CAAC,CAAA,CAAA,CAAA;AAC1D,aAAA;AACJ,SAAA,CAAA;AAEA,QAAA,MAAMqF,UAAUrF,CAAAA,CAAAA,GAAAA;YACZ,IAAI,IAAI,CAACiE,aAAa,EAAE;AACpBjE,gBAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;AAChBP,gBAAAA,SAAAA,CAAU,IAAI,CAACrB,KAAK,GAAG,IAAI,CAAC+B,oBAAoB,CAACtF,CAAAA,CAAAA,CAAAA,CAAAA;AACrD,aAAA;AACJ,SAAA,CAAA;;;AAKA,QAAA,IAAIuF,sBAAyB,GAAA,KAAA,EACzBC,WACAC,EAAAA,WAAAA,EACAC,aACAC,SACAC,EAAAA,SAAAA,CAAAA;;;AAIJ,QAAA,MAAMC,WAAc,GAAA,CAAA,CAAA;AAEpB,QAAA,MAAMC,cAAc9F,CAAAA,CAAAA,GAAAA;AAEhBwF,YAAAA,WAAAA,GAAcxF,EAAE+F,OAAO,CAAA;YACvBN,WAAcC,GAAAA,WAAAA,GAAc1F,EAAEgG,OAAO,CAAA;YACrCT,sBAAyB,GAAA,IAAA,CAAA;YAEzBI,SAAY,GAAA,IAAI,CAACzJ,QAAQ,EAAA,CAAA;YACzB0J,SAAY,GAAA,CAAA,CAAA;YAEZvB,MAAOtE,CAAAA,gBAAgB,CAAC,WAAakG,EAAAA,WAAAA,CAAAA,CAAAA;YACrC5B,MAAOtE,CAAAA,gBAAgB,CAAC,SAAWmG,EAAAA,SAAAA,CAAAA,CAAAA;AAEvC,SAAA,CAAA;AAEA,QAAA,MAAMD,cAAcjG,CAAAA,CAAAA,GAAAA;AAChB,YAAA,IAAIuF,sBAAwB,EAAA;gBACxB,MAAMY,EAAAA,GAAKnG,CAAE+F,CAAAA,OAAO,GAAGP,WAAAA,CAAAA;gBACvB,MAAMY,EAAAA,GAAKpG,CAAEgG,CAAAA,OAAO,GAAGP,WAAAA,CAAAA;AACvB,gBAAA,IAAI/B,IAAKC,CAAAA,GAAG,CAACyC,EAAAA,CAAAA,GAAMP,WAAa,EAAA;AAC5B7F,oBAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;oBAChB,IAAI,CAACjB,MAAM,CAACe,IAAI,EAAA,CAAA;oBAChBM,sBAAyB,GAAA,KAAA,CAAA;oBACzB,IAAI,CAACc,iBAAiB,CAAC,IAAM,EAAA,UAAA,CAAA,CAAA;AACjC,iBAAA,MAAO,IAAI3C,IAAAA,CAAKC,GAAG,CAACwC,MAAMN,WAAa,EAAA;AACnCK,oBAAAA,SAAAA,EAAAA,CAAAA;AACJ,iBAAA;AACJ,aAAA;;AAGA,YAAA,IAAI,CAACX,sBAAwB,EAAA;gBACzB,MAAMa,EAAAA,GAAKpG,CAAEgG,CAAAA,OAAO,GAAGN,WAAAA,CAAAA;gBACvBE,SAAaQ,IAAAA,EAAAA,GAAK,IAAI,CAAC7C,KAAK,GAAG,IAAI,CAAC6B,mBAAmB,CAACpF,CAAAA,CAAAA,CAAAA;;;AAIxD,gBAAA,IAAI2F,SAAYC,GAAAA,SAAAA,GAAY,IAAI,CAACvC,IAAI,EAAE;oBACnCuC,SAAY,GAAA,IAAI,CAACvC,IAAI,GAAGsC,SAAAA,CAAAA;AAC5B,iBAAA,MAAO,IAAIA,SAAYC,GAAAA,SAAAA,GAAY,IAAI,CAACzC,IAAI,EAAE;oBAC1CyC,SAAY,GAAA,IAAI,CAACzC,IAAI,GAAGwC,SAAAA,CAAAA;AAC5B,iBAAA;gBAEA,IAAI,CAACb,kBAAkB,CAACa,SAAYC,GAAAA,SAAAA,CAAAA,CAAAA;AAExC,aAAA;AAEAF,YAAAA,WAAAA,GAAc1F,EAAEgG,OAAO,CAAA;AAE3B,SAAA,CAAA;AAEA,QAAA,MAAME,SAAY,GAAA,IAAA;YACd,IAAI,CAACG,iBAAiB,CAAC,KAAO,EAAA,UAAA,CAAA,CAAA;AAC9B,YAAA,IAAI,CAAC/J,mBAAmB,EAAA,CAAA;YACxB+H,MAAOiC,CAAAA,mBAAmB,CAAC,WAAaL,EAAAA,WAAAA,CAAAA,CAAAA;YACxC5B,MAAOiC,CAAAA,mBAAmB,CAAC,SAAWJ,EAAAA,SAAAA,CAAAA,CAAAA;AAC1C,SAAA,CAAA;;;AAKA,QAAA,MAAMK,OAAU,GAAA,IAAA;YACZ,IAAI,CAACtC,aAAa,GAAG,IAAA,CAAA;AACzB,SAAA,CAAA;AAEA,QAAA,MAAMuC,MAAS,GAAA,IAAA;YACX,IAAI,CAACvC,aAAa,GAAG,KAAA,CAAA;AACrB,YAAA,IAAI,CAACxF,aAAa,EAAA,CAAA;AAClB,YAAA,IAAI,CAACnC,mBAAmB,EAAA,CAAA;AAC5B,SAAA,CAAA;AAEA,QAAA,IAAI,CAAC4H,MAAM,CAACnE,gBAAgB,CAAC,OAASyE,EAAAA,OAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAI,CAACN,MAAM,CAACnE,gBAAgB,CAAC,SAAWgF,EAAAA,SAAAA,CAAAA,CAAAA;AACxC,QAAA,IAAI,CAACb,MAAM,CAACnE,gBAAgB,CAAC,SAASsF,OAAS,EAAA;YAAEoB,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;AAChE,QAAA,IAAI,CAACvC,MAAM,CAACnE,gBAAgB,CAAC,WAAa+F,EAAAA,WAAAA,CAAAA,CAAAA;AAC1C,QAAA,IAAI,CAAC5B,MAAM,CAACnE,gBAAgB,CAAC,OAASwG,EAAAA,OAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAI,CAACrC,MAAM,CAACnE,gBAAgB,CAAC,MAAQyG,EAAAA,MAAAA,CAAAA,CAAAA;AAEzC,KAAA;IAEQE,WAAc,GAAA;QAClB,IAAI,CAAC7C,UAAU,GAAG,IAAA,CAAA;;;AAKlB,QAAA,IAAI,CAAC8C,OAAO,GAAGnH,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAACkH,OAAO,CAAC3J,SAAS,CAAC0C,GAAG,CAAC,QAAA,CAAA,CAAA;AAE3B,QAAA,IAAI,CAACqE,KAAK,GAAGvE,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACpC,QAAA,IAAI,CAACsE,KAAK,CAAC/G,SAAS,CAAC0C,GAAG,CAAC,MAAA,CAAA,CAAA;AAEzB,QAAA,IAAI,CAACiH,OAAO,CAAC7G,WAAW,CAAC,IAAI,CAACiE,KAAK,CAAA,CAAA;QACnC,IAAI,CAAClE,OAAO,CAAC+G,YAAY,CAAC,IAAI,CAACD,OAAO,EAAE,IAAI,CAACzC,MAAM,CAAA,CAAA;AAEnD,QAAA,IAAI,CAACnH,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAAC,WAAA,CAAA,CAAA;;;AAK9B,QAAA,MAAMmH,GAAM,GAAA,CAAChF,CAAGiF,EAAAA,CAAAA,EAAGtE,GAAGuE,CAAGC,EAAAA,CAAAA,GAAAA;AACrB,YAAA,OAAO,CAACnF,CAAIiF,GAAAA,CAAAA,KAAMtE,CAAIsE,GAAAA,CAAAA,CAAME,IAAAA,CAAID,GAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAAA;AACzC,SAAA,CAAA;AAEA,QAAA,MAAME,gBAAgBlB,CAAAA,OAAAA,GAAAA;AAClB,YAAA,MAAMmB,IAAO,GAAA,IAAI,CAACP,OAAO,CAACQ,qBAAqB,EAAA,CAAA;AAC/C,YAAA,IAAI9I,KAAQwI,GAAAA,GAAAA,CAAId,OAASmB,EAAAA,IAAAA,CAAKE,IAAI,EAAEF,IAAAA,CAAKG,KAAK,EAAE,IAAI,CAAClE,IAAI,EAAE,IAAI,CAACE,IAAI,CAAA,CAAA;YACpE,IAAI,CAACyB,kBAAkB,CAACzG,KAAAA,CAAAA,CAAAA;AAC5B,SAAA,CAAA;;;AAKA,QAAA,MAAMiJ,YAAYtH,CAAAA,CAAAA,GAAAA;YACd,IAAI,CAACqG,iBAAiB,CAAC,IAAA,CAAA,CAAA;AACvBY,YAAAA,aAAAA,CAAcjH,EAAE+F,OAAO,CAAA,CAAA;YACvB1B,MAAOtE,CAAAA,gBAAgB,CAAC,WAAawH,EAAAA,SAAAA,CAAAA,CAAAA;YACrClD,MAAOtE,CAAAA,gBAAgB,CAAC,SAAWyH,EAAAA,OAAAA,CAAAA,CAAAA;AACvC,SAAA,CAAA;AAEA,QAAA,MAAMD,YAAYvH,CAAAA,CAAAA,GAAAA;AACdiH,YAAAA,aAAAA,CAAcjH,EAAE+F,OAAO,CAAA,CAAA;AAC3B,SAAA,CAAA;AAEA,QAAA,MAAMyB,OAAU,GAAA,IAAA;AACZ,YAAA,IAAI,CAAClL,mBAAmB,EAAA,CAAA;YACxB,IAAI,CAAC+J,iBAAiB,CAAC,KAAA,CAAA,CAAA;YACvBhC,MAAOiC,CAAAA,mBAAmB,CAAC,WAAaiB,EAAAA,SAAAA,CAAAA,CAAAA;YACxClD,MAAOiC,CAAAA,mBAAmB,CAAC,SAAWkB,EAAAA,OAAAA,CAAAA,CAAAA;AAC1C,SAAA,CAAA;;;QAKA,IAAIC,gBAAAA,GAAmB,OAAOC,WAAahC,EAAAA,WAAAA,CAAAA;AAE3C,QAAA,MAAMiC,iBAAiB3H,CAAAA,CAAAA,GAAAA;AACnBA,YAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;YAChB,IAAI,CAACkB,iBAAiB,CAAC,IAAA,CAAA,CAAA;AACvBY,YAAAA,aAAAA,CAAcjH,CAAE4H,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAC7B,OAAO,CAAA,CAAA;YAClC0B,gBAAmB,GAAA,KAAA,CAAA;AACvB,SAAA,CAAA;AAEA,QAAA,MAAMI,eAAe7H,CAAAA,CAAAA,GAAAA;AAEjB,YAAA,IAAIA,CAAE4H,CAAAA,OAAO,CAAC5E,MAAM,GAAG,CAAG,EAAA,OAAA;;;YAI1B,IAAI,IAAI,CAAC8E,aAAa,EAAE;AAEpBJ,gBAAAA,WAAAA,GAAc1H,CAAE4H,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAC7B,OAAO,CAAA;AAClCL,gBAAAA,WAAAA,GAAc1F,CAAE4H,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAC5B,OAAO,CAAA;gBAClCyB,gBAAmB,GAAA,IAAA,CAAA;aAEhB,MAAA;;gBAGHE,cAAe3H,CAAAA,CAAAA,CAAAA,CAAAA;AAEnB,aAAA;YAEAqE,MAAOtE,CAAAA,gBAAgB,CAAC,WAAA,EAAagI,WAAa,EAAA;gBAAEtB,OAAS,EAAA,KAAA;AAAM,aAAA,CAAA,CAAA;YACnEpC,MAAOtE,CAAAA,gBAAgB,CAAC,UAAYiI,EAAAA,UAAAA,CAAAA,CAAAA;AAExC,SAAA,CAAA;AAEA,QAAA,MAAMD,cAAc/H,CAAAA,CAAAA,GAAAA;AAEhB,YAAA,IAAIyH,gBAAkB,EAAA;AAElB,gBAAA,MAAMtB,KAAKnG,CAAE4H,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAC7B,OAAO,GAAG2B,WAAAA,CAAAA;AAClC,gBAAA,MAAMtB,KAAKpG,CAAE4H,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAC5B,OAAO,GAAGN,WAAAA,CAAAA;AAElC,gBAAA,IAAIhC,KAAKC,GAAG,CAACwC,MAAMzC,IAAKC,CAAAA,GAAG,CAACyC,EAAK,CAAA,EAAA;;oBAG7BuB,cAAe3H,CAAAA,CAAAA,CAAAA,CAAAA;iBAEZ,MAAA;;oBAGHqE,MAAOiC,CAAAA,mBAAmB,CAAC,WAAayB,EAAAA,WAAAA,CAAAA,CAAAA;oBACxC1D,MAAOiC,CAAAA,mBAAmB,CAAC,UAAY0B,EAAAA,UAAAA,CAAAA,CAAAA;AAE3C,iBAAA;aAEG,MAAA;AAEHhI,gBAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;AAChB8B,gBAAAA,aAAAA,CAAcjH,CAAE4H,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAC7B,OAAO,CAAA,CAAA;AAEtC,aAAA;AAEJ,SAAA,CAAA;AAEA,QAAA,MAAMiC,UAAa,GAAA,IAAA;AACf,YAAA,IAAI,CAAC1L,mBAAmB,EAAA,CAAA;YACxB,IAAI,CAAC+J,iBAAiB,CAAC,KAAA,CAAA,CAAA;YACvBhC,MAAOiC,CAAAA,mBAAmB,CAAC,WAAayB,EAAAA,WAAAA,CAAAA,CAAAA;YACxC1D,MAAOiC,CAAAA,mBAAmB,CAAC,UAAY0B,EAAAA,UAAAA,CAAAA,CAAAA;AAC3C,SAAA,CAAA;;;;;AAOA,QAAA,MAAMC,qBAAqB,IAAI,CAAC3L,mBAAmB,CAAC6D,IAAI,CAAC,IAAI,CAAA,CAAA;AAC7D,QAAA,MAAM+H,mBAAsB,GAAA,GAAA,CAAA;QAC5B,IAAIC,wBAAAA,CAAAA;AAEJ,QAAA,MAAM9C,UAAUrF,CAAAA,CAAAA,GAAAA;;YAGZ,MAAMoI,UAAAA,GAAa1E,IAAKC,CAAAA,GAAG,CAAC3D,CAAAA,CAAEqI,MAAM,CAAA,GAAI3E,IAAKC,CAAAA,GAAG,CAAC3D,CAAAA,CAAEsI,MAAM,CAAA,CAAA;AACzD,YAAA,IAAIF,UAAc,IAAA,IAAI,CAACN,aAAa,EAAE,OAAA;AAEtC9H,YAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;;YAGhB,MAAMN,KAAAA,GAAQ,IAAI,CAACS,oBAAoB,CAACtF,CAAK,CAAA,GAAA,IAAI,CAACuD,KAAK,CAAA;AACvD,YAAA,IAAI,CAACuB,kBAAkB,CAAC,IAAI,CAAC5I,QAAQ,EAAK2I,GAAAA,KAAAA,CAAAA,CAAAA;;AAG1C,YAAA,IAAI,CAACX,MAAM,CAAC7F,KAAK,GAAG,IAAI,CAACnC,QAAQ,EAAA,CAAA;;YAGjCqM,YAAaJ,CAAAA,wBAAAA,CAAAA,CAAAA;AACbA,YAAAA,wBAAAA,GAA2BK,WAAWP,kBAAoBC,EAAAA,mBAAAA,CAAAA,CAAAA;AAE9D,SAAA,CAAA;AAEA,QAAA,IAAI,CAACvB,OAAO,CAAC5G,gBAAgB,CAAC,WAAauH,EAAAA,SAAAA,CAAAA,CAAAA;AAC3C,QAAA,IAAI,CAACX,OAAO,CAAC5G,gBAAgB,CAAC,cAAc8H,YAAc,EAAA;YAAEpB,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;AAC3E,QAAA,IAAI,CAACE,OAAO,CAAC5G,gBAAgB,CAAC,SAASsF,OAAS,EAAA;YAAEoB,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;AAErE,KAAA;AAEQJ,IAAAA,iBAAAA,CAAkBoC,MAAM,EAAEC,IAAO,GAAA,YAAY,EAAE;QACnD,IAAI,IAAI,CAAC/B,OAAO,EAAE;AACd,YAAA,IAAI,CAACA,OAAO,CAAC3J,SAAS,CAACC,MAAM,CAAC,QAAUwL,EAAAA,MAAAA,CAAAA,CAAAA;AAC5C,SAAA;AACAjJ,QAAAA,QAAAA,CAASmJ,IAAI,CAAC3L,SAAS,CAACC,MAAM,CAAC,kBAAoBwL,EAAAA,MAAAA,CAAAA,CAAAA;QACnDjJ,QAASmJ,CAAAA,IAAI,CAAC3L,SAAS,CAACC,MAAM,CAAC,CAAC,QAAQ,EAAEyL,IAAK,CAAA,CAAC,EAAED,MAAAA,CAAAA,CAAAA;AACtD,KAAA;IAEQG,gBAAmB,GAAA;QACvB,MAAMvK,KAAAA,GAAQ,IAAI,CAACnC,QAAQ,EAAA,CAAA;AAC3B,QAAA,IAAI,IAAI,CAAC2M,OAAO,IAAI,IAAI,CAACC,OAAO,EAAE;YAC9B,OAAQ,CAAA,IAAI,CAACzF,IAAI,GAAG,IAAI,CAACF,IAAG,IAAK,GAAA,CAAA;SAEhC,MAAA,IAAIF,WAAW5E,KAAQ,CAAA,EAAA;AACxB,YAAA,OAAOqF,IAAKqF,CAAAA,GAAG,CAAC,GAAA,EAAKjG,YAAazE,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACtC,SAAA;QACA,OAAO,GAAA,CAAA;AACX,KAAA;IAEQ+E,eAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAACS,UAAU,IAAI,IAAI,CAACgF,OAAO,IAAI,IAAI,CAACC,OAAO,EAAE;;;;AAIlD,YAAA,IAAI,CAAC,IAAI,CAACtF,aAAa,EAAE;AACrB,gBAAA,IAAI,CAAC5F,IAAI,CAAC,IAAI,CAACgL,gBAAgB,EAAI,EAAA,KAAA,CAAA,CAAA;AACvC,aAAA;AAEA,YAAA,IAAI,CAAClC,WAAW,EAAA,CAAA;AAChB,YAAA,IAAI,CAACjI,aAAa,EAAA,CAAA;AACtB,SAAA;AACJ,KAAA;AAEQ6G,IAAAA,oBAAAA,CAAqBtF,CAAC,EAAE;AAC5B,QAAA,IAAI,EAAEqI,MAAM,EAAEC,MAAM,EAAE,GAAGtI,CAAAA,CAAAA;;;;QAIzB,IAAI0D,IAAAA,CAAKsF,KAAK,CAAChJ,CAAEsI,CAAAA,MAAM,CAAMtI,KAAAA,CAAAA,CAAEsI,MAAM,IAAItI,CAAEiJ,CAAAA,UAAU,EAAE;YACnDZ,MAAS,GAAA,CAAA,CAAA;YACTC,MAAS,GAAA,CAACtI,CAAEiJ,CAAAA,UAAU,GAAG,GAAA,CAAA;AACzBX,YAAAA,MAAAA,IAAU,IAAI,CAAC9E,aAAa,GAAG,CAAI,GAAA,EAAA,CAAA;AACvC,SAAA;QACA,MAAM0F,KAAAA,GAAQb,SAAS,CAACC,MAAAA,CAAAA;QACxB,OAAOY,KAAAA,CAAAA;AAEX,KAAA;AAEQ9D,IAAAA,mBAAAA,CAAoBpF,CAAC,EAAE;AAC3B,QAAA,IAAImJ,IAAO,GAAA,IAAI,CAAC3F,aAAa,GAAG,CAAI,GAAA,EAAA,CAAA;QACpC,IAAIxD,CAAAA,CAAEoJ,QAAQ,EAAE;YACZD,IAAQ,IAAA,EAAA,CAAA;SACL,MAAA,IAAInJ,CAAEqJ,CAAAA,MAAM,EAAE;YACjBF,IAAQ,IAAA,EAAA,CAAA;AACZ,SAAA;QACA,OAAOA,IAAAA,CAAAA;AAEX,KAAA;AAEQvF,IAAAA,KAAAA,CAAMvF,KAAK,EAAE;;;;;;;QASjB,MAAMiE,CAAAA,GAAIoB,IAAK4F,CAAAA,KAAK,CAACjL,KAAAA,GAAQ,IAAI,CAACkF,KAAK,CAAA,GAAI,IAAI,CAACA,KAAK,CAAA;QACrD,OAAOkB,UAAAA,CAAWnC,CAAEiH,CAAAA,WAAW,CAAC,EAAA,CAAA,CAAA,CAAA;AACpC,KAAA;AAEQ5E,IAAAA,MAAAA,CAAOtG,KAAK,EAAE;;QAElB,IAAIA,KAAAA,GAAQ,IAAI,CAAC8E,IAAI,EAAE9E,KAAQ,GAAA,IAAI,CAAC8E,IAAI,CAAA;QACxC,IAAI9E,KAAAA,GAAQ,IAAI,CAACgF,IAAI,EAAEhF,KAAQ,GAAA,IAAI,CAACgF,IAAI,CAAA;QACxC,OAAOhF,KAAAA,CAAAA;AACX,KAAA;AAEQyG,IAAAA,kBAAAA,CAAmBzG,KAAK,EAAE;QAC9B,IAAI,CAAC7B,QAAQ,CAAC,IAAI,CAACmI,MAAM,CAAC,IAAI,CAACf,KAAK,CAACvF,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACzC,KAAA;AAEA,IAAA,IAAYyJ,aAAgB,GAAA;AACxB,QAAA,MAAM0B,OAAO,IAAI,CAAC1N,MAAM,CAAC0N,IAAI,CAACrK,SAAS,CAAA;AACvC,QAAA,OAAOqK,IAAKC,CAAAA,YAAY,GAAGD,IAAAA,CAAKE,YAAY,CAAA;AAChD,KAAA;AAEA,IAAA,IAAYb,OAAU,GAAA;QAClB,OAAO,IAAI,CAAC1F,IAAI,KAAKnH,SAAAA,CAAAA;AACzB,KAAA;AAEA,IAAA,IAAY8M,OAAU,GAAA;QAClB,OAAO,IAAI,CAACzF,IAAI,KAAKrH,SAAAA,CAAAA;AACzB,KAAA;IAtdAqD,WACIvD,CAAAA,MAAW,EACX4C,MAAc,EACdC,QAAgB,EAChBjB,GAAW,EACXC,GAAW,EACXC,IAAY,CACd;QAEE,KAAK,CAAC9B,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,QAAA,CAAA,CAAA;AAEhC,QAAA,IAAI,CAACwF,UAAU,EAAA,CAAA;QAEf,IAAI,CAACzG,GAAG,CAACA,GAAAA,CAAAA,CAAAA;QACT,IAAI,CAACC,GAAG,CAACA,GAAAA,CAAAA,CAAAA;AAET,QAAA,MAAMgM,eAAe/L,IAAS5B,KAAAA,SAAAA,CAAAA;QAC9B,IAAI,CAAC4B,IAAI,CAAC+L,YAAAA,GAAe/L,OAAO,IAAI,CAACgL,gBAAgB,EAAIe,EAAAA,YAAAA,CAAAA,CAAAA;AAC7D,KAAA;AAscJ;;ACteO,MAAMC,iBAA0BtO,SAAAA,UAAAA,CAAAA;IAsBnCmD,aAAgB,GAAA;AACZ,QAAA,IAAI,CAACyF,MAAM,CAAC2F,OAAO,GAAG,IAAI,CAAC3N,QAAQ,EAAA,CAAA;AACnC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAtBAmD,IAAAA,WAAAA,CACIvD,MAAW,EACX4C,MAAc,EACdC,QAAgB,CAClB;AACE,QAAA,KAAK,CAAC7C,MAAAA,EAAQ4C,MAAQC,EAAAA,QAAAA,EAAU,SAAW,EAAA,OAAA,CAAA,CAAA;AAE3C,QAAA,IAAI,CAACuF,MAAM,GAAG1E,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;AACrC,QAAA,IAAI,CAACyE,MAAM,CAAChD,YAAY,CAAC,MAAQ,EAAA,UAAA,CAAA,CAAA;QACjC,IAAI,CAACgD,MAAM,CAAChD,YAAY,CAAC,mBAAmB,IAAI,CAACzF,KAAK,CAACmE,EAAE,CAAA,CAAA;AAEzD,QAAA,IAAI,CAACC,OAAO,CAACC,WAAW,CAAC,IAAI,CAACoE,MAAM,CAAA,CAAA;AACpC,QAAA,IAAI,CAACA,MAAM,CAACnE,gBAAgB,CAAC,QAAU,EAAA,IAAA;AACnC,YAAA,IAAI,CAACvD,QAAQ,CAAC,IAAI,CAAC0H,MAAM,CAAC2F,OAAO,CAAA,CAAA;AACjC,YAAA,IAAI,CAACvN,mBAAmB,EAAA,CAAA;AAC5B,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAACY,QAAQ,GAAG,IAAI,CAACgH,MAAM,CAAA;AAC/B,KAAA;AAOJ;;AC3BO,MAAM4F,gBAAyBxO,SAAAA,UAAAA,CAAAA;IA8BlCmD,aAAgB,GAAA;AACZ,QAAA,IAAI,CAACyF,MAAM,CAAC7F,KAAK,GAAG,IAAI,CAACnC,QAAQ,EAAA,CAAA;AACjC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AA9BAmD,IAAAA,WAAAA,CACIvD,MAAW,EACX4C,MAAc,EACdC,QAAgB,CAClB;QAEE,KAAK,CAAC7C,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,QAAA,CAAA,CAAA;AAEhC,QAAA,IAAI,CAACuF,MAAM,GAAG1E,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;AACrC,QAAA,IAAI,CAACyE,MAAM,CAAChD,YAAY,CAAC,MAAQ,EAAA,MAAA,CAAA,CAAA;QACjC,IAAI,CAACgD,MAAM,CAAChD,YAAY,CAAC,mBAAmB,IAAI,CAACzF,KAAK,CAACmE,EAAE,CAAA,CAAA;AAEzD,QAAA,IAAI,CAACsE,MAAM,CAACnE,gBAAgB,CAAC,OAAS,EAAA,IAAA;AAClC,YAAA,IAAI,CAACvD,QAAQ,CAAC,IAAI,CAAC0H,MAAM,CAAC7F,KAAK,CAAA,CAAA;AACnC,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAAC6F,MAAM,CAACnE,gBAAgB,CAAC,WAAWC,CAAAA,CAAAA,GAAAA;YACpC,IAAIA,CAAAA,CAAEkF,IAAI,KAAK,OAAS,EAAA;gBACpB,IAAI,CAAChB,MAAM,CAACe,IAAI,EAAA,CAAA;AACpB,aAAA;AACJ,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAACf,MAAM,CAACnE,gBAAgB,CAAC,MAAQ,EAAA,IAAA;AACjC,YAAA,IAAI,CAACzD,mBAAmB,EAAA,CAAA;AAC5B,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAACuD,OAAO,CAACC,WAAW,CAAC,IAAI,CAACoE,MAAM,CAAA,CAAA;AACpC,QAAA,IAAI,CAAChH,QAAQ,GAAG,IAAI,CAACgH,MAAM,CAAA;AAC/B,KAAA;AAOJ;;ACnCO,MAAM6F,kBAA2BzO,SAAAA,UAAAA,CAAAA;AAGpC+D,IAAAA,WAAAA,CACIvD,MAAW,EACX4C,MAAc,EACdC,QAAgB,CAClB;QACE,KAAK,CAAC7C,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,UAAA,CAAA,CAAA;;AAGhC,QAAA,IAAI,CAACqL,OAAO,GAAGxK,QAAAA,CAASC,aAAa,CAAC,QAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAACuK,OAAO,CAAClK,WAAW,CAAC,IAAI,CAACrE,KAAK,CAAA,CAAA;AACnC,QAAA,IAAI,CAACoE,OAAO,CAACC,WAAW,CAAC,IAAI,CAACkK,OAAO,CAAA,CAAA;AAErC,QAAA,IAAI,CAACA,OAAO,CAACjK,gBAAgB,CAAC,SAASC,CAAAA,CAAAA,GAAAA;AACnCA,YAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;AAChB,YAAA,IAAI,CAACjJ,QAAQ,EAAA,CAAGD,IAAI,CAAC,IAAI,CAACyC,MAAM,CAAA,CAAA;AAChC,YAAA,IAAI,CAAC3C,aAAa,EAAA,CAAA;AACtB,SAAA,CAAA,CAAA;;AAGA,QAAA,IAAI,CAACiO,OAAO,CAACjK,gBAAgB,CAAC,YAAA,EAAc,MAAW,EAAA;YAAE0G,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AACvE,QAAA,IAAI,CAACvJ,QAAQ,GAAG,IAAI,CAAC8M,OAAO,CAAA;AAChC,KAAA;AAEJ;;ACzBO,MAAMC,eAAwB3O,SAAAA,UAAAA,CAAAA;IAwEjCiB,KAAQ,GAAA;AACJ,QAAA,IAAI,CAAC2N,sBAAsB,CAAC,IAAI,CAACC,sBAAsB,CAAA,CAAA;AACvD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEQD,IAAAA,sBAAAA,CAAuB7L,KAAa,EAAE;AAC1C,QAAA,IAAI,IAAI,CAAC+L,OAAO,CAACxI,WAAW,EAAE;AAC1B,YAAA,MAAMyI,WAAW,IAAI,CAACD,OAAO,CAACtI,aAAa,CAACzD,KAAAA,CAAAA,CAAAA;YAC5C,IAAI,CAAC7B,QAAQ,CAAC6N,QAAAA,CAAAA,CAAAA;SACX,MAAA;AACH,YAAA,IAAI,CAACD,OAAO,CAACtI,aAAa,CAACzD,KAAAA,EAAO,IAAI,CAACnC,QAAQ,EAAA,EAAI,IAAI,CAACoO,SAAS,CAAA,CAAA;AACjE,YAAA,IAAI,CAAC9N,QAAQ,CAAC,IAAI,CAACN,QAAQ,EAAA,CAAA,CAAA;AAC/B,SAAA;AACJ,KAAA;IAEAoC,IAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC8L,OAAO,CAACrI,WAAW,CAAC,IAAI,CAAC7F,QAAQ,EAAA,EAAI,IAAI,CAACoO,SAAS,CAAA,CAAA;AACnE,KAAA;AAEAzL,IAAAA,IAAAA,CAAKR,KAAa,EAAE;QAChB,IAAI,CAAC6L,sBAAsB,CAAC7L,KAAAA,CAAAA,CAAAA;AAC5B,QAAA,IAAI,CAAC/B,mBAAmB,EAAA,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAmC,aAAgB,GAAA;AACZ,QAAA,IAAI,CAACyF,MAAM,CAAC7F,KAAK,GAAG,IAAI,CAAC+L,OAAO,CAACrI,WAAW,CAAC,IAAI,CAAC7F,QAAQ,EAAI,EAAA,IAAI,CAACoO,SAAS,CAAA,CAAA;AAC5E,QAAA,IAAI,CAAC,IAAI,CAACC,YAAY,EAAE;AACpB,YAAA,IAAI,CAACC,KAAK,CAACnM,KAAK,GAAG,IAAI,CAAC6F,MAAM,CAAC7F,KAAK,CAAC4D,SAAS,CAAC,CAAA,CAAA,CAAA;AACnD,SAAA;QACA,IAAI,CAACxB,QAAQ,CAACnD,KAAK,CAACmN,eAAe,GAAG,IAAI,CAACvG,MAAM,CAAC7F,KAAK,CAAA;AACvD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AA7FAgB,IAAAA,WAAAA,CACIvD,MAAW,EACX4C,MAAc,EACdC,QAAgB,EAChByD,QAAgB,CAClB;QACE,KAAK,CAACtG,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,OAAA,CAAA,CAAA;aAX5B4L,YAAwB,GAAA,KAAA,CAAA;aACxBJ,sBAAiC,GAAA,EAAA,CAAA;aACjCG,SAAoB,GAAA,CAAA,CAAA;AAWxB,QAAA,IAAI,CAACpG,MAAM,GAAG1E,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;AACrC,QAAA,IAAI,CAACyE,MAAM,CAAChD,YAAY,CAAC,MAAQ,EAAA,OAAA,CAAA,CAAA;AACjC,QAAA,IAAI,CAACgD,MAAM,CAAChD,YAAY,CAAC,UAAY,EAAA,IAAA,CAAA,CAAA;QACrC,IAAI,CAACgD,MAAM,CAAChD,YAAY,CAAC,mBAAmB,IAAI,CAACzF,KAAK,CAACmE,EAAE,CAAA,CAAA;AAEzD,QAAA,IAAI,CAAC4K,KAAK,GAAGhL,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;AACpC,QAAA,IAAI,CAAC+K,KAAK,CAACtJ,YAAY,CAAC,MAAQ,EAAA,MAAA,CAAA,CAAA;AAChC,QAAA,IAAI,CAACsJ,KAAK,CAACtJ,YAAY,CAAC,YAAc,EAAA,OAAA,CAAA,CAAA;QACtC,IAAI,CAACsJ,KAAK,CAACtJ,YAAY,CAAC,mBAAmB,IAAI,CAACzF,KAAK,CAACmE,EAAE,CAAA,CAAA;AAExD,QAAA,IAAI,CAACa,QAAQ,GAAGjB,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACvC,QAAA,IAAI,CAACgB,QAAQ,CAACzD,SAAS,CAAC0C,GAAG,CAAC,SAAA,CAAA,CAAA;AAC5B,QAAA,IAAI,CAACe,QAAQ,CAACX,WAAW,CAAC,IAAI,CAACoE,MAAM,CAAA,CAAA;AAErC,QAAA,IAAI,CAACrE,OAAO,CAACC,WAAW,CAAC,IAAI,CAACW,QAAQ,CAAA,CAAA;AACtC,QAAA,IAAI,CAACZ,OAAO,CAACC,WAAW,CAAC,IAAI,CAAC0K,KAAK,CAAA,CAAA;AAEnC,QAAA,IAAI,CAACJ,OAAO,GAAGzH,cAAe,CAAA,IAAI,CAAClG,YAAY,CAAA,CAAA;QAC/C,IAAI,CAAC6N,SAAS,GAAGlI,QAAAA,CAAAA;AAEjB,QAAA,IAAI,CAAC+H,sBAAsB,GAAG,IAAI,CAAC7L,IAAI,EAAA,CAAA;QACvC,IAAI,CAACiM,YAAY,GAAG,KAAA,CAAA;AAEpB,QAAA,IAAI,CAACrG,MAAM,CAACnE,gBAAgB,CAAC,OAAS,EAAA,IAAA;AAClC,YAAA,IAAI,CAACmK,sBAAsB,CAAC,IAAI,CAAChG,MAAM,CAAC7F,KAAK,CAAA,CAAA;AACjD,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAAC6F,MAAM,CAACnE,gBAAgB,CAAC,MAAQ,EAAA,IAAA;AACjC,YAAA,IAAI,CAACzD,mBAAmB,EAAA,CAAA;AAC5B,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACkO,KAAK,CAACzK,gBAAgB,CAAC,OAAS,EAAA,IAAA;AACjC,YAAA,MAAM2K,WAAWtJ,oBAAqB,CAAA,IAAI,CAACoJ,KAAK,CAACnM,KAAK,CAAA,CAAA;AACtD,YAAA,IAAIqM,QAAU,EAAA;gBACV,IAAI,CAACR,sBAAsB,CAACQ,QAAAA,CAAAA,CAAAA;AAChC,aAAA;AACJ,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACF,KAAK,CAACzK,gBAAgB,CAAC,OAAS,EAAA,IAAA;YACjC,IAAI,CAACwK,YAAY,GAAG,IAAA,CAAA;YACpB,IAAI,CAACC,KAAK,CAACG,MAAM,EAAA,CAAA;AACrB,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACH,KAAK,CAACzK,gBAAgB,CAAC,MAAQ,EAAA,IAAA;YAChC,IAAI,CAACwK,YAAY,GAAG,KAAA,CAAA;AACpB,YAAA,IAAI,CAAC9L,aAAa,EAAA,CAAA;AAClB,YAAA,IAAI,CAACnC,mBAAmB,EAAA,CAAA;AAC5B,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACY,QAAQ,GAAG,IAAI,CAACsN,KAAK,CAAA;AAC1B,QAAA,IAAI,CAAC1M,MAAM,EAAA,CAAA;AACf,KAAA;AAoCJ;;AC9GO,MAAM8M,SAAAA,CAAAA;IAOLlL,GAAI,CAAA,GAAGmL,IAAmB,EAAE;AAClC,QAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAK7H,CAAAA,MAAM,EAAE8H,CAAK,EAAA,CAAA;YACrC,MAAMC,QAAAA,GAAWF,IAAI,CAACC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAIC,oBAAoBH,SAAW,EAAA;AAClC,gBAAA,IAAI,CAACI,GAAG,CAAClL,WAAW,CAACiL,SAASC,GAAG,CAAA,CAAA;aAC3B,MAAA;gBACNC,OAAQC,CAAAA,KAAK,CAAC,YAAA,EAAcH,QAAU,EAAA,kCAAA,CAAA,CAAA;AACvC,aAAA;AACD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAEO5J,MAAO,CAAA,GAAG0J,IAAmB,EAAE;AACrC,QAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAK7H,CAAAA,MAAM,EAAE8H,CAAK,EAAA,CAAA;YACrC,MAAMC,QAAAA,GAAWF,IAAI,CAACC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAIC,oBAAoBH,SAAW,EAAA;AAClC,gBAAA,IAAI,CAACI,GAAG,CAAC5L,WAAW,CAAC2L,SAASC,GAAG,CAAA,CAAA;aAC3B,MAAA;gBACNC,OAAQC,CAAAA,KAAK,CAAC,YAAA,EAAcH,QAAU,EAAA,kCAAA,CAAA,CAAA;AACvC,aAAA;AACD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAEOI,KAAQ,GAAA;AACd,QAAA,MAAO,IAAI,CAACH,GAAG,CAACjM,QAAQ,CAACiE,MAAM,CAAE;YAChC,IAAI,CAACgI,GAAG,CAAC5L,WAAW,CAAC,IAAI,CAAC4L,GAAG,CAACI,SAAS,CAAA,CAAA;AACxC,SAAA;AACD,KAAA;AAEOC,IAAAA,KAAAA,CAAMzL,EAAU,EAAE;AACxB,QAAA,IAAI,CAACoL,GAAG,CAACpL,EAAE,GAAGA,EAAAA,CAAAA;AACd,QAAA,OAAO,IAAI,CAAA;AAEZ,KAAA;IAEO0L,KAAQ,GAAA;AACd,QAAA,OAAO,IAAI,CAACN,GAAG,CAACpL,EAAE,CAAA;AAEnB,KAAA;AAEO2L,IAAAA,QAAAA,CAAShQ,IAAY,EAAE;AAC7B,QAAA,IAAI,CAACyP,GAAG,CAAC1L,SAAS,GAAG/D,IAAAA,CAAAA;AACrB,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAEOiQ,IAAAA,QAAAA,CAASjQ,IAAI,EAAE;AACrB,QAAA,IAAI,CAACyP,GAAG,CAAChO,SAAS,CAAC0C,GAAG,CAACnE,IAAAA,CAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAEOkQ,IAAAA,WAAAA,CAAYlQ,IAAI,EAAE;AACxB,QAAA,IAAI,CAACyP,GAAG,CAAChO,SAAS,CAACmE,MAAM,CAAC5F,IAAAA,CAAAA,CAAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAEOmQ,QAASpO,CAAAA,KAAa,EAAEqO,KAAY,EAAE;AAC5C,QAAA,IAAK,IAAIb,CAAI,GAAA,CAAA,EAAGA,IAAIa,KAAM3I,CAAAA,MAAM,EAAE8H,CAAK,EAAA,CAAA;YACtC,IAAI,CAACE,GAAG,CAAC1N,KAAK,CAACA,KAAM,CAAA,GAAGqO,KAAK,CAACb,CAAE,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAEOc,IAAAA,WAAAA,CAAYvN,KAAc,EAAE;AAClC,QAAA,IAAI,CAAC2M,GAAG,CAACnO,QAAQ,GAAGwB,KAAAA,CAAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AAEZ,KAAA;AAEOwN,IAAAA,cAAAA,CAAexN,KAAa,EAAE;AACpC,QAAA,IAAI,CAAC2M,GAAG,CAACc,WAAW,GAAGzN,KAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AAEZ,KAAA;AAEO0N,IAAAA,eAAAA,CAAgBC,OAAkB,EAAE;AAC1C,QAAA,OAAOrL,KAAMsL,CAAAA,SAAS,CAAChN,OAAO,CAAChD,IAAI,CAAC,IAAI,CAAC+O,GAAG,CAACjM,QAAQ,EAAEiN,QAAQhB,GAAG,CAAA,CAAA;AACnE,KAAA;AAjFA3L,IAAAA,WAAAA,CAAY2L,GAAM,CAAE;QACnB,IAAI,CAACA,GAAG,GAAGA,GAAAA,CAAAA;AACZ,KAAA;AAiFD;;ACnFO,MAAMkB,QAAiBtB,SAAAA,SAAAA,CAAAA;AAoK7BuB,IAAAA,MAAAA,CAAOtK,CAAS,EAAE;QACjB,OAAO6B,IAAAA,CAAKC,GAAG,CAAC,IAAI,CAACtF,KAAK,GAAGwD,CAAAA,CAAAA,IAAM,IAAI,CAACjE,IAAI,CAAA;AAC7C,KAAA;IAEA1B,QAAW,GAAA;QACV,OAAO,IAAI,CAACmC,KAAK,CAAA;AAClB,KAAA;AAEA7B,IAAAA,QAAAA,CAAS6B,KAAU,EAAE;AACpB,QAAA,IAAIA,UAAUrC,SAAW,EAAA;YACxB,IAAIqC,KAAAA,GAAQ,IAAI,CAACX,GAAG,EAAEW,KAAQ,GAAA,IAAI,CAACX,GAAG,CAAA;YACtC,IAAIW,KAAAA,GAAQ,IAAI,CAACV,GAAG,EAAEU,KAAQ,GAAA,IAAI,CAACV,GAAG,CAAA;YACtC,IAAI,CAACU,KAAK,GAAGA,KAAAA,CAAAA;AACb,YAAA,IAAI,CAACI,aAAa,EAAA,CAAA;AAClB,YAAA,IAAI,CAAC2N,iBAAiB,IAAI,IAAI,CAACA,iBAAiB,CAAC/N,KAAAA,CAAAA,CAAAA;AAClD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAEAI,aAAgB,GAAA;AACf,QAAA,IAAIJ,QAAQ,IAAI,CAACuF,KAAK,CAAC,IAAI,CAAC1H,QAAQ,EAAA,CAAA,CAAA;AACpC,QAAA,IAAI,CAAC8O,GAAG,CAAC3M,KAAK,GAAG,EAAKA,GAAAA,KAAAA,CAAAA;AACtB,QAAA,IAAI,IAAI,CAACgO,IAAI,KAAK,IAAI,IAAI,CAACrB,GAAG,CAAC3M,KAAK,IAAI,GAAM,GAAA,IAAI,CAACgO,IAAI,CAAA;AACxD,KAAA;AAEQzD,IAAAA,gBAAAA,CAAiBvK,KAAa,EAAE;QACvC,IAAI,IAAI,CAACV,GAAG,KAAK2O,QAAAA,IAAY,IAAI,CAAC5O,GAAG,KAAK,CAAC4O,QAAU,EAAA;YACpD,OAAQ,CAAA,IAAI,CAAC3O,GAAG,GAAG,IAAI,CAACD,GAAE,IAAK,GAAA,CAAA;SAE3B,MAAA,IAAIuF,WAAW5E,KAAQ,CAAA,EAAA;AAC3B,YAAA,OAAO,CAAIqF,GAAAA,IAAAA,CAAKqF,GAAG,CAAC,IAAIjG,YAAazE,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACtC,SAAA;QACA,OAAO,GAAA,CAAA;AACR,KAAA;AAEQuF,IAAAA,KAAAA,CAAMvF,KAAa,EAAE;QAC5B,MAAMiE,CAAAA,GAAIoB,IAAK4F,CAAAA,KAAK,CAACjL,KAAAA,GAAQ,IAAI,CAACT,IAAI,CAAA,GAAI,IAAI,CAACA,IAAI,CAAA;QACnD,OAAO6G,UAAAA,CAAWnC,CAAEiH,CAAAA,WAAW,CAAC,EAAA,CAAA,CAAA,CAAA;AACjC,KAAA;AAEA5N,IAAAA,QAAAA,CAASC,QAAkB,EAAE;QAC5B,IAAI,CAACwQ,iBAAiB,GAAGxQ,QAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAEA2Q,IAAAA,OAAAA,CAAQF,IAAY,EAAE;QACrB,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AA1MAhN,IAAAA,WAAAA,CACChB,KAAa,EACbX,GAAW,EACXC,GAAW,EACXC,IAAY,CACX;QACD,KAAK,CAAC4B,QAASC,CAAAA,aAAa,CAAC,OAAA,CAAA,CAAA,CAAA;aAf9BpB,KAAgB,GAAA,CAAA,CAAA;AAChBX,QAAAA,IAAAA,CAAAA,GAAAA,GAAc,CAAC4O,QAAAA,CAAAA;aACf3O,GAAc2O,GAAAA,QAAAA,CAAAA;aACd1O,IAAe,GAAA,CAAA,CAAA;aACf4O,KAAgB,GAAA,CAAA,CAAA;aAChBH,IAAe,GAAA,EAAA,CAAA;AAYd,QAAA,IAAI,CAACrB,GAAG,CAAC1N,KAAK,CAACmP,MAAM,GAAG,WAAA,CAAA;AACxB,QAAA,IAAI,CAACzB,GAAG,CAAC3M,KAAK,GAAG,MAAA,CAAA;AAEjB,QAAA,IAAI,CAACX,GAAG,GAAGA,cAAAA,GAAO,GAAA,IAAI,CAACA,GAAG,CAAA;AAC1B,QAAA,IAAI,CAACC,GAAG,GAAGA,cAAAA,GAAO,GAAA,IAAI,CAACA,GAAG,CAAA;QAC1B,IAAI,CAACC,IAAI,GAAGA,IAAAA,IAAAA,IAAAA,GAAAA,OAAQ,IAAI,CAACgL,gBAAgB,CAACvK,KAAAA,CAAAA,CAAAA;QAC1C,IAAI,CAAC7B,QAAQ,CAAC6B,KAAAA,CAAAA,CAAAA;AAEd,QAAA,MAAMqO,QAAQ,IAAI,CAAA;QAElB,MAAMC,WAAAA,GAAcnN,QAASoN,CAAAA,WAAW,CAAC,YAAA,CAAA,CAAA;QACzCD,WAAYE,CAAAA,SAAS,CAAC,QAAA,EAAU,IAAM,EAAA,IAAA,CAAA,CAAA;AAEtC,QAAA,IAAIC,QAAW,GAAA,CAAA,CAAA;AACf,QAAA,IAAIC,gBAAmB,GAAA,CAAA,CAAA;AAEvB,QAAA,MAAMC,OAAU,GAAA;YAAEC,CAAG,EAAA,CAAA;YAAGC,CAAG,EAAA,CAAA;AAAE,SAAA,CAAA;AAC7B,QAAA,MAAMC,WAAc,GAAA;YAAEF,CAAG,EAAA,CAAA;YAAGC,CAAG,EAAA,CAAA;AAAE,SAAA,CAAA;AAEjC,QAAA,SAASpH,YAAYsH,KAAiB,EAAA;AACrCA,YAAAA,KAAAA,CAAMjI,cAAc,EAAA,CAAA;YACpB2H,QAAW,GAAA,CAAA,CAAA;AACXC,YAAAA,gBAAAA,GAAmBL,MAAMrO,KAAK,CAAA;YAC9B8O,WAAYF,CAAAA,CAAC,GAAGG,KAAAA,CAAMrH,OAAO,CAAA;YAC7BoH,WAAYD,CAAAA,CAAC,GAAGE,KAAAA,CAAMpH,OAAO,CAAA;YAE7BxG,QAASO,CAAAA,gBAAgB,CAAC,WAAA,EAAakG,WAAa,EAAA,KAAA,CAAA,CAAA;YACpDzG,QAASO,CAAAA,gBAAgB,CAAC,SAAA,EAAWmG,SAAW,EAAA,KAAA,CAAA,CAAA;AACjD,SAAA;AAEA,QAAA,SAASD,YAAYmH,KAAiB,EAAA;YACrC,MAAMC,YAAAA,GAAeX,MAAMrO,KAAK,CAAA;YAEhC2O,OAAQC,CAAAA,CAAC,GAAGG,KAAAA,CAAMrH,OAAO,CAAA;YACzBiH,OAAQE,CAAAA,CAAC,GAAGE,KAAAA,CAAMpH,OAAO,CAAA;AAEzB8G,YAAAA,QAAAA,IAAY,OAACE,CAAQC,CAAC,GAAGE,WAAYF,CAAAA,CAAC,IAAKD,OAAQE,CAAAA,CAAC,GAAGC,WAAAA,CAAYD,CAAC,CAADA,CAAAA;AAEnE,YAAA,IAAI7O,KAAQ0O,GAAAA,gBAAAA,GAAmB,QAACD,GAAW,EAAMM,IAAAA,KAAMhE,CAAAA,QAAQ,GAAG,CAAA,GAAI,EAAC,CAAA,GAAMsD,MAAM9O,IAAI,CAAA;YACvFS,KAAQqF,GAAAA,IAAAA,CAAKhG,GAAG,CAACgP,KAAM/O,CAAAA,GAAG,EAAE+F,IAAAA,CAAK/F,GAAG,CAAC+O,KAAMhP,CAAAA,GAAG,EAAEW,KAAAA,CAAAA,CAAAA,CAAAA;AAEhD,YAAA,IAAIgP,iBAAiBhP,KAAO,EAAA;AAE3BqO,gBAAAA,KAAAA,CAAMlQ,QAAQ,CAAC6B,KAAAA,CAAAA,CAAAA;gBACfqO,KAAM1B,CAAAA,GAAG,CAACsC,aAAa,CAACX,WAAAA,CAAAA,CAAAA;AAEzB,aAAA;YAEAQ,WAAYF,CAAAA,CAAC,GAAGG,KAAAA,CAAMrH,OAAO,CAAA;YAC7BoH,WAAYD,CAAAA,CAAC,GAAGE,KAAAA,CAAMpH,OAAO,CAAA;AAC9B,SAAA;QAEA,SAASE,SAAAA,GAAAA;YACR1G,QAAS8G,CAAAA,mBAAmB,CAAC,WAAA,EAAaL,WAAa,EAAA,KAAA,CAAA,CAAA;YACvDzG,QAAS8G,CAAAA,mBAAmB,CAAC,SAAA,EAAWJ,SAAW,EAAA,KAAA,CAAA,CAAA;AAEnD,YAAA,IAAIxC,IAAKC,CAAAA,GAAG,CAACmJ,QAAAA,CAAAA,GAAY,CAAG,EAAA;gBAC3BJ,KAAM1B,CAAAA,GAAG,CAACuC,KAAK,EAAA,CAAA;gBACfb,KAAM1B,CAAAA,GAAG,CAACL,MAAM,EAAA,CAAA;AACjB,aAAA;AACD,SAAA;AAEA,QAAA,SAAS9C,aAAauF,KAAiB,EAAA;AACtC,YAAA,IAAIA,KAAMxF,CAAAA,OAAO,CAAC5E,MAAM,KAAK,CAAG,EAAA;gBAC/B8J,QAAW,GAAA,CAAA,CAAA;AACXC,gBAAAA,gBAAAA,GAAmBL,MAAMrO,KAAK,CAAA;AAE9B8O,gBAAAA,WAAAA,CAAYF,CAAC,GAAGG,KAAAA,CAAMxF,OAAO,CAAC,CAAA,CAAE,CAAC4F,KAAK,CAAA;AACtCL,gBAAAA,WAAAA,CAAYD,CAAC,GAAGE,KAAAA,CAAMxF,OAAO,CAAC,CAAA,CAAE,CAAC6F,KAAK,CAAA;gBAEtCjO,QAASO,CAAAA,gBAAgB,CAAC,WAAA,EAAagI,WAAa,EAAA,KAAA,CAAA,CAAA;gBACpDvI,QAASO,CAAAA,gBAAgB,CAAC,UAAA,EAAYiI,UAAY,EAAA,KAAA,CAAA,CAAA;AACnD,aAAA;AACD,SAAA;AAEA,QAAA,SAASD,YAAYqF,KAAiB,EAAA;YACrC,MAAMC,YAAAA,GAAeX,MAAMrO,KAAK,CAAA;AAEhC2O,YAAAA,OAAAA,CAAQC,CAAC,GAAGG,KAAAA,CAAMxF,OAAO,CAAC,CAAA,CAAE,CAAC4F,KAAK,CAAA;AAClCR,YAAAA,OAAAA,CAAQE,CAAC,GAAGE,KAAAA,CAAMxF,OAAO,CAAC,CAAA,CAAE,CAAC6F,KAAK,CAAA;AAElCX,YAAAA,QAAAA,IAAY,OAACE,CAAQC,CAAC,GAAGE,WAAYF,CAAAA,CAAC,IAAKD,OAAQE,CAAAA,CAAC,GAAGC,WAAAA,CAAYD,CAAC,CAADA,CAAAA;AAEnE,YAAA,IAAI7O,KAAQ0O,GAAAA,gBAAAA,GAAmB,QAACD,IAAYM,KAAAA,CAAMhE,QAAQ,GAAG,CAAI,GAAA,EAAC,CAAMsD,GAAAA,KAAAA,CAAM9O,IAAI,CAAA;YAClFS,KAAQqF,GAAAA,IAAAA,CAAKhG,GAAG,CAACgP,KAAM/O,CAAAA,GAAG,EAAE+F,IAAAA,CAAK/F,GAAG,CAAC+O,KAAMhP,CAAAA,GAAG,EAAEW,KAAAA,CAAAA,CAAAA,CAAAA;AAEhD,YAAA,IAAIgP,iBAAiBhP,KAAO,EAAA;AAC3BqO,gBAAAA,KAAAA,CAAMlQ,QAAQ,CAAC6B,KAAAA,CAAAA,CAAAA;gBACfqO,KAAM1B,CAAAA,GAAG,CAACsC,aAAa,CAACX,WAAAA,CAAAA,CAAAA;AACzB,aAAA;AAEAQ,YAAAA,WAAAA,CAAYF,CAAC,GAAGG,KAAAA,CAAMxF,OAAO,CAAC,CAAA,CAAE,CAAC4F,KAAK,CAAA;AACtCL,YAAAA,WAAAA,CAAYD,CAAC,GAAGE,KAAAA,CAAMxF,OAAO,CAAC,CAAA,CAAE,CAAC6F,KAAK,CAAA;AACvC,SAAA;AAEA,QAAA,SAASzF,WAAWoF,KAAiB,EAAA;AACpC,YAAA,IAAIA,KAAMxF,CAAAA,OAAO,CAAC5E,MAAM,KAAK,CAAG,EAAA;gBAC/BxD,QAAS8G,CAAAA,mBAAmB,CAAC,WAAA,EAAayB,WAAa,EAAA,KAAA,CAAA,CAAA;gBACvDvI,QAAS8G,CAAAA,mBAAmB,CAAC,UAAA,EAAY0B,UAAY,EAAA,KAAA,CAAA,CAAA;AACtD,aAAA;AACD,SAAA;QAEA,SAASrM,QAAAA,GAAAA;AACR+Q,YAAAA,KAAAA,CAAMlQ,QAAQ,CAACiI,UAAAA,CAAWiI,KAAM1B,CAAAA,GAAG,CAAC3M,KAAK,CAAA,CAAA,CAAA;AAC1C,SAAA;QAEA,SAASkI,OAAAA,GAAAA;AACRmG,YAAAA,KAAAA,CAAM1B,GAAG,CAAC1N,KAAK,CAACmN,eAAe,GAAG,EAAA,CAAA;AAClCiC,YAAAA,KAAAA,CAAM1B,GAAG,CAAC1N,KAAK,CAACmP,MAAM,GAAG,EAAA,CAAA;AAC1B,SAAA;QAEA,SAASjG,MAAAA,GAAAA;;AAERkG,YAAAA,KAAAA,CAAM1B,GAAG,CAAC1N,KAAK,CAACmP,MAAM,GAAG,WAAA,CAAA;AAC1B,SAAA;AAEA,QAAA,SAAS1H,UAAUqI,KAAoB,EAAA;AACtCA,YAAAA,KAAAA,CAAMnN,eAAe,EAAA,CAAA;AAErB,YAAA,OAAQmN,MAAMM,OAAO;gBACpB,KAAK,EAAA;oBACJhB,KAAM1B,CAAAA,GAAG,CAAC/F,IAAI,EAAA,CAAA;AACd,oBAAA,MAAA;gBACD,KAAK,EAAA;AACJmI,oBAAAA,KAAAA,CAAMjI,cAAc,EAAA,CAAA;AACpBuH,oBAAAA,KAAAA,CAAMlQ,QAAQ,CAACkQ,KAAAA,CAAMxQ,QAAQ,EAAA,GAAKwQ,MAAM9O,IAAI,CAAA,CAAA;oBAC5C8O,KAAM1B,CAAAA,GAAG,CAACsC,aAAa,CAACX,WAAAA,CAAAA,CAAAA;AACxB,oBAAA,MAAA;gBACD,KAAK,EAAA;AACJS,oBAAAA,KAAAA,CAAMjI,cAAc,EAAA,CAAA;AACpBuH,oBAAAA,KAAAA,CAAMlQ,QAAQ,CAACkQ,KAAAA,CAAMxQ,QAAQ,EAAA,GAAKwQ,MAAM9O,IAAI,CAAA,CAAA;oBAC5C8O,KAAM1B,CAAAA,GAAG,CAACsC,aAAa,CAACX,WAAAA,CAAAA,CAAAA;AACxB,oBAAA,MAAA;AACF,aAAA;AACD,SAAA;AAEAnG,QAAAA,MAAAA,EAAAA,CAAAA;AAEA,QAAA,IAAI,CAACwE,GAAG,CAACjL,gBAAgB,CAAC,WAAWgF,SAAW,EAAA,KAAA,CAAA,CAAA;AAChD,QAAA,IAAI,CAACiG,GAAG,CAACjL,gBAAgB,CAAC,aAAa+F,WAAa,EAAA,KAAA,CAAA,CAAA;AACpD,QAAA,IAAI,CAACkF,GAAG,CAACjL,gBAAgB,CAAC,cAAc8H,YAAc,EAAA;YAAEpB,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AACtE,QAAA,IAAI,CAACuE,GAAG,CAACjL,gBAAgB,CAAC,UAAUpE,QAAU,EAAA,KAAA,CAAA,CAAA;AAC9C,QAAA,IAAI,CAACqP,GAAG,CAACjL,gBAAgB,CAAC,SAASwG,OAAS,EAAA,KAAA,CAAA,CAAA;AAC5C,QAAA,IAAI,CAACyE,GAAG,CAACjL,gBAAgB,CAAC,QAAQyG,MAAQ,EAAA,KAAA,CAAA,CAAA;AAC3C,KAAA;AAoDD;;ACrNO,MAAMmH,gBAAyBrS,SAAAA,UAAAA,CAAAA;IAwBlCmE,aACImO,CAAAA,IAAa,EACbvP,KAAa,EACbX,GAAW,EACXC,GAAW,EACXC,IAAY,EACZjC,QAAkB,EACpB;AACE,QAAA,IAAIkS,QAAW,GAAA,IAAI3B,QAAS7N,CAAAA,KAAAA,EAAOX,KAAKC,GAAKC,EAAAA,IAAAA,CAAAA,CAAAA;AAC7CiQ,QAAAA,QAAAA,CAAS7C,GAAG,CAAC9J,YAAY,CAAC,MAAQ,EAAA,QAAA,CAAA,CAAA;QAClC2M,QAAS7C,CAAAA,GAAG,CAAC9J,YAAY,CAAC,mBAAmB,IAAI,CAACzF,KAAK,CAACmE,EAAE,CAAA,CAAA;AAC1DiO,QAAAA,QAAAA,CAASlS,QAAQ,CAACA,QAAAA,CAAAA,CAAAA;AAClB,QAAA,IAAI,CAACkE,OAAO,CAACC,WAAW,CAAC+N,SAAS7C,GAAG,CAAA,CAAA;AACrC,QAAA,IAAI4C,IAAM,EAAA;YACN,IAAI7J,KAAAA,GAAQvE,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CAAA;YACnCsE,KAAM/G,CAAAA,SAAS,CAAC0C,GAAG,CAAC,MAAA,CAAA,CAAA;AACpB,YAAA,IAAI,CAACG,OAAO,CAACC,WAAW,CAACiE,KAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,OAAO8J,QAAAA,CAAAA;AACX,KAAA;AAEArR,IAAAA,QAAAA,CAAS6B,KAAyD,EAAE;QAChE,IAAI8D,MAAAA,GAAS,IAAI,CAACjG,QAAQ,EAAA,CAAA;QAC1B,IAAImC,KAAAA,CAAM4O,CAAC,KAAKjR,SAAAA,EAAWmG,OAAO8K,CAAC,GAAG5O,MAAM4O,CAAC,CAAA;QAC7C,IAAI5O,KAAAA,CAAM6O,CAAC,KAAKlR,SAAAA,EAAWmG,OAAO+K,CAAC,GAAG7O,MAAM6O,CAAC,CAAA;QAC7C,IAAI7O,KAAAA,CAAMyP,CAAC,KAAK9R,SAAAA,EAAWmG,OAAO2L,CAAC,GAAGzP,MAAMyP,CAAC,CAAA;QAC7C,IAAIzP,KAAAA,CAAM0P,CAAC,KAAK/R,SAAAA,EAAWmG,OAAO4L,CAAC,GAAG1P,MAAM0P,CAAC,CAAA;AAC7C,QAAA,IAAI,CAAChS,aAAa,EAAA,CAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAoC,YAAe,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAACrC,MAAM,CAACsC,OAAO,CAAA;AAC/B,KAAA;IAEAK,aAAgB,GAAA;QACZ,IAAIJ,KAAAA,GAAQ,IAAI,CAACnC,QAAQ,EAAA,CAAA;AACzB,QAAA,IAAImC,MAAM4O,CAAC,KAAKjR,SAAa,IAAA,IAAI,CAACgS,QAAQ,IAAI,CAAC,IAAI,CAACA,QAAQ,CAAC7B,MAAM,CAAC9N,KAAAA,CAAM4O,CAAC,CAAG,EAAA;AAC1E,YAAA,IAAI,CAACe,QAAQ,CAAC3P,KAAK,GAAGA,MAAM4O,CAAC,CAAA;YAC7B,IAAI,CAACe,QAAQ,CAACvP,aAAa,EAAA,CAAA;AAC/B,SAAA;AACA,QAAA,IAAIJ,MAAM6O,CAAC,KAAKlR,SAAa,IAAA,IAAI,CAACiS,QAAQ,IAAI,CAAC,IAAI,CAACA,QAAQ,CAAC9B,MAAM,CAAC9N,KAAAA,CAAM6O,CAAC,CAAG,EAAA;AAC1E,YAAA,IAAI,CAACe,QAAQ,CAAC5P,KAAK,GAAGA,MAAM6O,CAAC,CAAA;YAC7B,IAAI,CAACe,QAAQ,CAACxP,aAAa,EAAA,CAAA;AAC/B,SAAA;AACA,QAAA,IAAIJ,MAAMyP,CAAC,KAAK9R,SAAa,IAAA,IAAI,CAACkS,QAAQ,IAAI,CAAC,IAAI,CAACA,QAAQ,CAAC/B,MAAM,CAAC9N,KAAAA,CAAMyP,CAAC,CAAG,EAAA;AAC1E,YAAA,IAAI,CAACI,QAAQ,CAAC7P,KAAK,GAAGA,MAAMyP,CAAC,CAAA;YAC7B,IAAI,CAACI,QAAQ,CAACzP,aAAa,EAAA,CAAA;AAC/B,SAAA;AACA,QAAA,IAAIJ,MAAM0P,CAAC,KAAK/R,SAAa,IAAA,IAAI,CAACmS,QAAQ,IAAI,CAAC,IAAI,CAACA,QAAQ,CAAChC,MAAM,CAAC9N,KAAAA,CAAM0P,CAAC,CAAG,EAAA;AAC1E,YAAA,IAAI,CAACI,QAAQ,CAAC9P,KAAK,GAAGA,MAAM0P,CAAC,CAAA;YAC7B,IAAI,CAACI,QAAQ,CAAC1P,aAAa,EAAA,CAAA;AAC/B,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAxEAY,WACIvD,CAAAA,MAAW,EACX4C,MAAc,EACdC,QAAgB,EAChBjB,GAAW,EACXC,GAAW,EACXC,IAAY,CACd;QACE,KAAK,CAAC9B,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,QAAA,CAAA,CAAA;QAEhC,MAAMN,KAAAA,GAAQ,IAAI,CAACnC,QAAQ,EAAA,CAAA;AAC3B,QAAA,IAAI,CAACO,YAAY,GAAG4B,KAAAA,CAAM+P,KAAK,IAAI/P,KAAM+P,CAAAA,KAAK,EAAMvN,IAAAA,MAAAA,CAAOwN,MAAM,CAAC,EAAIhQ,EAAAA,KAAAA,CAAAA,CAAAA;QACtE,IAAI,IAAI,CAAC5B,YAAY,CAACwQ,CAAC,KAAKjR,SAAW,EAAA,IAAI,CAACgS,QAAQ,GAAG,IAAI,CAACvO,aAAa,CAAC,IAAM,EAAA,IAAI,CAAChD,YAAY,CAACwQ,CAAC,EAAEvP,GAAAA,EAAKC,GAAKC,EAAAA,IAAAA,EAAMiE,CAAAA,CAAAA,GAAAA;AAAOxD,YAAAA,KAAAA,CAAM4O,CAAC,GAAGpL,CAAAA,CAAAA;AAAG,YAAA,IAAI,CAAC9F,aAAa,EAAA,CAAA;AAAG,SAAA,CAAA,CAAA;QAC9J,IAAI,IAAI,CAACU,YAAY,CAACyQ,CAAC,KAAKlR,SAAW,EAAA,IAAI,CAACiS,QAAQ,GAAG,IAAI,CAACxO,aAAa,CAAC,IAAM,EAAA,IAAI,CAAChD,YAAY,CAACyQ,CAAC,EAAExP,GAAAA,EAAKC,GAAKC,EAAAA,IAAAA,EAAMiE,CAAAA,CAAAA,GAAAA;AAAOxD,YAAAA,KAAAA,CAAM6O,CAAC,GAAGrL,CAAAA,CAAAA;AAAG,YAAA,IAAI,CAAC9F,aAAa,EAAA,CAAA;AAAG,SAAA,CAAA,CAAA;QAC9J,IAAI,IAAI,CAACU,YAAY,CAACqR,CAAC,KAAK9R,SAAW,EAAA,IAAI,CAACkS,QAAQ,GAAG,IAAI,CAACzO,aAAa,CAAC,IAAM,EAAA,IAAI,CAAChD,YAAY,CAACqR,CAAC,EAAEpQ,GAAAA,EAAKC,GAAKC,EAAAA,IAAAA,EAAMiE,CAAAA,CAAAA,GAAAA;AAAOxD,YAAAA,KAAAA,CAAMyP,CAAC,GAAGjM,CAAAA,CAAAA;AAAG,YAAA,IAAI,CAAC9F,aAAa,EAAA,CAAA;AAAG,SAAA,CAAA,CAAA;QAC9J,IAAI,IAAI,CAACU,YAAY,CAACsR,CAAC,KAAK/R,SAAW,EAAA,IAAI,CAACmS,QAAQ,GAAG,IAAI,CAAC1O,aAAa,CAAC,KAAO,EAAA,IAAI,CAAChD,YAAY,CAACsR,CAAC,EAAErQ,GAAAA,EAAKC,GAAKC,EAAAA,IAAAA,EAAMiE,CAAAA,CAAAA,GAAAA;AAAOxD,YAAAA,KAAAA,CAAM0P,CAAC,GAAGlM,CAAAA,CAAAA;AAAG,YAAA,IAAI,CAAC9F,aAAa,EAAA,CAAA;AAAG,SAAA,CAAA,CAAA;AACnK,KAAA;AAyDJ;;AChFA,SAASuS,KAAMzM,CAAAA,CAAS,EAAE0M,IAAY,EAAEC,IAAY,EAAA;AAChD,IAAA,OAAO9K,KAAK/F,GAAG,CAAC+F,KAAKhG,GAAG,CAACmE,GAAG2M,IAAOD,CAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACvC,CAAA;AAEA,SAASE,OAAAA,CAAQxB,CAAS,EAAEC,CAAS,EAAEwB,EAAU,EAAEC,EAAU,EAAEC,EAAU,EAAEC,EAAU,EAAA;IACjF,IAAI5B,CAAAA,GAAIyB,EAAKE,GAAAA,EAAAA,IAAM3B,CAAIyB,GAAAA,EAAAA,GAAKE,EAAM1B,IAAAA,CAAAA,GAAIyB,EAAKE,GAAAA,EAAAA,IAAM3B,CAAIyB,GAAAA,EAAAA,GAAKE,EAAI,EAAA;QAC1D,OAAO,KAAA,CAAA;AACX,KAAA;IACA,OAAO,IAAA,CAAA;AACX,CAAA;AAEA,MAAMC,KAAQ,GAAA;IACVC,UAAY,EAAA,SAAA;IACZC,IAAM,EAAA,SAAA;IACNC,IAAM,EAAA,SAAA;IACNC,KAAO,EAAA,WAAA;IACPC,KAAO,EAAA,SAAA;IACPC,QAAU,EAAA,SAAA;AACd,CAAA,CAAA;AAEA,MAAMC,UAAAA,CAAAA;AA6BF,IAAA,IAAIrE,GAAM,GAAA;QACN,OAAO,IAAI,CAACsE,OAAO,CAAA;AACvB,KAAA;AAEA,IAAA,IAAIC,KAAQ,GAAA;QACR,OAAO,IAAI,CAACC,MAAM,CAAA;AACtB,KAAA;IAeAC,MAAOzL,CAAAA,KAAc,EAAE0L,MAAe,EAAE;QACpC,MAAMC,MAAAA,GAAS,IAAI,CAACL,OAAO,CAAA;QAC3B,MAAMM,GAAAA,GAAMvL,MAAOwL,CAAAA,gBAAgB,IAAI,CAAA,CAAA;QACvC,MAAMC,IAAAA,GAAO,CAAC9L,KAAAA,IAAAA,IAAAA,GAAAA,QAAS2L,MAAOI,CAAAA,WAAW,IAAIH,GAAAA,CAAAA;QAC7C,MAAMI,IAAAA,GAAO,CAACN,MAAAA,IAAAA,IAAAA,GAAAA,SAAUC,MAAOM,CAAAA,YAAY,IAAIL,GAAAA,CAAAA;AAC/C,QAAA,IAAIlM,IAAKwM,CAAAA,KAAK,CAACJ,IAAAA,GAAO,IAAI,CAACK,KAAK,EAAEH,IAAO,GAAA,IAAI,CAACI,KAAK,IAAI,KAAO,EAAA;AAC1D,YAAA,IAAI,CAACD,KAAK,GAAGR,MAAAA,CAAO3L,KAAK,GAAG8L,IAAAA,CAAAA;AAC5B,YAAA,IAAI,CAACM,KAAK,GAAGT,MAAAA,CAAOD,MAAM,GAAGM,IAAAA,CAAAA;AACjC,SAAA;AACJ,KAAA;AAEAK,IAAAA,cAAAA,CAAezU,QAA0C,EAAE;QACvD,IAAI,CAAC0U,eAAe,GAAG1U,QAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA2U,IAAAA,cAAAA,CAAe3U,QAAsC,EAAE;QACnD,IAAI,CAAC4U,eAAe,GAAG5U,QAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA6U,IAAAA,cAAAA,CAAe7U,QAAsC,EAAE;QACnD,IAAI,CAAC8U,eAAe,GAAG9U,QAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA+U,IAAAA,YAAAA,CAAa/U,QAAsC,EAAE;QACjD,IAAI,CAACgV,aAAa,GAAGhV,QAAAA,CAAAA;AACrB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEQiV,IAAAA,WAAAA,CAAY7Q,CAAa,EAAE;AAC/BA,QAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;QAChB,IAAInF,CAAAA,CAAE8Q,MAAM,KAAK,CAAG,EAAA;YAChB,IAAI,CAACC,eAAe,GAAG,IAAA,CAAA;AAC3B,SAAA;AACJ,KAAA;AAEQC,IAAAA,YAAAA,CAAahR,CAAa,EAAE;AAChCA,QAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;QAChB,IAAInF,CAAAA,CAAE8Q,MAAM,IAAI,CAAG,EAAA;AACf,YAAA,IAAI,CAACG,MAAM,GAAG,IAAI,CAACC,GAAG,CAAA;AACtB,YAAA,IAAI,CAACC,MAAM,GAAG,IAAI,CAACC,GAAG,CAAA;AACtB,YAAA,IAAI,CAACC,WAAW,GAAGrR,CAAAA,CAAEsR,OAAO,CAAA;AAC5B,YAAA,IAAI,CAACC,WAAW,GAAGvR,CAAAA,CAAEwR,OAAO,CAAA;YAC5B,IAAI,CAACC,kBAAkB,GAAG,IAAA,CAAA;AAC9B,SAAA;AACA,QAAA,IAAI,CAACC,OAAO,GAAG1R,CAAAA,CAAE8Q,MAAM,CAAA;AACvB,QAAA,IAAI,CAACa,MAAM,CAAC1E,CAAC,GAAGjN,EAAEsR,OAAO,CAAA;AACzB,QAAA,IAAI,CAACK,MAAM,CAACzE,CAAC,GAAGlN,EAAEwR,OAAO,CAAA;QACzB,IAAI,CAACI,cAAc,GAAG,IAAA,CAAA;AAC1B,KAAA;AAEAC,IAAAA,UAAAA,CAAW7R,CAAa,EAAE;AACtBA,QAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;QAChB,IAAI,CAACuM,OAAO,GAAG,CAAC,CAAA,CAAA;AACpB,KAAA;AAEQI,IAAAA,YAAAA,CAAa9R,CAAa,EAAE;AAChCA,QAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;AAChB,QAAA,MAAM4M,KAAQ,GAAA,IAAI,CAACzC,OAAO,CAACS,WAAW,CAAA;AACtC,QAAA,MAAMiC,KAAQ,GAAA,IAAI,CAAC1C,OAAO,CAACW,YAAY,CAAA;AACvC,QAAA,IAAI,IAAI,CAACyB,OAAO,IAAI,CAAG,EAAA;YACnB,IAAI,IAAI,CAACE,cAAc,EAAE;gBACrB,MAAMK,EAAAA,GAAK,IAAI,CAACC,GAAG,CAAA;AACnB,gBAAA,MAAMC,EAAK,GAAA,IAAI,CAACC,MAAM,GAAG,IAAI,CAACF,GAAG,GAAGF,KAAAA,GAAQD,KAAQ,GAAA,IAAI,CAACG,GAAG,CAAA;AAC5D,gBAAA,MAAMjF,IAAI,IAAI,CAACoF,MAAM,GAAG,CAACrS,CAAAA,CAAEsR,OAAO,GAAG,IAAI,CAACD,WAAW,IAAIU,QAAQE,EAAK,GAAA,CAAA,CAAA;AACtE,gBAAA,MAAM/E,IAAI,IAAI,CAACoF,MAAM,GAAG,CAACtS,CAAAA,CAAEwR,OAAO,GAAG,IAAI,CAACD,WAAW,IAAIS,QAAQG,EAAK,GAAA,CAAA,CAAA;gBACtE,IAAI,CAACI,WAAW,CAACtF,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;aAEnB,MAAA;gBACD,IAAI,CAACgE,GAAG,GAAG,IAAI,CAACD,MAAM,GAAG,CAACjR,CAAAA,CAAEsR,OAAO,GAAG,IAAI,CAACD,WAAU,IAAK,CAAI,GAAA,IAAI,CAACa,GAAG,GAAGH,KAAAA,CAAAA;gBACzE,IAAI,CAACX,GAAG,GAAG,IAAI,CAACD,MAAM,GAAG,CAACnR,CAAAA,CAAEwR,OAAO,GAAG,IAAI,CAACD,WAAU,IAAK,CAAI,GAAA,IAAI,CAACW,GAAG,GAAGF,KAAAA,CAAAA;AAC7E,aAAA;AACJ,SAAA;AACA,QAAA,IAAI,CAACL,MAAM,CAAC1E,CAAC,GAAGjN,EAAEsR,OAAO,CAAA;AACzB,QAAA,IAAI,CAACK,MAAM,CAACzE,CAAC,GAAGlN,EAAEwR,OAAO,CAAA;AAC7B,KAAA;AAEQgB,IAAAA,QAAAA,CAASxS,CAAsC,EAAE;AACrDA,QAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;AAChB,QAAA,MAAMsN,OAAU,GAAA,GAAA,CAAA;AAChB,QAAA,IAAI,CAACP,GAAG,IAAKlS,CAAEsI,CAAAA,MAAM,GAAG,CAAA,IAAKtI,CAAEiJ,CAAAA,UAAU,GAAG,CAAA,GAAK,MAAMwJ,OAAUA,GAAAA,OAAAA,CAAAA;QACjE,IAAI,CAACP,GAAG,GAAG5D,KAAAA,CAAM,IAAI,CAAC4D,GAAG,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA;AAClC,KAAA;IAEAQ,MAAS,GAAA;QACL,IAAI,IAAI,CAACC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAClD,MAAM,EAAA,CAAA;AACf,SAAA;QAEA,MAAMwC,EAAAA,GAAK,IAAI,CAACC,GAAG,CAAA;AACnB,QAAA,MAAMC,KAAK,IAAI,CAACC,MAAM,GAAG,IAAI,CAACF,GAAG,GAAG,IAAI,CAAC9B,KAAK,GAAG,IAAI,CAACD,KAAK,GAAG,IAAI,CAAC+B,GAAG,CAAA;AAEtE,QAAA,MAAMpL,CAAI,GAAA,CAAA,GAAI,IAAI,CAACoL,GAAG,CAAA;QACtB,IAAI,CAAChB,GAAG,GAAG5C,KAAAA,CAAM,IAAI,CAAC4C,GAAG,EAAE,CAACpK,CAAGA,EAAAA,CAAAA,CAAAA,CAAAA;QAC/B,IAAI,CAACsK,GAAG,GAAG9C,KAAAA,CAAM,IAAI,CAAC8C,GAAG,EAAE,CAACtK,CAAGA,EAAAA,CAAAA,CAAAA,CAAAA;QAE/B,MAAM8L,GAAAA,GAAM,IAAI,CAACC,QAAQ,CAAA;AACzBD,QAAAA,GAAAA,CAAIE,YAAY,CAAC,CAAA,EAAG,GAAK,EAAA,GAAA,EAAK,GAAG,GAAK,EAAA,GAAA,CAAA,CAAA;QACtCF,GAAIG,CAAAA,SAAS,GAAGjE,KAAAA,CAAMC,UAAU,CAAA;QAChC6D,GAAII,CAAAA,QAAQ,CAAC,CAAA,EAAG,CAAG,EAAA,IAAI,CAAC7C,KAAK,EAAE,IAAI,CAACC,KAAK,CAAA,CAAA;AAEzC,QAAA,IAAI,CAAC6C,SAAS,CAACL,KAAK9D,KAAME,CAAAA,IAAI,EAAEiD,EAAIE,EAAAA,EAAAA,CAAAA,CAAAA;;AAEpC,QAAA,IAAI,CAACe,UAAU,CAACN,KAAK9D,KAAMG,CAAAA,IAAI,EAAEgD,EAAIE,EAAAA,EAAAA,CAAAA,CAAAA;AACzC,KAAA;AAEQc,IAAAA,SAAAA,CACJL,GAA6B,EAC7BO,KAAa,EACblB,EAAU,EAAEE,EAAU,EACxB;AACE,QAAA,MAAMiB,MAAM1P,IAAKsF,CAAAA,KAAK,CAAC,IAAI,CAACkI,GAAG,GAAGe,EAAAA,CAAAA,CAAAA;AAClC,QAAA,MAAMoB,MAAM3P,IAAKsF,CAAAA,KAAK,CAAC,IAAI,CAACkI,GAAG,GAAGe,EAAAA,CAAAA,CAAAA;AAClC,QAAA,MAAMqB,MAAM5P,IAAKsF,CAAAA,KAAK,CAAC,IAAI,CAACoI,GAAG,GAAGe,EAAAA,CAAAA,CAAAA;AAClC,QAAA,MAAMoB,MAAM7P,IAAKsF,CAAAA,KAAK,CAAC,IAAI,CAACoI,GAAG,GAAGe,EAAAA,CAAAA,CAAAA;AAElCS,QAAAA,GAAAA,CAAIY,SAAS,GAAG,GAAA,CAAA;AAChBZ,QAAAA,GAAAA,CAAIa,WAAW,GAAGN,KAAAA,CAAAA;AAClBP,QAAAA,GAAAA,CAAIc,SAAS,EAAA,CAAA;AACb,QAAA,IAAK,IAAI5I,CAAAA,GAAIsI,GAAKtI,EAAAA,CAAAA,IAAKuI,KAAKvI,CAAK,EAAA,CAAA;AAC7B,YAAA,IAAI6I,KAAK,IAAI,CAACxD,KAAK,IAAI,MAAM,CAACrF,CAAI,GAAA,IAAI,CAACoG,GAAE,KAAM,CAAA,GAAIe,EAAC,CAAC,CAAA,CAAA;AACrDW,YAAAA,GAAAA,CAAIgB,MAAM,CAACD,EAAI,EAAA,IAAI,CAACvD,KAAK,CAAA,CAAA;YACzBwC,GAAIiB,CAAAA,MAAM,CAACF,EAAI,EAAA,CAAA,CAAA,CAAA;AACnB,SAAA;AACA,QAAA,IAAK,IAAI7I,CAAAA,GAAIwI,GAAKxI,EAAAA,CAAAA,IAAKyI,KAAKzI,CAAK,EAAA,CAAA;AAC7B,YAAA,IAAIgJ,KAAK,IAAI,CAAC1D,KAAK,IAAI,MAAM,CAACtF,CAAI,GAAA,IAAI,CAACsG,GAAE,KAAM,CAAA,GAAIe,EAAC,CAAC,CAAA,CAAA;AACrDS,YAAAA,GAAAA,CAAIgB,MAAM,CAAC,IAAI,CAACzD,KAAK,EAAE2D,EAAAA,CAAAA,CAAAA;YACvBlB,GAAIiB,CAAAA,MAAM,CAAC,CAAGC,EAAAA,EAAAA,CAAAA,CAAAA;AAClB,SAAA;AACAlB,QAAAA,GAAAA,CAAImB,MAAM,EAAA,CAAA;AACd,KAAA;AAEQC,IAAAA,SAAAA,CACJpB,GAA6B,EAC7BO,KAAa,EACblB,EAAU,EAAEE,EAAU,EACxB;AACE,QAAA,MAAM8B,IAAO,GAAA,IAAI,CAAC9D,KAAK,IAAI,GAAA,GAAM,IAAI,CAACe,GAAG,IAAI,GAAA,GAAMe,EAAC,CAAC,CAAA,CAAA;AACrD,QAAA,MAAMiC,IAAO,GAAA,IAAI,CAAC9D,KAAK,IAAI,GAAA,GAAM,IAAI,CAACgB,GAAG,IAAI,GAAA,GAAMe,EAAC,CAAC,CAAA,CAAA;AACrDS,QAAAA,GAAAA,CAAIa,WAAW,GAAGN,KAAAA,CAAAA;AAClBP,QAAAA,GAAAA,CAAIY,SAAS,GAAG,CAAA,CAAA;AAChBZ,QAAAA,GAAAA,CAAIc,SAAS,EAAA,CAAA;QACbd,GAAIgB,CAAAA,MAAM,CAACK,IAAM,EAAA,CAAA,CAAA,CAAA;AAAIrB,QAAAA,GAAAA,CAAIiB,MAAM,CAACI,IAAM,EAAA,IAAI,CAAC7D,KAAK,CAAA,CAAA;QAChDwC,GAAIgB,CAAAA,MAAM,CAAC,CAAGM,EAAAA,IAAAA,CAAAA,CAAAA;AAAOtB,QAAAA,GAAAA,CAAIiB,MAAM,CAAC,IAAI,CAAC1D,KAAK,EAAE+D,IAAAA,CAAAA,CAAAA;AAC5CtB,QAAAA,GAAAA,CAAImB,MAAM,EAAA,CAAA;AACd,KAAA;AAEQb,IAAAA,UAAAA,CACJN,GAA6B,EAC7BO,KAAa,EACblB,EAAU,EAAEE,EAAU,EACxB;AACE,QAAA,IAAI,CAAC,IAAI,CAAC3C,MAAM,EAAE,OAAA;QAElB,MAAM2E,EAAAA,GAAK,CAAIlC,GAAAA,EAAAA,CAAAA;AACf,QAAA,MAAMmC,KAAK,CAAIjC,GAAAA,EAAAA,CAAAA;AACf,QAAA,MAAMkC,KAAK,CAAC,IAAIF,EAAC,IAAK;AACtB,QAAA,MAAMG,EAAK,GAAC,CAAA,CAAA,GAAIF,EAAC,IAAK,CAAA,CAAA;AACtB,QAAA,MAAM1F,KAAK,IAAI,CAACwC,GAAG,GAAG;AACtB,QAAA,MAAMvC,EAAK,GAAA,IAAI,CAACyC,GAAG,GAAG,CAAA,CAAA;AAEtB,QAAA,MAAMmD,UAAU7Q,IAAKhG,CAAAA,GAAG,CAAC,GAAK,EAAA,IAAI,CAACyS,KAAK,CAAA,CAAA;AACxC,QAAA,MAAMqE,IAAO,GAAA,CAAA,IAAKD,OAAAA,GAAU,CAAA,CAAA,CAAA;AAC5B,QAAA,MAAME,KAAQ,GAAA,IAAI,CAACjF,MAAM,CAACkF,gBAAgB,EAAA,CAAA;QAE1C,MAAM9E,GAAAA,GAAMvL,MAAOwL,CAAAA,gBAAgB,IAAI,CAAA,CAAA;AACvC,QAAA,MAAM8E,KAAK,IAAI,CAAChD,MAAM,CAAC1E,CAAC,GAAG2C,GAAAA,CAAAA;AAC3B,QAAA,MAAMgF,KAAK,IAAI,CAACjD,MAAM,CAACzE,CAAC,GAAG0C,GAAAA,CAAAA;AAE3B,QAAA,IAAIiF,QAAW,GAAA,IAAA,CAAA;AACf,QAAA,IAAIC,QAAW,GAAA,IAAA,CAAA;AACf,QAAA,IAAIC,YAAe,GAAA,IAAA,CAAA;;AAGnBnC,QAAAA,GAAAA,CAAIY,SAAS,GAAG,CAAA,CAAA;AAChBZ,QAAAA,GAAAA,CAAIa,WAAW,GAAGN,KAAAA,CAAAA;AAClBP,QAAAA,GAAAA,CAAIG,SAAS,GAAGI,KAAAA,CAAAA;;AAGhBP,QAAAA,GAAAA,CAAIc,SAAS,EAAA,CAAA;AACb,QAAA,IAAK,IAAI5I,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIyJ,SAASzJ,CAAK,EAAA,CAAA;YAC9B,IAAIkK,CAAAA,GAAI,IAAI,CAACxF,MAAM,CAACyF,QAAQ,CAACnK,IAAI0J,IAAMC,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,YAAA,IAAIxH,CAAI,GAAA,IAAI,CAACkD,KAAK,IAAK6E,CAAAA,CAAAA,CAAE/H,CAAC,GAAGyB,EAAC,IAAKyF,KAAKE,EAAC,CAAA,CAAA;AACzC,YAAA,IAAInH,CAAI,GAAA,IAAI,CAACkD,KAAK,IAAI,CAAA,GAAI,CAACzB,KAAKqG,CAAE9H,CAAAA,CAAC,IAAIkH,KAAKE,EAAC,CAAA,CAAA;YAE7C,IAAIO,QAAAA,KAAa,QAAQpG,OAAQkG,CAAAA,EAAAA,EAAIC,IAAI3H,CAAGC,EAAAA,CAAAA,EAAG,IAAI,EAAK,CAAA,EAAA;gBACpD2H,QAAWG,GAAAA,CAAAA,CAAAA;AACf,aAAA;AAEA,YAAA,IAAID,YAAcnC,EAAAA,GAAAA,CAAIgB,MAAM,CAAC3G,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;iBAC3B0F,GAAIiB,CAAAA,MAAM,CAAC5G,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;YACnB6H,YAAe,GAAA,KAAA,CAAA;AACnB,SAAA;AACAnC,QAAAA,GAAAA,CAAImB,MAAM,EAAA,CAAA;QACVnB,GAAIiB,CAAAA,MAAM,CAAC,IAAI,CAAC1D,KAAK,EAAE,IAAI,CAACC,KAAK,CAAA,CAAA;AACjCwC,QAAAA,GAAAA,CAAIsC,SAAS,EAAA,CAAA;QACbtC,GAAIG,CAAAA,SAAS,GAAGjE,KAAAA,CAAMI,KAAK,CAAA;AAC3B0D,QAAAA,GAAAA,CAAIhF,IAAI,EAAA,CAAA;;AAGR,QAAA,MAAMuH,MAAS,GAAA,IAAI,CAAC3F,MAAM,CAAC2F,MAAM,CAAA;QACjC,IAAK,IAAIrK,IAAI,CAAGA,EAAAA,CAAAA,GAAIqK,OAAOnS,MAAM,GAAG,GAAG8H,CAAK,EAAA,CAAA;YACxC,IAAIkK,CAAAA,GAAIG,MAAM,CAACrK,CAAE,CAAA,CAAA;AACjB,YAAA,IAAImC,CAAI,GAAA,IAAI,CAACkD,KAAK,IAAK6E,CAAAA,CAAAA,CAAE/H,CAAC,GAAGyB,EAAC,IAAKyF,KAAKE,EAAC,CAAA,CAAA;AACzC,YAAA,IAAInH,CAAI,GAAA,IAAI,CAACkD,KAAK,IAAI,CAAA,GAAI,CAACzB,KAAKqG,CAAE9H,CAAAA,CAAC,IAAIkH,KAAKE,EAAC,CAAA,CAAA;YAE7C,IAAIQ,QAAAA,KAAa,QAAQrG,OAAQkG,CAAAA,EAAAA,EAAIC,IAAI3H,CAAGC,EAAAA,CAAAA,EAAG,IAAI,EAAK,CAAA,EAAA;gBACpD4H,QAAWE,GAAAA,CAAAA,CAAAA;AACf,aAAA;AAEApC,YAAAA,GAAAA,CAAIG,SAAS,GAAGiC,CAAMF,KAAAA,QAAAA,IAAYE,CAAM,KAAA,IAAI,CAACpD,cAAc,GAAG9C,KAAAA,CAAMM,QAAQ,GAAGN,MAAMK,KAAK,CAAA;AAC1FyD,YAAAA,GAAAA,CAAII,QAAQ,CAAC/F,CAAAA,GAAI,GAAKC,EAAAA,CAAAA,GAAI,KAAK,CAAG,EAAA,CAAA,CAAA,CAAA;AACtC,SAAA;;AAGA,QAAA,IAAI,IAAI,CAAC6D,eAAe,IAAI+D,QAAU,EAAA;YAClC,IAAI,CAAC/D,eAAe,GAAG,KAAA,CAAA;AACvBoE,YAAAA,MAAAA,CAAOnW,MAAM,CAACmW,MAAOlW,CAAAA,OAAO,CAAC6V,QAAW,CAAA,EAAA,CAAA,CAAA,CAAA;AACxC,YAAA,IAAI,CAACpE,eAAe,IAAI,IAAI,CAACA,eAAe,CAACoE,QAAAA,CAAAA,CAAAA;AACjD,SAAA;AACA,QAAA,IAAI,IAAI,CAAC/D,eAAe,IAAI8D,QAAU,EAAA;YAClC,IAAI,CAAC9D,eAAe,GAAG,KAAA,CAAA;YACvB,IAAIqE,EAAAA,GAAK,CAACT,EAAK,GAAA,IAAI,CAACxE,KAAK,GAAGkE,EAAC,IAAKF,EAAKzF,GAAAA,EAAAA,CAAAA;YACvC,IAAI2G,EAAAA,GAAK1G,EAAK,GAACiG,CAAAA,EAAAA,GAAK,IAAI,CAACxE,KAAK,GAAGkE,EAAK,GAAA,CAAA,IAAKF,EAAAA,CAAAA;AAC3C,YAAA,IAAIY,IAAI,IAAI,CAACxF,MAAM,CAACkF,gBAAgB,CAACU,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AACzCF,YAAAA,MAAAA,CAAOjV,IAAI,CAAC8U,CAAAA,CAAAA,CAAAA;YACZG,MAAOG,CAAAA,IAAI,CAAC,CAACxO,CAAAA,EAAGtE,IAAMsE,CAAEmG,CAAAA,CAAC,GAAGzK,CAAAA,CAAEyK,CAAC,CAAA,CAAA;AAC/B,YAAA,IAAI,CAAC2D,aAAa,IAAI,IAAI,CAACA,aAAa,CAACoE,CAAAA,CAAAA,CAAAA;AAC7C,SAAA;AACA,QAAA,IAAI,IAAI,CAACvD,kBAAkB,IAAIqD,QAAU,EAAA;YACrC,IAAI,CAACrD,kBAAkB,GAAG,KAAA,CAAA;YAC1B,IAAI,CAAC8D,WAAW,CAACT,QAAAA,CAAAA,CAAAA;AACrB,SAAA;QACA,IAAI,CAAC/D,eAAe,GAAG,KAAA,CAAA;QACvB,IAAI,CAACU,kBAAkB,GAAG,KAAA,CAAA;AAC9B,KAAA;AAEA+D,IAAAA,QAAAA,CAASjG,KAAsB,EAAE;QAC7B,IAAI,CAACC,MAAM,GAAGD,KAAAA,CAAAA;QACd,IAAI,CAACqC,cAAc,GAAG,IAAA,CAAA;AACtB,QAAA,IAAI,CAACtB,eAAe,IAAI,IAAI,CAACA,eAAe,CAACf,KAAAA,CAAAA,CAAAA;AAC7C,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAkG,IAAAA,YAAAA,CAAaC,IAAY,EAAE;QACvB,IAAI,IAAI,CAAC9D,cAAc,EAAE;AACrB,YAAA,IAAI,CAACA,cAAc,CAAC8D,IAAI,GAAGA,IAAAA,CAAAA;YAC3B,IAAI,CAAClF,eAAe,IAAI,IAAI,CAACA,eAAe,CAAC,IAAI,CAACoB,cAAc,CAAA,CAAA;AACpE,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAW,WAAYtF,CAAAA,CAAS,EAAEC,CAAS,EAAE;QAC9B,IAAI,IAAI,CAAC0E,cAAc,EAAE;YACrB,IAAI,CAACA,cAAc,CAAC+D,GAAG,CAACrH,KAAMrB,CAAAA,CAAAA,EAAG,CAAG,EAAA,CAAA,CAAA,EAAIqB,KAAMpB,CAAAA,CAAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACpD,YAAA,IAAI,CAACsC,MAAM,CAAC2F,MAAM,CAACG,IAAI,CAAC,CAACxO,CAAAA,EAAGtE,CAAMsE,GAAAA,CAAAA,CAAEmG,CAAC,GAAGzK,EAAEyK,CAAC,CAAA,CAAA;YAC3C,IAAI,CAACuD,eAAe,IAAI,IAAI,CAACA,eAAe,CAAC,IAAI,CAACoB,cAAc,CAAA,CAAA;AACpE,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA2D,IAAAA,WAAAA,CAAYd,KAAmB,EAAE;AAC7B,QAAA,IAAIA,KAAO,EAAA;YACP,IAAI,CAAC7C,cAAc,GAAG6C,KAAAA,CAAAA;AACtB,YAAA,IAAI,CAACpC,MAAM,GAAGoC,KAAAA,CAAMxH,CAAC,CAAA;AACrB,YAAA,IAAI,CAACqF,MAAM,GAAGmC,KAAAA,CAAMvH,CAAC,CAAA;AACrB,YAAA,IAAI,CAACsD,eAAe,IAAI,IAAI,CAACA,eAAe,CAACiE,KAAAA,CAAAA,CAAAA;SAE5C,MAAA;YACD,IAAI,CAAC7C,cAAc,GAAG,IAAA,CAAA;AAC1B,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IA/RAvS,WAAc,EAAA;aAlCN8Q,KAAgB,GAAA,CAAA,CAAA;aAChBC,KAAgB,GAAA,CAAA,CAAA;aAChBc,GAAc,GAAA,CAAA,CAAA;aACdE,GAAc,GAAA,CAAA,CAAA;aACdc,GAAc,GAAA,CAAA,CAAA;aACdE,MAAkB,GAAA,KAAA,CAAA;aAClBO,WAAuB,GAAA,IAAA,CAAA;aAEvBhB,MAAmC,GAAA;YAAE1E,CAAG,EAAA,CAAA;YAAGC,CAAG,EAAA,CAAA;AAAE,SAAA,CAAA;aAChDmE,WAAsB,GAAA,CAAA,CAAA;aACtBE,WAAsB,GAAA,CAAA,CAAA;aACtBN,MAAiB,GAAA,CAAA,CAAA;aACjBE,MAAiB,GAAA,CAAA,CAAA;aACjBkB,MAAiB,GAAA,CAAA,CAAA;aACjBC,MAAiB,GAAA,CAAA,CAAA;AACjBZ,QAAAA,IAAAA,CAAAA,OAAAA,GAAkB,CAAC,CAAA,CAAA;aAEnBlC,MAA0B,GAAA,IAAA,CAAA;aAC1BoC,cAA8B,GAAA,IAAA,CAAA;aAC9Bb,eAA2B,GAAA,KAAA,CAAA;aAC3BU,kBAA8B,GAAA,KAAA,CAAA;AAelC,QAAA,IAAI,CAACnC,OAAO,GAAG9P,QAAAA,CAASC,aAAa,CAAC,QAAA,CAAA,CAAA;QACtC,IAAI,CAACoT,QAAQ,GAAG,IAAI,CAACvD,OAAO,CAACsG,UAAU,CAAC,IAAA,CAAA,CAAA;QAExC,MAAMjG,MAAAA,GAAS,IAAI,CAACL,OAAO,CAAA;QAC3BK,MAAO5P,CAAAA,gBAAgB,CAAC,WAAaC,EAAAA,CAAAA,IAAK,IAAI,CAACgR,YAAY,CAAChR,CAAAA,CAAAA,CAAAA,CAAAA;QAC5D2P,MAAO5P,CAAAA,gBAAgB,CAAC,SAAWC,EAAAA,CAAAA,IAAK,IAAI,CAAC6R,UAAU,CAAC7R,CAAAA,CAAAA,CAAAA,CAAAA;QACxD2P,MAAO5P,CAAAA,gBAAgB,CAAC,YAAcC,EAAAA,CAAAA,IAAK,IAAI,CAAC6R,UAAU,CAAC7R,CAAAA,CAAAA,CAAAA,CAAAA;QAC3D2P,MAAO5P,CAAAA,gBAAgB,CAAC,WAAaC,EAAAA,CAAAA,IAAK,IAAI,CAAC8R,YAAY,CAAC9R,CAAAA,CAAAA,CAAAA,CAAAA;QAC5D2P,MAAO5P,CAAAA,gBAAgB,CAAC,OAASC,EAAAA,CAAAA,IAAK,IAAI,CAACwS,QAAQ,CAACxS,CAAAA,CAAAA,CAAAA,CAAAA;QACpD2P,MAAO5P,CAAAA,gBAAgB,CAAC,UAAYC,EAAAA,CAAAA,IAAK,IAAI,CAAC6Q,WAAW,CAAC7Q,CAAAA,CAAAA,CAAAA,CAAAA;AAC9D,KAAA;AAqRJ,CAAA;AAEA,SAAS6V,gBAAgBC,IAAY,EAAA;IACjC,MAAMC,SAAAA,GAAYvW,QAASC,CAAAA,aAAa,CAAC,UAAA,CAAA,CAAA;AACzCsW,IAAAA,SAAAA,CAAU1X,KAAK,GAAGyX,IAAAA,CAAAA;IAElBtW,QAASmJ,CAAAA,IAAI,CAAC7I,WAAW,CAACiW,SAAAA,CAAAA,CAAAA;AAE1BA,IAAAA,SAAAA,CAAUpL,MAAM,EAAA,CAAA;AAChBoL,IAAAA,SAAAA,CAAUC,iBAAiB,CAAC,CAAG,EAAA,KAAA,CAAA,CAAA;AAE/BxW,IAAAA,QAAAA,CAASyW,WAAW,CAAC,MAAA,CAAA,CAAA;IACrBzW,QAASmJ,CAAAA,IAAI,CAACvJ,WAAW,CAAC2W,SAAAA,CAAAA,CAAAA;AAC9B,CAAA;AAEA,SAASG,YAAAA,CAAarU,CAAS,EAAEsU,cAAuB,EAAA;IACpD,OAAO1R,UAAAA,CAAW5C,CAAEuU,CAAAA,OAAO,CAACD,cAAAA,CAAAA,CAAAA,CAAAA;AAChC,CAAA;AAEO,MAAME,WAAAA,CAAAA;AAcT,IAAA,IAAIrL,GAAM,GAAA;QACN,OAAO,IAAI,CAACsL,IAAI,CAAA;AACpB,KAAA;AA+EA3a,IAAAA,QAAAA,CAASC,QAAkB,EAAE;QACzB,IAAI,CAACC,SAAS,GAAGD,QAAAA,CAAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEQ2a,IAAAA,YAAAA,CAAaC,OAAe,EAAE;QAClC,IAAK,IAAI1L,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAAC2L,KAAK,CAACzT,MAAM,EAAE8H,CAAK,EAAA,CAAA;YACxC,IAAIA,CAAAA,KAAM0L,OAAS,EAAA,IAAI,CAACC,KAAK,CAAC3L,CAAAA,CAAE,CAAC9N,SAAS,CAAC0C,GAAG,CAAC,UAAA,CAAA,CAAA;iBAC1C,IAAI,CAAC+W,KAAK,CAAC3L,CAAAA,CAAE,CAAC9N,SAAS,CAACmE,MAAM,CAAC,UAAA,CAAA,CAAA;AACxC,SAAA;QACA,IAAI,CAACuV,WAAW,CAAClB,QAAQ,CAAC,IAAI,CAACmB,OAAO,CAACH,OAAQ,CAAA,CAAA,CAAA;AACnD,KAAA;AAEQI,IAAAA,iBAAAA,CAAkBC,GAAW,EAAE;AACnC,QAAA,IAAIA,QAAQ,CAAG,EAAA;AACX,YAAA,IAAI,CAACC,UAAU,CAAC9Z,SAAS,CAAC0C,GAAG,CAAC,UAAA,CAAA,CAAA;AAC9B,YAAA,IAAI,CAACqX,SAAS,CAAC/Z,SAAS,CAACmE,MAAM,CAAC,UAAA,CAAA,CAAA;SAE/B,MAAA;AACD,YAAA,IAAI,CAAC2V,UAAU,CAAC9Z,SAAS,CAACmE,MAAM,CAAC,UAAA,CAAA,CAAA;AACjC,YAAA,IAAI,CAAC4V,SAAS,CAAC/Z,SAAS,CAAC0C,GAAG,CAAC,UAAA,CAAA,CAAA;AACjC,SAAA;AACJ,KAAA;AAEQ4Q,IAAAA,eAAAA,CAAgBf,KAAsB,EAAE;AAC5C,QAAA,MAAM4F,SAAS,IAAI,CAACuB,WAAW,CAACnH,KAAK,CAAC4F,MAAM,CAAA;QAC5C,IAAI,CAAC6B,gBAAgB,CAAC1Z,KAAK,CAACC,OAAO,GAAG4X,MAAOnS,CAAAA,MAAM,GAAG,CAAA,GAAI,MAAS,GAAA,MAAA,CAAA;AACnE,QAAA,IAAI,CAAC0T,WAAW,CAACnB,WAAW,CAACJ,MAAAA,CAAOnS,MAAM,GAAG,CAAImS,GAAAA,MAAM,CAAC,CAAA,CAAE,GAAG,IAAA,CAAA,CAAA;AACjE,KAAA;IAEQ8B,aAAgB,GAAA;AACpB,QAAA,IAAI,CAACP,WAAW,CAACnE,WAAW,CAAC9N,WAAW,IAAI,CAACyS,UAAU,CAAC7Y,KAAK,CAAGoG,EAAAA,UAAAA,CAAW,IAAI,CAAC0S,UAAU,CAAC9Y,KAAK,CAAA,CAAA,CAAA;AACpG,KAAA;AAEQuS,IAAAA,aAAAA,CAAc6D,KAAkB,EAAE;AACtC,QAAA,MAAMU,SAAS,IAAI,CAACuB,WAAW,CAACnH,KAAK,CAAC4F,MAAM,CAAA;QAC5C,IAAI,CAAC6B,gBAAgB,CAAC1Z,KAAK,CAACC,OAAO,GAAG4X,MAAOnS,CAAAA,MAAM,GAAG,CAAA,GAAI,MAAS,GAAA,MAAA,CAAA;AACnE,QAAA,IAAI,CAAC0T,WAAW,CAACnB,WAAW,CAACd,KAAAA,CAAAA,CAAAA;AACjC,KAAA;AAEQ/D,IAAAA,eAAAA,CAAgB+D,KAAkB,EAAE;AACxC,QAAA,MAAMU,SAAS,IAAI,CAACuB,WAAW,CAACnH,KAAK,CAAC4F,MAAM,CAAA;QAC5C,IAAI,CAAC6B,gBAAgB,CAAC1Z,KAAK,CAACC,OAAO,GAAG4X,MAAOnS,CAAAA,MAAM,GAAG,CAAA,GAAI,MAAS,GAAA,MAAA,CAAA;AACnE,QAAA,IAAI,CAAC0T,WAAW,CAACnB,WAAW,CAACJ,MAAAA,CAAOnS,MAAM,GAAG,CAAImS,GAAAA,MAAM,CAAC,CAAA,CAAE,GAAG,IAAA,CAAA,CAAA;AACjE,KAAA;AAEQ3E,IAAAA,eAAAA,CAAgBiE,KAAkB,EAAE;AACxC,QAAA,IAAI2C,SAAY,GAAA,KAAA,CAAA;QAChB,IAAIC,WAAAA,GAAc,IAAI,CAACC,YAAY,CAAA;AACnC,QAAA,IAAID,WAAY3B,CAAAA,IAAI,KAAKjB,KAAAA,CAAMiB,IAAI,EAAE;YACjC2B,WAAY3B,CAAAA,IAAI,GAAGjB,KAAAA,CAAMiB,IAAI,CAAA;AAC7B,YAAA,IAAI,CAACkB,iBAAiB,CAACnC,KAAAA,CAAMiB,IAAI,CAAA,CAAA;YACjC0B,SAAY,GAAA,IAAA,CAAA;AAChB,SAAA;AACA,QAAA,IAAI1T,IAAKwM,CAAAA,KAAK,CAACmH,WAAAA,CAAYpK,CAAC,GAAGwH,KAAAA,CAAMxH,CAAC,EAAEoK,YAAYnK,CAAC,GAAGuH,KAAMvH,CAAAA,CAAC,IAAI,KAAO,EAAA;YACtEmK,WAAYpK,CAAAA,CAAC,GAAGwH,KAAAA,CAAMxH,CAAC,CAAA;YACvBoK,WAAYnK,CAAAA,CAAC,GAAGuH,KAAAA,CAAMvH,CAAC,CAAA;AACvB,YAAA,IAAI,CAACgK,UAAU,CAAC7Y,KAAK,GAAGoG,UAAAA,CAAWgQ,KAAMxH,CAAAA,CAAC,CAACmJ,OAAO,CAAC,CAAA,CAAA,CAAA,CAAI3U,QAAQ,EAAA,CAAA;AAC/D,YAAA,IAAI,CAAC0V,UAAU,CAAC9Y,KAAK,GAAGoG,UAAAA,CAAWgQ,KAAMvH,CAAAA,CAAC,CAACkJ,OAAO,CAAC,CAAA,CAAA,CAAA,CAAI3U,QAAQ,EAAA,CAAA;YAC/D2V,SAAY,GAAA,IAAA,CAAA;AAChB,SAAA;AACA,QAAA,IAAIA,SAAW,EAAA;AACX,YAAA,IAAI,CAACV,WAAW,CAACnH,KAAK,CAACgI,WAAW,GAAG,IAAA,CAAA;YACrC,IAAI,CAAC1b,SAAS,IAAI,IAAI,CAACA,SAAS,CAAC,IAAI,CAAC2b,OAAO,CAAA,CAAA;AACjD,SAAA;AACJ,KAAA;IAEA9E,MAAS,GAAA;QACL,IAAI,CAACgE,WAAW,CAAChE,MAAM,EAAA,CAAA;AAC3B,KAAA;AAlJArT,IAAAA,WAAAA,CAAY8C,MAA2C,CAAE;AAhBjDsU,QAAAA,IAAAA,CAAAA,KAAAA,GAA0B,EAAE,CAAA;AAiBhC,QAAA,IAAI,CAACH,IAAI,GAAG9W,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACnC,QAAA,IAAI,CAAC6W,IAAI,CAACtZ,SAAS,CAAC0C,GAAG,CAAC,cAAA,CAAA,CAAA;AACxBF,QAAAA,QAAAA,CAASmJ,IAAI,CAAC7I,WAAW,CAAC,IAAI,CAACwW,IAAI,CAAA,CAAA;QAEnC,IAAImB,QAAAA,GAAWjY,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CAAA;QACtCgY,QAASza,CAAAA,SAAS,CAAC0C,GAAG,CAAC,WAAA,CAAA,CAAA;QACvB+X,QAASC,CAAAA,UAAU,GAAG,CAAC1X,CAAAA,GAAAA;AACnBA,YAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;YAChB,IAAI2Q,IAAAA,GAAO,IAAI,CAACa,OAAO,CAAC9P,GAAG,CAAChF,CAAAA,CAAKA,GAAAA,CAAAA,CAAEsT,MAAM,CAACnS,MAAM,GAAG,GAAMnB,GAAAA,CAAAA,CAAEsT,MAAM,CAACtO,GAAG,CAACmO,CAAAA,CAAK,GAAA,CAAC,EAAEkB,YAAalB,CAAAA,CAAAA,CAAE/H,CAAC,EAAE,CAAA,CAAA,CAAG,CAAC,EAAEiJ,YAAAA,CAAalB,CAAE9H,CAAAA,CAAC,EAAE,CAAA,CAAA,CAAG,CAAC,EAAE8H,CAAAA,CAAEU,IAAI,CAAC,CAAC,EAAEiC,IAAI,CAAC,GAAMA,CAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA;YACxJ9B,eAAgBC,CAAAA,IAAAA,CAAAA,CAAAA;YAChB8B,KAAM,CAAA,qBAAA,CAAA,CAAA;AACV,SAAA,CAAA;AACA,QAAA,IAAI,CAACtB,IAAI,CAACxW,WAAW,CAAC2X,QAAAA,CAAAA,CAAAA;AAEtB,QAAA,IAAII,MAASlX,GAAAA,KAAAA,CAAMC,OAAO,CAACuB,UAAUA,MAAS,GAAA;AAACA,YAAAA,MAAAA;AAAO,SAAA,CAAA;QACtD,IAAI0V,MAAAA,CAAO7U,MAAM,GAAG,CAAG,EAAA;AACnB,YAAA,IAAK,IAAI8H,CAAI,GAAA,CAAA,EAAGA,IAAI+M,MAAO7U,CAAAA,MAAM,EAAE8H,CAAK,EAAA,CAAA;gBACpC,IAAI/D,CAAAA,GAAI8Q,MAAM,CAAC/M,CAAE,CAAA,CAAA;gBACjB,IAAI+L,GAAAA,GAAMrX,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CAAA;gBACjCoX,GAAI7Z,CAAAA,SAAS,CAAC0C,GAAG,CAAC,eAAA,CAAA,CAAA;AAClBmX,gBAAAA,GAAAA,CAAI/K,WAAW,GAAG/E,CAAAA,CAAExL,IAAI,IAAIuP,EAAErJ,QAAQ,EAAA,CAAA;AACtCoV,gBAAAA,GAAAA,CAAIiB,OAAO,GAAG,IAAM,IAAI,CAACvB,YAAY,CAACzL,CAAAA,CAAAA,CAAAA;AACtC2M,gBAAAA,QAAAA,CAAS3X,WAAW,CAAC+W,GAAAA,CAAAA,CAAAA;AACrB,gBAAA,IAAI,CAACJ,KAAK,CAACvW,IAAI,CAAC2W,GAAAA,CAAAA,CAAAA;AACpB,aAAA;AACJ,SAAA;QACA,IAAI,CAACW,OAAO,GAAGrV,MAAAA,CAAAA;QACf,IAAI,CAACwU,OAAO,GAAGkB,MAAAA,CAAAA;QACf,IAAI,CAACP,YAAY,GAAGO,MAAM,CAAC,CAAE,CAAA,CAACnD,gBAAgB,CAAC,CAAG,EAAA,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;QACtD,IAAI,CAACgC,WAAW,GAAG,IAAIrH,UAAAA,EAAAA,CAAAA;QACvB,IAAI,CAACqH,WAAW,CAAC1L,GAAG,CAAChO,SAAS,CAAC0C,GAAG,CAAC,aAAA,CAAA,CAAA;QACnC,IAAI,CAACgX,WAAW,CAACrG,cAAc,CAACtJ,CAAAA,CAAK,GAAA,IAAI,CAACuJ,eAAe,CAACvJ,CAAAA,CAAAA,CAAAA,CAAAA;QAC1D,IAAI,CAAC2P,WAAW,CAACnG,cAAc,CAACyE,CAAAA,CAAK,GAAA,IAAI,CAACxE,eAAe,CAACwE,CAAAA,CAAAA,CAAAA,CAAAA;QAC1D,IAAI,CAAC0B,WAAW,CAAC/F,YAAY,CAACqE,CAAAA,CAAK,GAAA,IAAI,CAACpE,aAAa,CAACoE,CAAAA,CAAAA,CAAAA,CAAAA;QACtD,IAAI,CAAC0B,WAAW,CAACjG,cAAc,CAACuE,CAAAA,CAAK,GAAA,IAAI,CAACtE,eAAe,CAACsE,CAAAA,CAAAA,CAAAA,CAAAA;QAC1D,IAAI,CAACsB,IAAI,CAACxW,WAAW,CAAC,IAAI,CAAC4W,WAAW,CAAC1L,GAAG,CAAA,CAAA;AAE1C,QAAA,IAAI,CAACgM,gBAAgB,GAAGxX,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AAC/C,QAAA,IAAI,CAACuX,gBAAgB,CAACha,SAAS,CAAC0C,GAAG,CAAC,mBAAA,CAAA,CAAA;AACpC,QAAA,IAAI,CAACsX,gBAAgB,CAAC1Z,KAAK,CAACC,OAAO,GAAG,MAAA,CAAA;AACtC,QAAA,IAAI,CAAC+Y,IAAI,CAACxW,WAAW,CAAC,IAAI,CAACkX,gBAAgB,CAAA,CAAA;AAE3C,QAAA,IAAI,CAACF,UAAU,GAAGtX,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACzC,QAAA,IAAI,CAACqX,UAAU,CAAC9Z,SAAS,CAAC0C,GAAG,CAAC,eAAA,CAAA,CAAA;AAC9B,QAAA,IAAI,CAACoX,UAAU,CAACpb,SAAS,YAAW,CAAC;;;;;QAKrC,CAAC,CAAA;AACD,QAAA,IAAI,CAACsb,gBAAgB,CAAClX,WAAW,CAAC,IAAI,CAACgX,UAAU,CAAA,CAAA;AAEjD,QAAA,IAAI,CAACC,SAAS,GAAGvX,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACxC,QAAA,IAAI,CAACsX,SAAS,CAAC/Z,SAAS,CAAC0C,GAAG,CAAC,eAAA,CAAA,CAAA;AAC7B,QAAA,IAAI,CAACqX,SAAS,CAACrb,SAAS,YAAW,CAAC;;;;;QAKpC,CAAC,CAAA;AACD,QAAA,IAAI,CAACsb,gBAAgB,CAAClX,WAAW,CAAC,IAAI,CAACiX,SAAS,CAAA,CAAA;QAEhD,IAAI,CAACD,UAAU,CAACgB,OAAO,GAAG,IAAM,IAAI,CAACpB,WAAW,CAACjB,YAAY,CAAC,CAAA,CAAA,CAAA;QAC9D,IAAI,CAACsB,SAAS,CAACe,OAAO,GAAG,IAAM,IAAI,CAACpB,WAAW,CAACjB,YAAY,CAAC,CAAA,CAAA,CAAA;AAE7D,QAAA,IAAI,CAACyB,UAAU,GAAG1X,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;QACzC,IAAI,CAACyX,UAAU,CAACa,QAAQ,GAAG,CAAC/X,CAAAA,GAAM,IAAI,CAACiX,aAAa,EAAA,CAAA;AACpD,QAAA,IAAI,CAACD,gBAAgB,CAAClX,WAAW,CAAC,IAAI,CAACoX,UAAU,CAAA,CAAA;AAEjD,QAAA,IAAI,CAACC,UAAU,GAAG3X,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;QACzC,IAAI,CAAC0X,UAAU,CAACY,QAAQ,GAAG,CAAC/X,CAAAA,GAAM,IAAI,CAACiX,aAAa,EAAA,CAAA;AACpD,QAAA,IAAI,CAACD,gBAAgB,CAAClX,WAAW,CAAC,IAAI,CAACqX,UAAU,CAAA,CAAA;QAEjD,IAAI,CAACZ,YAAY,CAAC,CAAA,CAAA,CAAA;AACtB,KAAA;AAwEJ;;AChhBO,MAAMyB,eAAwB1c,SAAAA,UAAAA,CAAAA;IAcjCmI,kBAAqB,GAAA;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC3H,MAAM,CAACsC,OAAO,CAAA;AAC/B,KAAA;IAEAK,aAAgB,GAAA;QACZ,IAAI,CAACwZ,YAAY,CAACvF,MAAM,EAAA,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAlBArT,IAAAA,WAAAA,CACIvD,MAAW,EACX4C,MAAc,EACdC,QAAgB,CAClB;QACE,KAAK,CAAC7C,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,OAAA,CAAA,CAAA;AAChC,QAAA,IAAI,CAACsZ,YAAY,GAAG,IAAI5B,WAAY,CAAA,IAAI,CAACna,QAAQ,EAAA,CAAA,CAAA;QACjD,IAAI,CAAC+b,YAAY,CAACtc,QAAQ,CAACkG,CAAAA,CAAK,GAAA,IAAI,CAACrF,QAAQ,CAACqF,CAAAA,CAAAA,CAAAA,CAAAA;QAC9C,IAAI,CAAChC,OAAO,CAACC,WAAW,CAAC,IAAI,CAACmY,YAAY,CAACjN,GAAG,CAAA,CAAA;AAClD,KAAA;AAUJ;;ACtBO,MAAMkN,iBAA0B5c,SAAAA,UAAAA,CAAAA;IAsCnC6C,YAAwB,GAAA;AACpB,QAAA,OAAO,IAAI,CAACga,YAAY,IAAI,KAAK,CAACha,YAAAA,EAAAA,CAAAA;AACtC,KAAA;IAEAM,aAAgB,GAAA;QACZ,MAAMkR,MAAAA,GAAS,IAAI,CAACyI,OAAO,CAAA;QAC3B,MAAMC,OAAAA,GAAU1I,MAAOiG,CAAAA,UAAU,CAAC,IAAA,CAAA,CAAA;QAElC,IAAI0C,OAAAA,GAAU,IAAI,CAACpc,QAAQ,EAAA,CAAA;AAC3B,QAAA,IAAIoc,OAAS,EAAA;YACT,IAAIC,KAAAA,GAAQD,QAAQC,KAAK,CAAA;AACzB,YAAA,IAAIA,KAASA,IAAAA,KAAAA,CAAMvU,KAAK,GAAG,CAAG,EAAA;AAE1B,gBAAA,IAAI,CAACwU,MAAM,CAAC1M,WAAW,GAAG,CAAC,EAAEyM,KAAMvU,CAAAA,KAAK,CAAC,CAAC,EAAEuU,KAAM7I,CAAAA,MAAM,CAAC,CAAC,CAAA;AAC1DC,gBAAAA,MAAAA,CAAO8I,KAAK,GAAGH,OAAQI,CAAAA,UAAU,IAAI,EAAA,CAAA;gBACrC/I,MAAOD,CAAAA,MAAM,GAAGC,MAAO3L,CAAAA,KAAK,GAAGuU,KAAMvU,CAAAA,KAAK,GAAGuU,KAAAA,CAAM7I,MAAM,CAAA;gBAEzD,IAAI,IAAI,CAACiJ,QAAQ,EAAE;oBACf,MAAM5K,CAAAA,GAAI,KAAK6K,CAAI,GAAA,GAAA,GAAML,MAAMvU,KAAK,GAAGuU,MAAM7I,MAAM,CAAA;oBACnD2I,OAAQQ,CAAAA,SAAS,CAAC,IAAI,CAACF,QAAQ,CAACL,OAAAA,EAASvK,CAAG6K,EAAAA,CAAAA,CAAAA,EAAI,CAAG,EAAA,CAAA,EAAG7K,IAAI,GAAK6K,EAAAA,CAAAA,GAAI,GAAK,EAAA,CAAA,EAAG,CAAGjJ,EAAAA,MAAAA,CAAO3L,KAAK,EAAE2L,MAAAA,CAAOD,MAAM,CAAA,CAAA;AAC7G,iBAAA;aAEC,MAAA;AACDC,gBAAAA,MAAAA,CAAO8I,KAAK,GAAGH,OAAQI,CAAAA,UAAU,GAAG,UAAA,CAAA;AACxC,aAAA;SAEC,MAAA;AACD/I,YAAAA,MAAAA,CAAO8I,KAAK,GAAG,OAAA,CAAA;AACnB,SAAA;AAEA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AA5DApZ,IAAAA,WAAAA,CACIvD,MAAW,EACX4C,MAAc,EACdC,QAAgB,CAClB;QACE,KAAK,CAAC7C,MAAQ4C,EAAAA,MAAAA,EAAQC,QAAU,EAAA,SAAA,CAAA,CAAA;aAb5BwZ,YAAwB,GAAA,KAAA,CAAA;QAe5B,MAAMW,KAAAA,GAAQ,IAAI,CAACjZ,OAAO,CAACC,WAAW,CAACN,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CAAA,CAAA;QAC9DqZ,KAAM9b,CAAAA,SAAS,CAAC0C,GAAG,CAAC,OAAA,CAAA,CAAA;QAEpB,IAAI,CAAC0Y,OAAO,GAAGU,KAAAA,CAAMhZ,WAAW,CAACN,QAAAA,CAASC,aAAa,CAAC,QAAA,CAAA,CAAA,CAAA;QAExD,MAAMsZ,KAAAA,GAAQ,IAAI,CAACP,MAAM,GAAGM,MAAMhZ,WAAW,CAACN,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CAAA,CAAA;QACrEsZ,KAAM/b,CAAAA,SAAS,CAAC0C,GAAG,CAAC,OAAA,CAAA,CAAA;QAEpB,IAAI4Y,OAAAA,GAAU,IAAI,CAACpc,QAAQ,EAAA,CAAA;QAC3B,IAAIoc,OAAAA,IAAWA,QAAQC,KAAK,IAAID,QAAQC,KAAK,CAACS,KAAK,EAAE;AAEjD,YAAA,MAAMC,QAAQH,KAAMhZ,CAAAA,WAAW,CAACN,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA,CAAA;YACvDwZ,KAAMjc,CAAAA,SAAS,CAAC0C,GAAG,CAAC,OAAA,CAAA,CAAA;AACpBuZ,YAAAA,KAAAA,CAAMnB,OAAO,GAAG,IAAA;AACZ,gBAAA,IAAI,CAACK,YAAY,GAAG,CAAC,IAAI,CAACA,YAAY,CAAA;gBACtC,IAAI,IAAI,CAACA,YAAY,EAAEc,MAAMjc,SAAS,CAAC0C,GAAG,CAAC,QAAA,CAAA,CAAA;qBACtCuZ,KAAMjc,CAAAA,SAAS,CAACmE,MAAM,CAAC,QAAA,CAAA,CAAA;AAChC,aAAA,CAAA;AAEJ,SAAA;AACJ,KAAA;AAkCJ;;AC9DO,MAAM+X,GAAAA,CAAAA;AAgHT;;;;;;;;;;;;;;QAeAxZ,GAAAA,CACIhB,MAAc,EACdC,QAAgB,EAChBwa,EAAiC,EACjCxb,GAAY,EACZC,IAAa,EACf;QACE,IAAIiD,MAAAA,CAAOsY,QAAQA,EAAI,EAAA;AACnB,YAAA,OAAO,IAAI/Y,gBAAAA,CAAiB,IAAI,EAAE1B,QAAQC,QAAUwa,EAAAA,EAAAA,CAAAA,CAAAA;AACxD,SAAA;QAEA,MAAM1c,YAAAA,GAAeiC,MAAM,CAACC,QAAS,CAAA,CAAA;AACrC,QAAA,OAAQ,OAAOlC,YAAAA;YACX,KAAK,QAAA;AACD,gBAAA,OAAO,IAAIyG,gBAAiB,CAAA,IAAI,EAAExE,MAAQC,EAAAA,QAAAA,EAAUwa,IAAcxb,GAAKC,EAAAA,IAAAA,CAAAA,CAAAA;YAC3E,KAAK,SAAA;AACD,gBAAA,OAAO,IAAIgM,iBAAAA,CAAkB,IAAI,EAAElL,MAAQC,EAAAA,QAAAA,CAAAA,CAAAA;YAC/C,KAAK,QAAA;AACD,gBAAA,OAAO,IAAImL,gBAAAA,CAAiB,IAAI,EAAEpL,MAAQC,EAAAA,QAAAA,CAAAA,CAAAA;YAC9C,KAAK,UAAA;AACD,gBAAA,OAAO,IAAIoL,kBAAAA,CAAmB,IAAI,EAAErL,MAAQC,EAAAA,QAAAA,CAAAA,CAAAA;AAEpD,SAAA;;QAGAsM,OAAQC,CAAAA,KAAK,CAAC,CAAC;qBACF,CAAC,EAAEvM,UAAU,CAAC;mBAChB,CAAC,EAAED,QAAQ,CAAC;AACb,kBAAA,CAAC,EAAEjC,YAAAA,CAAAA,CAAAA;AAGjB,KAAA;AAEA;;;;;;;;;;;;;;;;;;AAkBC,QACD2c,SACI1a,MAAc,EACdC,QAAgB,EAChByD,QAAAA,GAAmB,CAAC,EACtB;AACE,QAAA,OAAO,IAAI6H,eAAAA,CAAgB,IAAI,EAAEvL,QAAQC,QAAUyD,EAAAA,QAAAA,CAAAA,CAAAA;AACvD,KAAA;IAEAiX,UACI3a,CAAAA,MAAc,EACdC,QAAgB,EAClB;AACE,QAAA,OAAO,IAAIuZ,iBAAAA,CAAkB,IAAI,EAAExZ,MAAQC,EAAAA,QAAAA,CAAAA,CAAAA;AAC/C,KAAA;AACA;;;;;;;;QASA2a,SAAAA,CACI5a,MAAc,EACdC,QAAgB,EAChBjB,GAAY,EACZC,GAAY,EACZC,IAAa,EACf;AACE,QAAA,OAAO,IAAI+P,gBAAiB,CAAA,IAAI,EAAEjP,MAAQC,EAAAA,QAAAA,EAAUjB,KAAKC,GAAKC,EAAAA,IAAAA,CAAAA,CAAAA;AAClE,KAAA;IAEA2b,QACI7a,CAAAA,MAAc,EACdC,QAAgB,EAClB;AACE,QAAA,OAAO,IAAIqZ,eAAAA,CAAgB,IAAI,EAAEtZ,MAAQC,EAAAA,QAAAA,CAAAA,CAAAA;AAC7C,KAAA;AACA;;;;;;;;;;;;AAYC,QACD6a,SAAUf,CAAAA,KAAa,EAAE7Y,EAAAA,GAAa6Y,KAAK,EAAE;QACzC,MAAMgB,MAAAA,GAAS,IAAIP,GAAI,CAAA;AAAEpd,YAAAA,MAAAA,EAAQ,IAAI;AAAE2c,YAAAA,KAAAA;AAAO7Y,YAAAA,EAAAA;AAAG,SAAA,CAAA,CAAA;AACjD,QAAA,IAAI,IAAI,CAAC4J,IAAI,CAACkQ,aAAa,EAAED,OAAOE,KAAK,EAAA,CAAA;QACzC,OAAOF,MAAAA,CAAAA;AACX,KAAA;AAEA;;;;QAKAG,YAAAA,CAAaha,EAAU,EAAE;AACrB,QAAA,IAAI6Z,MAAS,GAAA,IAAI,CAACI,SAAS,CAACja,EAAAA,CAAAA,CAAAA;QAC5B,IAAI6Z,MAAAA,EAAQA,OAAO3a,OAAO,EAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AACA;;;;QAKA+a,SAAAA,CAAUja,EAAU,EAAE;QAClB,OAAO,IAAI,CAACka,OAAO,CAAClX,IAAI,CAACf,CAAAA,CAAAA,GAAKA,CAAEjC,CAAAA,EAAE,KAAKA,EAAAA,CAAAA,CAAAA;AAC3C,KAAA;AAEA;;;;;AAKC,QACDf,IAAKkb,CAAAA,GAAQ,EAAEC,SAAAA,GAAqB,IAAI,EAAE;QACtC,IAAID,GAAAA,CAAI7a,WAAW,EAAE;AACjB,YAAA,IAAI,CAACA,WAAW,CAAC8B,OAAO,CAAC+F,CAAAA,CAAAA,GAAAA;AACrB,gBAAA,IAAIA,aAAagD,kBAAoB,EAAA,OAAA;AACrC,gBAAA,IAAIhD,CAAEvL,CAAAA,KAAK,IAAIue,GAAAA,CAAI7a,WAAW,EAAE;AAC5B6H,oBAAAA,CAAAA,CAAElI,IAAI,CAACkb,GAAAA,CAAI7a,WAAW,CAAC6H,CAAAA,CAAEvL,KAAK,CAAC,CAAA,CAAA;AACnC,iBAAA;AACJ,aAAA,CAAA,CAAA;AACJ,SAAA;QAEA,IAAIwe,SAAAA,IAAaD,GAAID,CAAAA,OAAO,EAAE;AAC1B,YAAA,IAAI,CAACA,OAAO,CAAC9Y,OAAO,CAACiZ,CAAAA,CAAAA,GAAAA;AACjB,gBAAA,IAAIA,CAAEC,CAAAA,MAAM,IAAIH,GAAAA,CAAID,OAAO,EAAE;AACzBG,oBAAAA,CAAAA,CAAEpb,IAAI,CAACkb,GAAAA,CAAID,OAAO,CAACG,CAAAA,CAAEC,MAAM,CAAC,CAAA,CAAA;AAChC,iBAAA;AACJ,aAAA,CAAA,CAAA;AAEJ,SAAA;AAEA,QAAA,OAAO,IAAI,CAAA;AAEf,KAAA;AAEA;;;;;;;;;;;;;;;;;;;QAoBA5b,IAAAA,CAAK0b,SAAqB,GAAA,IAAI,EAAE;AAC5B,QAAA,MAAMD,GAAM,GAAA;AACR7a,YAAAA,WAAAA,EAAa,EAAC;AACd4a,YAAAA,OAAAA,EAAS,EAAC;AACd,SAAA,CAAA;AACA,QAAA,IAAI,CAAC5a,WAAW,CAAC8B,OAAO,CAAC+F,CAAAA,CAAAA,GAAAA;AACrB,YAAA,IAAIA,aAAagD,kBAAoB,EAAA,OAAA;AACrC,YAAA,IAAIhD,CAAEvL,CAAAA,KAAK,IAAIue,GAAAA,CAAI7a,WAAW,EAAE;gBAC5B,MAAM,IAAIib,MAAM,CAAC,yCAAyC,EAAEpT,CAAEvL,CAAAA,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA;AAC1E,aAAA;AACAue,YAAAA,GAAAA,CAAI7a,WAAW,CAAC6H,CAAAA,CAAEvL,KAAK,CAAC,GAAGuL,EAAEzI,IAAI,EAAA,CAAA;AACrC,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI0b,SAAW,EAAA;AACX,YAAA,IAAI,CAACF,OAAO,CAAC9Y,OAAO,CAACiZ,CAAAA,CAAAA,GAAAA;AACjB,gBAAA,IAAIA,CAAEC,CAAAA,MAAM,IAAIH,GAAAA,CAAID,OAAO,EAAE;oBACzB,MAAM,IAAIK,MAAM,CAAC,uCAAuC,EAAEF,CAAEC,CAAAA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA;AACzE,iBAAA;AACAH,gBAAAA,GAAAA,CAAID,OAAO,CAACG,CAAAA,CAAEC,MAAM,CAAC,GAAGD,EAAE3b,IAAI,EAAA,CAAA;AAClC,aAAA,CAAA,CAAA;AACJ,SAAA;QACA,OAAOyb,GAAAA,CAAAA;AACX,KAAA;AAEA;;;;;;;;QASAK,IAAAA,CAAKA,IAAgB,GAAA,IAAI,EAAE;QACvB,IAAI,CAACC,UAAU,CAAC,CAACD,IAAAA,CAAAA,CAAAA;QACjB,IAAI,CAACE,MAAM,CAACpZ,YAAY,CAAC,eAAiB,EAAA,CAAC,IAAI,CAAC9C,OAAO,CAAA,CAAA;QACvD,IAAI,CAACrB,UAAU,CAACC,SAAS,CAACC,MAAM,CAAC,QAAA,EAAU,IAAI,CAACmB,OAAO,CAAA,CAAA;AACvD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;AAGC,QACDub,KAAQ,GAAA;QACJ,OAAO,IAAI,CAACS,IAAI,CAAC,KAAA,CAAA,CAAA;AACrB,KAAA;AAEQC,IAAAA,UAAAA,CAAWE,MAAe,EAAE;AAChC,QAAA,IAAI,IAAI,CAACnc,OAAO,KAAKmc,MAAQ,EAAA,OAAA;QAC7B,IAAI,CAACnc,OAAO,GAAGmc,MAAAA,CAAAA;QACf,IAAI,CAACC,gBAAgB,CAAC,IAAI,CAAA,CAAA;AAC9B,KAAA;AAEA;;;;;;;;QASApd,IAAAA,CAAKA,IAAgB,GAAA,IAAI,EAAE;QACvB,IAAI,CAACC,OAAO,GAAG,CAACD,IAAAA,CAAAA;QAChB,IAAI,CAACL,UAAU,CAACO,KAAK,CAACC,OAAO,GAAG,IAAI,CAACF,OAAO,GAAG,MAAS,GAAA,EAAA,CAAA;AACxD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;AAGC,QACDG,IAAO,GAAA;QACH,OAAO,IAAI,CAACJ,IAAI,CAAC,KAAA,CAAA,CAAA;AACrB,KAAA;IAEAqd,YAAaL,CAAAA,IAAAA,GAAgB,IAAI,EAAE;;QAE/B,IAAI,CAACC,UAAU,CAAC,CAACD,IAAAA,CAAAA,CAAAA;QACjB,IAAI,CAACE,MAAM,CAACpZ,YAAY,CAAC,eAAiB,EAAA,CAAC,IAAI,CAAC9C,OAAO,CAAA,CAAA;;QAGvDI,qBAAsB,CAAA,IAAA;;AAElB,YAAA,MAAMkc,aAAgB,GAAA,IAAI,CAACvb,SAAS,CAACuK,YAAY,CAAA;AACjD,YAAA,IAAI,CAACvK,SAAS,CAAC7B,KAAK,CAACoS,MAAM,GAAGgL,aAAgB,GAAA,IAAA,CAAA;AAE9C,YAAA,IAAI,CAAC3d,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAAC,YAAA,CAAA,CAAA;AAE9B,YAAA,MAAMib,kBAAkB3a,CAAAA,CAAAA,GAAAA;AACpB,gBAAA,IAAIA,EAAEmC,MAAM,KAAK,IAAI,CAAChD,SAAS,EAAE,OAAA;AACjC,gBAAA,IAAI,CAACA,SAAS,CAAC7B,KAAK,CAACoS,MAAM,GAAG,EAAA,CAAA;AAC9B,gBAAA,IAAI,CAAC3S,UAAU,CAACC,SAAS,CAACmE,MAAM,CAAC,YAAA,CAAA,CAAA;AACjC,gBAAA,IAAI,CAAChC,SAAS,CAACmH,mBAAmB,CAAC,eAAiBqU,EAAAA,eAAAA,CAAAA,CAAAA;AACxD,aAAA,CAAA;AAEA,YAAA,IAAI,CAACxb,SAAS,CAACY,gBAAgB,CAAC,eAAiB4a,EAAAA,eAAAA,CAAAA,CAAAA;;YAGjD,MAAMC,YAAAA,GAAe,CAACR,IAAO,GAAA,CAAA,GAAI,IAAI,CAACjb,SAAS,CAACsK,YAAY,CAAA;YAC5D,IAAI,CAAC1M,UAAU,CAACC,SAAS,CAACC,MAAM,CAAC,UAAU,CAACmd,IAAAA,CAAAA,CAAAA;YAE5C5b,qBAAsB,CAAA,IAAA;AAClB,gBAAA,IAAI,CAACW,SAAS,CAAC7B,KAAK,CAACoS,MAAM,GAAGkL,YAAe,GAAA,IAAA,CAAA;AACjD,aAAA,CAAA,CAAA;AACJ,SAAA,CAAA,CAAA;AAEA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;QAKAnC,KAAAA,CAAMA,KAAa,EAAE;QACjB,IAAI,CAACyB,MAAM,GAAGzB,KAAAA,CAAAA;AACd,QAAA,IAAI,CAAC6B,MAAM,CAAC5e,SAAS,GAAG+c,KAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;QAKAlc,KAAAA,CAAMyd,SAAY,GAAA,IAAI,EAAE;QACpB,MAAM9a,WAAAA,GAAc8a,YAAY,IAAI,CAACa,oBAAoB,EAAK,GAAA,IAAI,CAAC3b,WAAW,CAAA;AAC9EA,QAAAA,WAAAA,CAAY8B,OAAO,CAAC+F,CAAAA,CAAAA,GAAKA,EAAExK,KAAK,EAAA,CAAA,CAAA;AAChC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA;;;;;;;;;;;QAYAZ,QAAAA,CAASC,QAAQ,EAAE;AACf;;;;YAKA,IAAI,CAACC,SAAS,GAAGD,QAAAA,CAAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAG,IAAAA,aAAAA,CAAc+e,UAAU,EAAE;QAEtB,IAAI,IAAI,CAAChf,MAAM,EAAE;AACb,YAAA,IAAI,CAACA,MAAM,CAACC,aAAa,CAAC+e,UAAAA,CAAAA,CAAAA;AAC9B,SAAA;AAEA,QAAA,IAAI,IAAI,CAACjf,SAAS,KAAKG,SAAW,EAAA;AAC9B,YAAA,IAAI,CAACH,SAAS,CAACI,IAAI,CAAC,IAAI,EAAE;AACtByC,gBAAAA,MAAAA,EAAQoc,WAAWpc,MAAM;AACzBC,gBAAAA,QAAAA,EAAUmc,WAAWnc,QAAQ;AAC7BN,gBAAAA,KAAAA,EAAOyc,WAAW5e,QAAQ,EAAA;AAC1B4e,gBAAAA,UAAAA;AACJ,aAAA,CAAA,CAAA;AACJ,SAAA;AACJ,KAAA;AAEA;;;;;;;;;;;QAYA1e,cAAAA,CAAeR,QAAkB,EAAE;QAC/B,IAAI,CAACS,eAAe,GAAGT,QAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAU,IAAAA,mBAAAA,CAAoBwe,UAAsB,EAAE;QACxC,IAAI,IAAI,CAAChf,MAAM,EAAE;AACb,YAAA,IAAI,CAACA,MAAM,CAACQ,mBAAmB,CAACwe,UAAAA,CAAAA,CAAAA;AACpC,SAAA;AAEA,QAAA,IAAI,IAAI,CAACze,eAAe,KAAKL,SAAW,EAAA;AACpC,YAAA,IAAI,CAACK,eAAe,CAACJ,IAAI,CAAC,IAAI,EAAE;AAC5ByC,gBAAAA,MAAAA,EAAQoc,WAAWpc,MAAM;AACzBC,gBAAAA,QAAAA,EAAUmc,WAAWnc,QAAQ;AAC7BN,gBAAAA,KAAAA,EAAOyc,WAAW5e,QAAQ,EAAA;AAC1B4e,gBAAAA,UAAAA;AACJ,aAAA,CAAA,CAAA;AACJ,SAAA;AACJ,KAAA;AAEA;;;;;;;;QASAC,WAAAA,CAAYnf,QAAkB,EAAE;QAC5B,IAAI,CAACof,YAAY,GAAGpf,QAAAA,CAAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEQ4e,IAAAA,gBAAAA,CAAiBS,UAAe,EAAE;QACtC,IAAI,IAAI,CAACnf,MAAM,EAAE;AACb,YAAA,IAAI,CAACA,MAAM,CAAC0e,gBAAgB,CAACS,UAAAA,CAAAA,CAAAA;AACjC,SAAA;AAEA,QAAA,IAAI,IAAI,CAACD,YAAY,KAAKhf,SAAW,EAAA;AACjC,YAAA,IAAI,CAACgf,YAAY,CAAC/e,IAAI,CAAC,IAAI,EAAEgf,UAAAA,CAAAA,CAAAA;AACjC,SAAA;AACJ,KAAA;AAEA;;AAEC,QACDnc,OAAU,GAAA;QACN,IAAI,IAAI,CAAChD,MAAM,EAAE;AACb,YAAA,IAAI,CAACA,MAAM,CAACiD,QAAQ,CAACC,MAAM,CAAC,IAAI,CAAClD,MAAM,CAACiD,QAAQ,CAACE,OAAO,CAAC,IAAI,CAAG,EAAA,CAAA,CAAA,CAAA;AAChE,YAAA,IAAI,CAACnD,MAAM,CAACge,OAAO,CAAC9a,MAAM,CAAC,IAAI,CAAClD,MAAM,CAACge,OAAO,CAAC7a,OAAO,CAAC,IAAI,CAAG,EAAA,CAAA,CAAA,CAAA;AAClE,SAAA;AAEA,QAAA,IAAI,IAAI,CAAClC,UAAU,CAACme,aAAa,EAAE;YAC/B,IAAI,CAACne,UAAU,CAACme,aAAa,CAAC9b,WAAW,CAAC,IAAI,CAACrC,UAAU,CAAA,CAAA;AAC7D,SAAA;QAEA4D,KAAMwa,CAAAA,IAAI,CAAC,IAAI,CAACpc,QAAQ,CAAEiC,CAAAA,OAAO,CAAC+F,CAAAA,CAAKA,GAAAA,CAAAA,CAAEjI,OAAO,EAAA,CAAA,CAAA;AACpD,KAAA;AAEA;;;AAGC,QACD+b,oBAAuB,GAAA;AACnB,QAAA,IAAI3b,cAAcyB,KAAMwa,CAAAA,IAAI,CAAC,IAAI,CAACjc,WAAW,CAAA,CAAA;AAC7C,QAAA,IAAI,CAAC4a,OAAO,CAAC9Y,OAAO,CAACiZ,CAAAA,CAAAA,GAAAA;AACjB/a,YAAAA,WAAAA,GAAcA,WAAYkc,CAAAA,MAAM,CAACnB,CAAAA,CAAEY,oBAAoB,EAAA,CAAA,CAAA;AAC3D,SAAA,CAAA,CAAA;QACA,OAAO3b,WAAAA,CAAAA;AACX,KAAA;AAEA;;;AAGC,QACDmc,gBAAmB,GAAA;AACf,QAAA,IAAIvB,UAAUnZ,KAAMwa,CAAAA,IAAI,CAAC,IAAI,CAACrB,OAAO,CAAA,CAAA;AACrC,QAAA,IAAI,CAACA,OAAO,CAAC9Y,OAAO,CAACiZ,CAAAA,CAAAA,GAAAA;AACjBH,YAAAA,OAAAA,GAAUA,OAAQsB,CAAAA,MAAM,CAACnB,CAAAA,CAAEoB,gBAAgB,EAAA,CAAA,CAAA;AAC/C,SAAA,CAAA,CAAA;QACA,OAAOvB,OAAAA,CAAAA;AACX,KAAA;IAEAlb,MAAS,GAAA;AACL,QAAA,KAAK,IAAI0c,KAAAA,IAAS,IAAI,CAACvc,QAAQ,CAAE;AAC7Buc,YAAAA,KAAAA,CAAM1c,MAAM,EAAA,CAAA;AAChB,SAAA;AACJ,KAAA;IApiBAS,WAAY,CAAA,EACRvD,MAAM,EACNyf,SAAS,EACTvX,KAAK,EACLwX,SAAY1f,GAAAA,MAAAA,KAAWE,SAAS,EAChCyc,KAAQ,GAAA,UAAU,EAClB7Y,EAAK6Y,GAAAA,KAAK,EACVgD,YAAAA,GAAe,KAAK,EACpBC,WAAc,GAAA,IAAI,EAUrB,GAAG,EAAE,CAAE;AAzCR3c,QAAAA,IAAAA,CAAAA,QAAAA,GAAoC,EAAE,CAAA;AACtCG,QAAAA,IAAAA,CAAAA,WAAAA,GAAiC,EAAE,CAAA;AACnC4a,QAAAA,IAAAA,CAAAA,OAAAA,GAAsB,EAAE,CAAA;AAKxB;;AAEC,QAAA,IAAA,CACDI,MAAiB,GAAA,EAAA,CAAA;aACjB9b,OAAmB,GAAA,KAAA,CAAA;aACnBf,OAAmB,GAAA,KAAA,CAAA;aACnBqc,aAAyB,GAAA,KAAA,CAAA;QA6BrB,IAAI,CAAC9Z,EAAE,GAAGA,EAAAA,CAAAA;QACV,IAAI,CAAC9D,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,IAAI,CAAC0N,IAAI,GAAG1N,SAASA,MAAO0N,CAAAA,IAAI,GAAG,IAAI,CAAA;AACvC,QAAA,IAAI,CAACzM,UAAU,GAAGyC,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACzC,QAAA,IAAI,CAAC1C,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAAC,SAAA,CAAA,CAAA;AAE9B,QAAA,IAAI,CAAC4a,MAAM,GAAG9a,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACrC,QAAA,IAAI,CAAC6a,MAAM,CAACtd,SAAS,CAAC0C,GAAG,CAAC,OAAA,CAAA,CAAA;AAC1B,QAAA,IAAI,CAAC4a,MAAM,CAACpZ,YAAY,CAAC,MAAQ,EAAA,QAAA,CAAA,CAAA;AACjC,QAAA,IAAI,CAACoZ,MAAM,CAACpZ,YAAY,CAAC,eAAiB,EAAA,MAAA,CAAA,CAAA;AAC1C,QAAA,IAAI,CAACoZ,MAAM,CAACpZ,YAAY,CAAC,UAAY,EAAA,GAAA,CAAA,CAAA;AACrC,QAAA,IAAI,CAACoZ,MAAM,CAACva,gBAAgB,CAAC,OAAS,EAAA,IAAA;AAClC,YAAA,IAAI,CAAC0a,YAAY,CAAC,IAAI,CAACrc,OAAO,CAAA,CAAA;AAClC,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAACkc,MAAM,CAACva,gBAAgB,CAAC,WAAWC,CAAAA,CAAAA,GAAAA;AACpC,YAAA,IAAIA,EAAEkF,IAAI,KAAK,WAAWlF,CAAEkF,CAAAA,IAAI,KAAK,OAAS,EAAA;AAC1ClF,gBAAAA,CAAAA,CAAEmF,cAAc,EAAA,CAAA;gBAChB,IAAI,CAACmV,MAAM,CAACqB,KAAK,EAAA,CAAA;AACrB,aAAA;AACJ,SAAA,CAAA,CAAA;;AAGA,QAAA,IAAI,CAACrB,MAAM,CAACva,gBAAgB,CAAC,YAAA,EAAc,MAAW,EAAA;YAAE0G,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AAEtE;;;AAGC,YACD,IAAI,CAACtH,SAAS,GAAGK,QAAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;AACxC,QAAA,IAAI,CAACN,SAAS,CAACnC,SAAS,CAAC0C,GAAG,CAAC,UAAA,CAAA,CAAA;AAE7B,QAAA,IAAI,CAAC3C,UAAU,CAAC+C,WAAW,CAAC,IAAI,CAACwa,MAAM,CAAA,CAAA;AACvC,QAAA,IAAI,CAACvd,UAAU,CAAC+C,WAAW,CAAC,IAAI,CAACX,SAAS,CAAA,CAAA;QAE1C,IAAI,CAACsZ,KAAK,CAACA,KAAAA,CAAAA,CAAAA;QAEX,IAAI,IAAI,CAAC3c,MAAM,EAAE;AACb,YAAA,IAAI,CAACA,MAAM,CAACiD,QAAQ,CAACmB,IAAI,CAAC,IAAI,CAAA,CAAA;AAC9B,YAAA,IAAI,CAACpE,MAAM,CAACge,OAAO,CAAC5Z,IAAI,CAAC,IAAI,CAAA,CAAA;YAC7B,IAAI,CAACpE,MAAM,CAACqD,SAAS,CAACW,WAAW,CAAC,IAAI,CAAC/C,UAAU,CAAA,CAAA;;AAGjD,YAAA,OAAA;AAEJ,SAAA;AAEA,QAAA,IAAI,CAACA,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAAC,MAAA,CAAA,CAAA;AAE9B,QAAA,IAAIgc,WAAa,EAAA;AACb,YAAA,IAAI,CAAC3e,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAAC,oBAAA,CAAA,CAAA;AAClC,SAAA;AACA,QAAA,IAAI6b,SAAW,EAAA;AACXA,YAAAA,SAAAA,CAAUzb,WAAW,CAAC,IAAI,CAAC/C,UAAU,CAAA,CAAA;AACzC,SAAA,MAAO,IAAIye,SAAW,EAAA;AAClB,YAAA,IAAI,CAACze,UAAU,CAACC,SAAS,CAAC0C,GAAG,CAAC,WAAA,CAAA,CAAA;AAC9BF,YAAAA,QAAAA,CAASmJ,IAAI,CAAC7I,WAAW,CAAC,IAAI,CAAC/C,UAAU,CAAA,CAAA;AAC7C,SAAA;AACA,QAAA,IAAIiH,KAAO,EAAA;YACP,IAAI,CAACjH,UAAU,CAACO,KAAK,CAACse,WAAW,CAAC,WAAW5X,KAAQ,GAAA,IAAA,CAAA,CAAA;AACzD,SAAA;QAEA,IAAI,CAAC0V,aAAa,GAAG+B,YAAAA,CAAAA;AACzB,KAAA;AAodJ;;AC7kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAsCA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/H,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjI,OAAO,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpJ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AA+PD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;AC3TO,MAAMI,YAAqBC,SAAAA,mBAAAA,CAAAA;AAE9B,IAAA,IAQIC,gBAAmB,GAAA;AACnB,QAAA,OAAO,IAAI,CAACC,SAAS,CAACD,gBAAgB,CAAA;AAC1C,KAAA;IACA,IAAIA,gBAAAA,CAAiBla,CAAa,EAAE;AAChC,QAAA,IAAI,CAACma,SAAS,CAACD,gBAAgB,GAAGla,CAAAA,CAAAA;AACtC,KAAA;AAEA,IAAA,IASIoa,WAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAACD,SAAS,CAACC,WAAW,CAAA;AACrC,KAAA;IACA,IAAIA,WAAAA,CAAYpa,CAAc,EAAE;AAC5B,QAAA,IAAI,CAACma,SAAS,CAACC,WAAW,GAAGpa,CAAAA,CAAAA;AACjC,KAAA;AAEA,IAAA,IACIqa,mBAAsB,GAAA;AACtB,QAAA,OAAO,IAAI,CAACF,SAAS,CAACE,mBAAmB,CAAA;AAC7C,KAAA;IACA,IAAIA,mBAAAA,CAAoBra,CAAS,EAAE;AAC/B,QAAA,IAAI,CAACma,SAAS,CAACE,mBAAmB,GAAGra,CAAAA,CAAAA;AACzC,KAAA;AAEA,IAAA,IACIsa,OAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAACH,SAAS,CAACI,SAAS,CAACzf,OAAO,CAAA;AAC3C,KAAA;IACA,IAAIwf,OAAAA,CAAQta,CAAU,EAAE;AACpB,QAAA,IAAI,CAACma,SAAS,CAACI,SAAS,CAACzf,OAAO,GAAGkF,CAAAA,CAAAA;AACvC,KAAA;AAEA,IAAA,IACIwa,oBAAuB,GAAA;AACvB,QAAA,OAAO,IAAI,CAACC,MAAM,CAACD,oBAAoB,CAAA;AAC3C,KAAA;IACA,IAAIA,oBAAAA,CAAqBxa,CAAS,EAAE;AAChC,QAAA,IAAI,CAACya,MAAM,CAACD,oBAAoB,GAAGxa,CAAAA,CAAAA;AACvC,KAAA;AAEA,IAAA,IACI0a,WAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAACD,MAAM,CAACC,WAAW,CAAA;AAClC,KAAA;IACA,IAAIA,WAAAA,CAAY1a,CAAU,EAAE;AACxB,QAAA,IAAI,CAACya,MAAM,CAACC,WAAW,GAAG1a,CAAAA,CAAAA;AAC9B,KAAA;AAEA,IAAA,IACI2a,oBAAuB,GAAA;AACvB,QAAA,OAAO,IAAI,CAACF,MAAM,CAACE,oBAAoB,CAAA;AAC3C,KAAA;IACA,IAAIA,oBAAAA,CAAqB3a,CAAS,EAAE;AAChC,QAAA,IAAI,CAACya,MAAM,CAACE,oBAAoB,GAAG3a,CAAAA,CAAAA;AACvC,KAAA;AAEA,IAAA,IACI4a,mBAAsB,GAAA;AACtB,QAAA,OAAO,IAAI,CAACH,MAAM,CAACG,mBAAmB,CAAA;AAC1C,KAAA;IACA,IAAIA,mBAAAA,CAAoB5a,CAAQ,EAAE;AAC9B,QAAA,IAAI,CAACya,MAAM,CAACG,mBAAmB,CAACC,IAAI,CAAC7a,CAAAA,CAAAA,CAAAA;AACzC,KAAA;AAEA,IAAA,IACI8a,UAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAACL,MAAM,CAACK,UAAU,CAAA;AACjC,KAAA;IACA,IAAIA,UAAAA,CAAW9a,CAAgC,EAAE;AAC7C,QAAA,IAAI,CAACya,MAAM,CAACK,UAAU,GAAG9a,CAAAA,CAAAA;AAC7B,KAAA;AAEA,IAAA,IACI+a,kBAAqB,GAAA;AACrB,QAAA,OAAO,IAAI,CAACN,MAAM,CAACM,kBAAkB,CAAA;AACzC,KAAA;IACA,IAAIA,kBAAAA,CAAmB/a,CAAQ,EAAE;AAC7B,QAAA,IAAI,CAACya,MAAM,CAACM,kBAAkB,CAACF,IAAI,CAAC7a,CAAAA,CAAAA,CAAAA;AACxC,KAAA;AAEA,IAAA,IACIgb,eAAkB,GAAA;AAClB,QAAA,OAAO,IAAI,CAACC,OAAO,CAACD,eAAe,CAAA;AACvC,KAAA;IACA,IAAIA,eAAAA,CAAgBhb,CAAC,EAAE;AACnB,QAAA,IAAI,CAACib,OAAO,CAACD,eAAe,GAAGhb,CAAAA,CAAAA;AACnC,KAAA;AAOAxC,IAAAA,WAAAA,CAAY0d,MAAc,CAAE;QACxB,KAAK,EAAA,CAAA;QACL,IAAI,CAACD,OAAO,GAAGC,MAAAA,CAAAA;AACf,QAAA,IAAI,CAACT,MAAM,GAAGS,MAAAA,CAAOC,KAAK,CAAA;AAC1B,QAAA,IAAI,CAAChB,SAAS,GAAGe,MAAAA,CAAOE,QAAQ,CAAA;AACpC,KAAA;AACJ,CAAA;;IAlHKte,aAAS,CAAA;QACNN,KAAO,EAAA;YACH6e,cAAgB,EAAA,MAAA;YAChBC,oBAAsB,EAAA,aAAA;YACtBC,mBAAqB,EAAA,YAAA;YACrBC,yBAA2B,EAAA,mBAAA;AAC/B,SAAA;AACJ,KAAA,CAAA;AATSxB,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,kBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAiBRld,aAAS,CAAA;QACNN,KAAO,EAAA;YACHif,aAAe,EAAA,CAAA;YACfC,iBAAmB,EAAA,CAAA;YACnBC,mBAAqB,EAAA,CAAA;YACrBC,iBAAmB,EAAA,CAAA;YACnBC,qBAAuB,EAAA,CAAA;AAC3B,SAAA;AACJ,KAAA,CAAA;AAzBS7B,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,aAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAiCRld,aAAS,CAAA;QAAEjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,EAAA;QAAIC,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAjC/Bie,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,qBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AAyCRld,IAAAA,aAAAA;AAzCQkd,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAiDRld,aAAS,CAAA;QAAEjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAjD9Bie,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,sBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAyDRld,aAAS,CAAA;AAAEN,QAAAA,KAAAA,EAAO,IAAIsf,aAAAA,EAAAA;AAAU,KAAA,CAAA;AAzDxB9B,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,aAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAiERld,aAAS,CAAA;QAAEjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAjE9Bie,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,sBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAyERld,aAAS,CAAA;QAAEf,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAzEdie,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,qBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AAiFRld,IAAAA,aAAAA;AAjFQkd,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAyFRld,aAAS,CAAA;QAAEf,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAzFdie,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,oBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AAiGRld,IAAAA,aAAAA;AAjGQkd,CAAAA,EAAAA,YAAAA,CAAAA,SAAAA,EAAAA,iBAAAA,EAAAA,IAAAA,CAAAA;;ACgBN,MAAM+B,SAAkBC,SAAAA,UAAAA,CAAAA;IAU3BC,MAAS,GAAA;QACL,MAAM,EAAE9Z,KAAK,EAAE0L,MAAM,EAAE,GAAG,IAAI,CAACqN,MAAM,CAAA;QACrC,IAAI,CAACT,MAAM,GAAG,IAAIyB,WAAAA,EAAAA,CAAAA;QAClB,IAAI,CAACC,OAAO,GAAG,IAAIC,wBAAAA,CAAmB,GAAGja,KAAO0L,EAAAA,MAAAA,EAAQ,CAAG,EAAA,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;AAC/D,QAAA,IAAI,CAACwO,IAAI,GAAG,IAAIhF,GAAI,CAAA;YAAElV,KAAO,EAAA,GAAA;YAAKyU,KAAO,EAAA,WAAA;AAAY,SAAA,CAAA,CAAGkB,KAAK,EAAA,CAAA;QAC7D,IAAI,CAACuE,IAAI,CAAC1E,SAAS,CAAC,QAAUG,CAAAA,CAAAA,KAAK,GAAGnc,IAAI,EAAA,CAAA;QAC1C,IAAI,CAAC0gB,IAAI,CAAC1E,SAAS,CAAC,WAAaG,CAAAA,CAAAA,KAAK,GAAGnc,IAAI,EAAA,CAAA;QAC7C,IAAI,CAAC0gB,IAAI,CAAC1E,SAAS,CAAC,UAAYG,CAAAA,CAAAA,KAAK,GAAGnc,IAAI,EAAA,CAAA;QAC5C,IAAI,CAAC0gB,IAAI,CAAC1E,SAAS,CAAC,OAASG,CAAAA,CAAAA,KAAK,GAAGnc,IAAI,EAAA,CAAA;AACzC,QAAA,IAAI,CAAC2gB,QAAQ,CAAC,IAAItC,YAAa,CAAA,IAAI,CAACkB,MAAM,CAAA,CAAA,CAAA;AAC1C,QAAA,IAAI,CAACqB,UAAU,EAAA,CAAA;AACnB,KAAA;IAEAC,SAAY,GAAA;QACR,IAAI,CAACH,IAAI,CAACpf,OAAO,EAAA,CAAA;QACjB,IAAI,CAACwf,UAAU,CAACnT,KAAK,EAAA,CAAA;QACrB,IAAI,CAACoT,UAAU,CAACpT,KAAK,EAAA,CAAA;AACzB,KAAA;AAEAvM,IAAAA,MAAAA,CAAO4f,EAAU,EAAQ;QACrB,IAAI,CAACN,IAAI,CAACtf,MAAM,EAAA,CAAA;AAChB,QAAA,IAAI,CAAC6f,cAAc,EAAA,CAAA;AACvB,KAAA;IAEAhP,MAAOzL,CAAAA,KAAa,EAAE0L,MAAc,EAAQ;AACxC,QAAA,IAAI,CAACsO,OAAO,CAAC5W,IAAI,GAAG,CAAA,CAAA;AACpB,QAAA,IAAI,CAAC4W,OAAO,CAAC3W,KAAK,GAAGrD,KAAAA,CAAAA;AACrB,QAAA,IAAI,CAACga,OAAO,CAACU,GAAG,GAAGhP,MAAAA,CAAAA;AACnB,QAAA,IAAI,CAACsO,OAAO,CAACW,MAAM,GAAG,CAAA,CAAA;QACtB,IAAI,CAACX,OAAO,CAACY,sBAAsB,EAAA,CAAA;AACvC,KAAA;IAEQR,UAAa,GAAA;QACjB,MAAMrB,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;AAC1B,QAAA,IAAI,CAAC8B,OAAO,GAAG9B,MAAOrd,CAAAA,GAAG,CAACof,YAAQ,EAAA;YAC9BhjB,MAAQ,EAAA,IAAI,CAACwgB,MAAM;YACnByC,KAAO,EAAA,IAAIC,aAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,CAAA,CAAA;YAC7BC,QAAU,EAAA,IAAID,cAAQjC,MAAO/Y,CAAAA,KAAK,GAAG,CAAG+Y,EAAAA,MAAAA,CAAOrN,MAAM,GAAG,CAAA,CAAA;YACxDwP,OAAS,EAAA,KAAA;AACb,SAAA,CAAA,CAAA;AACJ,KAAA;IAEQC,YAAe,GAAA;AACnB,QAAA,MAAM,EAAElC,QAAQ,EAAE,GAAG,IAAI,CAACF,MAAM,CAAA;QAChC,MAAMqC,cAAAA,GAAiBnC,SAASmC,cAAc,CAAA;QAC9C,MAAMC,cAAAA,GAAiBpC,SAASoC,cAAc,CAAA;AAE9CpC,QAAAA,QAAAA,CAASmC,cAAc,GAAG,IAAA,CAAA;AAC1BnC,QAAAA,QAAAA,CAASoC,cAAc,GAAG,KAAA,CAAA;QAC1BpC,QAASvK,CAAAA,MAAM,CAAC,IAAI,CAAC4J,MAAM,EAAE,IAAI,CAAC0B,OAAO,CAAA,CAAA;AAEzCf,QAAAA,QAAAA,CAASmC,cAAc,GAAGA,cAAAA,CAAAA;AAC1BnC,QAAAA,QAAAA,CAASoC,cAAc,GAAGA,cAAAA,CAAAA;AAE1B,QAAA,OAAOpC,SAASlgB,UAAU,CAAA;AAC9B,KAAA;AAEQuiB,IAAAA,aAAAA,CAAchH,OAAgB,EAAEvK,CAAS,EAAE6K,CAAS,EAAE;AAC1D,QAAA,IAAI,CAACiG,OAAO,CAACK,OAAO,GAAG,IAAA,CAAA;QACvB,IAAI,CAACL,OAAO,CAACE,KAAK,CAACpJ,GAAG,CAAC5H,GAAG6K,CAAG,EAAA,CAAA,CAAA,CAAA;AAC7B,QAAA,IAAI,CAACiG,OAAO,CAACI,QAAQ,CAACtJ,GAAG,CAAC5H,CAAAA,GAAI,CAAG,EAAA,IAAI,CAACiQ,OAAO,CAACU,GAAG,GAAG9F,IAAI,CAAG,EAAA,CAAA,CAAA,CAAA;AAC3D,QAAA,IAAI,CAACiG,OAAO,CAACU,QAAQ,CAAC1Y,GAAG,GAAGyR,OAAAA,CAAAA;AAC5B,QAAA,IAAI,CAACuG,OAAO,CAACU,QAAQ,CAAChI,WAAW,GAAG,IAAA,CAAA;QACpC,MAAMvM,GAAAA,GAAM,IAAI,CAACmU,YAAY,EAAA,CAAA;AAC7B,QAAA,IAAI,CAACN,OAAO,CAACK,OAAO,GAAG,KAAA,CAAA;QACvB,OAAOlU,GAAAA,CAAAA;AACX,KAAA;IAEQyT,cAAiB,GAAA;QACrB,MAAMe,SAAAA,GAAY,IAAI,CAAClB,UAAU,CAAA;AACjC,QAAA,MAAMmB,WAAW,CAAC5d,CAAAA,GAAAA;YACd,IAAI2d,SAAAA,CAAUE,GAAG,CAAC7d,CAAAA,CAAAA,KAAO,CAAC,CAAG2d,EAAAA,SAAAA,CAAU7J,GAAG,CAAC9T,CAAG,EAAA,CAAA,CAAA,CAAA;YAC9C,IAAI2d,SAAAA,CAAUE,GAAG,CAAC7d,CAAAA,CAAAA,KAAO7F,WAAWwjB,SAAU7J,CAAAA,GAAG,CAAC9T,CAAG,EAAA,CAAA,CAAA,CAAA;AACzD,SAAA,CAAA;QAEA2d,SAAUxe,CAAAA,OAAO,CAAC,CAAC2e,CAAGC,EAAAA,CAAAA,EAAG/Y,MAAQA,GAAI8O,CAAAA,GAAG,CAACiK,CAAAA,EAAG,CAAC,CAAA,CAAA,CAAA,CAAA;AAE7C,QAAA,IAAI,CAAC7C,MAAM,CAAC8C,iBAAiB,CAACJ,QAAAA,CAAAA,CAAAA;AAC9B,QAAA,IAAI,CAAC1C,MAAM,CAAC+C,kBAAkB,CAACL,QAAAA,CAAAA,CAAAA;AAE/BD,QAAAA,SAAAA,CAAUxe,OAAO,CAAC,CAACa,CAAAA,EAAG+d,CAAG/Y,EAAAA,GAAAA,GAAAA;AACrB,YAAA,IAAIhF,MAAM,CAAG,EAAA;gBACT,IAAI,CAACsc,QAAQ,CAACyB,CAAAA,CAAAA,CAAAA;AAClB,aAAA;YACA,IAAI/d,CAAAA,KAAM,CAAC,CAAG,EAAA;gBACV,IAAI,CAACke,UAAU,CAACH,CAAAA,CAAAA,CAAAA;AAChB/Y,gBAAAA,GAAAA,CAAImZ,MAAM,CAACJ,CAAAA,CAAAA,CAAAA;AACf,aAAA;AACJ,SAAA,CAAA,CAAA;AACJ,KAAA;AAEQK,IAAAA,kBAAAA,CAAyC9d,MAAS,EAAE;AACxD,QAAA,MAAM+d,OAAO,EAAE,CAAA;AAEf,QAAA,IAAIC,KAAQC,GAAAA,oBAAAA,CAAgBC,oBAAoB,CAACle,OAAO9C,WAAW,CAAA,CAAA;AACnE,QAAA,IAAI8gB,KAAO,EAAA;AACP,YAAA,MAAMrf,SAASwf,SAAUH,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAI,CAAC5B,UAAU,CAAC5I,GAAG,CAAC7U,MAAQqB,EAAAA,MAAAA,CAAAA,CAAAA;AAC5B+d,YAAAA,IAAAA,CAAKhgB,IAAI,CAACY,MAAAA,CAAAA,CAAAA;AACd,SAAA;AACA,QAAA,IAAIqB,kBAAkBoe,oBAAgB,EAAA;YAClCJ,KAAQtf,GAAAA,MAAAA,CAAO2f,MAAM,CAAC,IAAA,CAAA,CAAA;YACtB,MAAMC,QAAAA,GAAW5f,MAAO2f,CAAAA,MAAM,CAAC,IAAA,CAAA,CAAA;AAE/B3f,YAAAA,MAAAA,CAAOE,IAAI,CAACoB,MAAAA,CAAOse,QAAQ,CAAEzf,CAAAA,OAAO,CAAC,CAACzF,IAAAA,GAAAA;gBAClCsF,MAAO6f,CAAAA,cAAc,CAACD,QAAAA,EAAUllB,IAAM,EAAA;AAClCmkB,oBAAAA,GAAAA,EAAK,IAAMvd,MAAOse,CAAAA,QAAQ,CAACllB,IAAAA,CAAK,CAAC8C,KAAK;oBACtCsX,GAAK,EAAA,CAAC9T,IAAOM,MAAOse,CAAAA,QAAQ,CAACllB,IAAK,CAAA,CAAC8C,KAAK,GAAGwD,CAAAA;AAC/C,iBAAA,CAAA,CAAA;gBACAse,KAAK,CAAC5kB,KAAK,GAAG;oBAAEolB,GAAK,EAAA,UAAA;AAAW,iBAAA,CAAA;AACpC,aAAA,CAAA,CAAA;AAEA,YAAA,MAAM7f,SAASwf,SAAUH,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAI,CAAC5B,UAAU,CAAC5I,GAAG,CAAC7U,MAAQ2f,EAAAA,QAAAA,CAAAA,CAAAA;AAC5BP,YAAAA,IAAAA,CAAKhgB,IAAI,CAACY,MAAAA,CAAAA,CAAAA;AACd,SAAA;QAEA,OAAOof,IAAAA,CAAAA;AACX,KAAA;AAEQ/B,IAAAA,QAAAA,CAA+Bhc,MAAS,EAAE;AAC9C,QAAA,IAAIye,SAAY,GAAA,IAAI,CAACX,kBAAkB,CAAC9d,MAAAA,CAAAA,CAAAA;QACxC,IAAIye,SAAAA,CAAU5d,MAAM,KAAK,CAAG,EAAA,OAAA;QAE5B,IAAI6d,GAAAA,GAAM,IAAI,CAAC3C,IAAI,CAAA;AACnB,QAAA,IAAI/b,kBAAkB0Z,YAAc,EAAA;AAChCgF,YAAAA,GAAAA,GAAMA,GAAIhH,CAAAA,SAAS,CAAC,QAAA,CAAA,CAAUzc,IAAI,EAAA,CAAA;SAEjC,MAAA,IAAI+E,kBAAkB2e,cAAW,EAAA;AAClCD,YAAAA,GAAAA,GAAMA,GAAIhH,CAAAA,SAAS,CAAC,WAAA,CAAA,CAAazc,IAAI,EAAA,CAAA;SAEpC,MAAA,IAAI+E,kBAAkB4e,cAAU,EAAA;AACjCF,YAAAA,GAAAA,GAAMA,GAAIhH,CAAAA,SAAS,CAAC,UAAA,CAAA,CAAYzc,IAAI,EAAA,CAAA;SAEnC,MAAA;AACDyjB,YAAAA,GAAAA,GAAMA,GAAIhH,CAAAA,SAAS,CAAC,OAAA,CAAA,CAASzc,IAAI,EAAA,CAAA;AACrC,SAAA;QAEA,IAAIyjB,GAAAA,CAAI3G,MAAM,KAAK,QAAU,EAAA;AACzB2G,YAAAA,GAAAA,GAAMA,GAAIhH,CAAAA,SAAS,CAAC1X,MAAAA,CAAO6e,IAAI,CAAKH,IAAAA,GAAAA,CAAIrH,SAAS,CAACyH,UAAW9e,CAAAA,MAAAA,CAAAA,EAASA,MAAO6e,CAAAA,IAAI,EAAErH,KAAK,EAAA,CAAA;AAC5F,SAAA;AAEA,QAAA,IAAI,CAACuH,OAAO,CAACL,GAAAA,EAAKD,SAAWze,EAAAA,MAAAA,CAAAA,CAAAA;QAC7B,OAAOA,MAAAA,CAAAA;AACX,KAAA;IAEQ+e,OAAQL,CAAAA,GAAQ,EAAEX,IAAuB,EAAE/d,MAAc,EAAEwe,GAAAA,GAAc,EAAE,EAAE;AACjF,QAAA,IAAIA,GAAK,EAAA;YACLE,GAAMA,GAAAA,GAAAA,CAAIhH,SAAS,CAAC8G,GAAAA,CAAAA,IAAQE,IAAIrH,SAAS,CAACmH,KAAKhH,KAAK,EAAA,CAAA;AACxD,SAAA;AAEA,QAAA,MAAMwH,MAAShf,GAAAA,MAAAA,CAAAA;QACf,KAAK,MAAMge,SAASD,IAAM,CAAA;AACtB/d,YAAAA,MAAAA,GAAS,IAAI,CAACoc,UAAU,CAACmB,GAAG,CAACS,KAAUgB,CAAAA,IAAAA,MAAAA,CAAAA;AAEvC,YAAA,KAAK,MAAM,CAACvB,CAAGwB,EAAAA,IAAAA,CAAK,IAAIjB,KAAO,CAAA;gBAC3B,IAAI9hB,KAAAA,GAAQ8D,MAAM,CAACyd,CAAE,CAAA,IAAI,IAAOwB,GAAAA,IAAAA,CAAK/iB,KAAK,GAAG8D,MAAM,CAACyd,CAAE,CAAA,CAAA;gBACtD,IAAIvhB,KAAAA,IAAS,IAAS+iB,IAAAA,IAAAA,CAAKtlB,MAAM,IAAIqG,MAAM,CAACif,IAAKtlB,CAAAA,MAAM,CAAC,IAAI,IAAO,EAAA;AAC/D,oBAAA,SAAA;AACJ,iBAAA;AAEA,gBAAA,IAAI2d,MAASoH,GAAAA,GAAAA,CAAAA;gBACb,IAAIO,IAAAA,CAAKT,GAAG,EAAE;AACVlH,oBAAAA,MAAAA,GAASA,MAAOI,CAAAA,SAAS,CAACuH,IAAAA,CAAKT,GAAG,CAAA,IAAKlH,MAAOD,CAAAA,SAAS,CAAC4H,IAAAA,CAAKT,GAAG,CAAA,CAAEhH,KAAK,EAAA,CAAA;AAC3E,iBAAA;AAEA,gBAAA,IAAIyG,oBAAgBiB,CAAAA,cAAc,CAAChjB,KAAAA,CAAMgB,WAAW,CAAG,EAAA;oBACnD,IAAI,CAAC6hB,OAAO,CAACzH,MAAAA,EAAQ,IAAI,CAACwG,kBAAkB,CAAC5hB,KAAAA,CAAAA,EAAQ8D,MAAQyd,EAAAA,CAAAA,CAAAA,CAAAA;AACjE,iBAAA;gBAEA,IAAIjf,KAAAA,CAAMC,OAAO,CAACvC,KAAQ,CAAA,EAAA;oBACtB,IAAI,CAAC6iB,OAAO,CAACzH,MAAQ,EAAA;AAACpb,wBAAAA,KAAAA,CAAMwI,GAAG,CAAC,CAAC8Y,CAAAA,EAAG7U,CAAM,GAAA;AAACA,gCAAAA,CAAAA,CAAErJ,QAAQ,EAAA;gCAAI,EAAC;AAAE,6BAAA,CAAA;AAAE,qBAAA,EAAEpD,KAAOuhB,EAAAA,CAAAA,CAAAA,CAAAA;iBAEtE,MAAA;AACD,oBAAA,MAAM0B,OAAO,OAAOjjB,KAAAA,CAAAA;AAEpB,oBAAA,IAAIkjB,GAAM,GAAA,IAAA,CAAA;oBACV,IAAIljB,KAAAA,CAAMmjB,OAAO,EAAE;wBACfD,GAAM9H,GAAAA,MAAAA,CAAOL,QAAQ,CAACjX,MAAQyd,EAAAA,CAAAA,CAAAA,CAAAA;qBAE7B,MAAA,IAAIvhB,KAAMojB,CAAAA,gBAAgB,EAAE;wBAC7BF,GAAM9H,GAAAA,MAAAA,CAAOF,QAAQ,CAACpX,MAAQyd,EAAAA,CAAAA,CAAAA,CAAAA;AAClC,qBAAA,MACK,IAAIvhB,KAAAA,CAAMqjB,SAAS,IAAIrjB,KAAMsjB,CAAAA,SAAS,IAAItjB,KAAAA,CAAMujB,SAAS,IAAIvjB,KAAMwjB,CAAAA,OAAO,EAAE;AAC7EN,wBAAAA,GAAAA,GAAM9H,MAAOH,CAAAA,SAAS,CAACnX,MAAAA,EAAQyd,CAAGwB,EAAAA,IAAAA,CAAK1jB,GAAG,EAAE0jB,IAAKzjB,CAAAA,GAAG,EAAEyjB,IAAAA,CAAKxjB,IAAI,CAAA,CAAA;qBAE9D,MAAA,IAAIS,KAAMyjB,CAAAA,SAAS,EAAE;wBACtBP,GAAM9H,GAAAA,MAAAA,CAAOJ,UAAU,CAAClX,MAAQyd,EAAAA,CAAAA,CAAAA,CAAAA;wBAChC2B,GAAI5I,CAAAA,QAAQ,GAAG,CAACL,OAASvK,EAAAA,CAAAA,EAAG6K,CAAM,GAAA,IAAI,CAAC0G,aAAa,CAAChH,OAAAA,EAASvK,CAAG6K,EAAAA,CAAAA,CAAAA,CAAAA;qBAEhE,MAAA,IAAI0I,SAAS,QAAYA,IAAAA,IAAAA,KAAS,aAAaA,IAAS,KAAA,QAAA,IAAYA,SAAS,UAAY,EAAA;AAC1FC,wBAAAA,GAAAA,GAAM9H,MAAO/Z,CAAAA,GAAG,CAACyC,MAAAA,EAAQyd,GAAGwB,IAAK/iB,CAAAA,KAAK,IAAI+iB,IAAAA,CAAK1jB,GAAG,EAAE0jB,IAAAA,CAAKzjB,GAAG,EAAEyjB,KAAKxjB,IAAI,CAAA,CAAA;qBAEtE,MAAA,CAEL;oBACA,IAAI2jB,GAAAA,IAAOH,IAAK7lB,CAAAA,IAAI,EAAE;wBAClBgmB,GAAIhmB,CAAAA,IAAI,CAAC6lB,IAAAA,CAAK7lB,IAAI,CAAA,CAAA;AACtB,qBAAA;AACJ,iBAAA;AAEJ,aAAA;AACJ,SAAA;AACJ,KAAA;AAEQwkB,IAAAA,UAAAA,CAAW5d,MAAkB,EAAE;QACnC,IAAI0e,GAAAA,GAAM,IAAI,CAAC3C,IAAI,CAAA;AACnB,QAAA,IAAI/b,kBAAkB2e,cAAW,EAAA;YAC7BD,GAAMA,GAAAA,GAAAA,CAAIhH,SAAS,CAAC,WAAA,CAAA,CAAA;SAEnB,MAAA,IAAI1X,kBAAkB4e,cAAU,EAAA;YACjCF,GAAMA,GAAAA,GAAAA,CAAIhH,SAAS,CAAC,UAAA,CAAA,CAAA;SAEnB,MAAA;YACDgH,GAAMA,GAAAA,GAAAA,CAAIhH,SAAS,CAAC,OAAA,CAAA,CAAA;AACxB,SAAA;QAEAgH,GAAIjH,CAAAA,YAAY,CAACzX,MAAAA,CAAO6e,IAAI,CAAA,CAAA;AAE5B,QAAA,IAAIH,GAAI9hB,CAAAA,QAAQ,CAACiE,MAAM,KAAK,CAAG,EAAA;AAC3B6d,YAAAA,GAAAA,CAAIrjB,IAAI,EAAA,CAAA;AACZ,SAAA;AACJ,KAAA;;;AAjOQ8gB,QAAAA,IAAAA,CAAAA,UAAAA,GAAsC,IAAIyD,GAAAA,EAAAA,CAAAA;AAC1CxD,QAAAA,IAAAA,CAAAA,UAAAA,GAAkC,IAAIwD,GAAAA,EAAAA,CAAAA;;AAiOlD,CAAA;AAEA,SAASd,WAAW9e,MAAkB,EAAA;IAClC,OAAOA,MAAAA,CAAO5G,IAAI,IAAI4G,MAAAA,CAAO9C,WAAW,CAAC9D,IAAI,IAAI4G,MAAAA,CAAOmf,IAAI,CAAA;AAChE,CAAA;AAEA,SAAShB,UAAUH,KAAa,EAAA;AAC5B,IAAA,MAAM6B,KAAQngB,GAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmgB,KAAK,IAAI,KAAA,CAAA;IAC9B,MAAMlhB,MAAAA,GAASD,MAAOohB,CAAAA,OAAO,CAAM9B,KAAAA,CAAAA,CAAAA;IACnC,MAAM+B,MAAAA,GAASphB,MAAOqhB,CAAAA,MAAM,CAACtgB,CAAAA,CAAK,GAAA,CAACA,CAAC,CAAC,CAAE,CAAA,CAAC8e,GAAG,CAAA,CAAErL,IAAI,CAAC,CAACxO,CAAGtE,EAAAA,CAAAA,GAAMwf,KAAMlb,CAAAA,CAAC,CAAC,CAAA,CAAE,CAAIkb,GAAAA,KAAAA,CAAMxf,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA;IACpF,MAAM4f,MAAAA,GAASthB,MAAOqhB,CAAAA,MAAM,CAACtgB,CAAAA,IAAKA,CAAC,CAAC,CAAE,CAAA,CAAC8e,GAAG,CAAA,CAAErL,IAAI,CAAC,CAACxO,CAAGtE,EAAAA,CAAAA,GAAMwf,KAAMlb,CAAAA,CAAC,CAAC,CAAA,CAAE,CAAIkb,GAAAA,KAAAA,CAAMxf,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA;IACnF,OAAO0f,MAAAA,CAAO9G,MAAM,CAACgH,MAAAA,CAAAA,CAAAA;AACzB,CAAA;AAEA,MAAMC,kBAAqB,GAAA;IACvBnD,OAAS,EAAA;QAAE8C,KAAO,EAAA,CAAA;AAAE,KAAA;IACpBM,WAAa,EAAA;QAAEN,KAAO,EAAA,CAAA;AAAE,KAAA;IACxBO,IAAM,EAAA;QAAEP,KAAO,EAAA,CAAA;QAAG3jB,KAAO,EAAA;YAAEmkB,SAAW,EAAA,CAAA;YAAGC,QAAU,EAAA,CAAA;YAAGC,UAAY,EAAA,CAAA;AAAE,SAAA;AAAE,KAAA;IACtEvP,KAAO,EAAA;QAAE6O,KAAO,EAAA,CAAA;QAAGrB,GAAK,EAAA,SAAA;AAAU,KAAA;IAClCgC,OAAS,EAAA;QAAEX,KAAO,EAAA,CAAA;QAAGrB,GAAK,EAAA,SAAA;QAAWjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;AACpE,CAAA,CAAA;AACA,IAAK,IAAIgiB,KAAKyC,kBAAoB,CAAA;AAC9B1jB,IAAAA,aAAAA,CAAS0jB,kBAAkB,CAACzC,CAAAA,CAAE,CAAEmB,CAAAA,cAAAA,CAAS9U,SAAS,EAAE2T,CAAAA,CAAAA,CAAAA;AACxD,CAAA;AAEA,MAAMgD,2BAA8B,GAAA;IAChC/b,GAAK,EAAA;QAAE8Z,GAAK,EAAA,SAAA;AAAU,KAAA;IACtBkC,QAAU,EAAA;QAAElC,GAAK,EAAA,UAAA;AAAW,KAAA;IAC5BmC,iBAAmB,EAAA;QAAEnC,GAAK,EAAA,UAAA;QAAYjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,UAAA;AAAW,KAAA;IACrFinB,KAAO,EAAA;QAAEpC,GAAK,EAAA,IAAA;AAAK,KAAA;IACnBqC,cAAgB,EAAA;QAAErC,GAAK,EAAA,IAAA;QAAMjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,OAAA;AAAQ,KAAA;AACzEmnB,IAAAA,WAAAA,EAAa,EAAC;AACdC,IAAAA,QAAAA,EAAU,EAAC;AACXC,IAAAA,MAAAA,EAAQ,EAAC;AACb,CAAA,CAAA;AACA,IAAK,IAAIvD,KAAKgD,2BAA6B,CAAA;AACvCjkB,IAAAA,aAAAA,CAASikB,2BAA2B,CAAChD,CAAAA,CAAE,CAAEwD,CAAAA,uBAAAA,CAAkBnX,SAAS,EAAE2T,CAAAA,CAAAA,CAAAA;AAC1E,CAAA;AAEA,MAAMyD,8BAAiC,GAAA;IACnCxc,GAAK,EAAA;QAAE8Z,GAAK,EAAA,SAAA;AAAU,KAAA;IACtB2C,YAAc,EAAA;QAAE3C,GAAK,EAAA,WAAA;AAAY,KAAA;IACjC4C,SAAW,EAAA;QAAE5C,GAAK,EAAA,WAAA;QAAajjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IAC1D4lB,YAAc,EAAA;QAAE7C,GAAK,EAAA,WAAA;AAAY,KAAA;IACjC8C,SAAW,EAAA;QAAE9C,GAAK,EAAA,WAAA;QAAajjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IAC1DmlB,KAAO,EAAA;QAAEpC,GAAK,EAAA,IAAA;AAAK,KAAA;IACnBqC,cAAgB,EAAA;QAAErC,GAAK,EAAA,IAAA;QAAMjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,OAAA;AAAQ,KAAA;IACzE4nB,QAAU,EAAA;QAAE/C,GAAK,EAAA,UAAA;AAAW,KAAA;IAC5BgD,WAAa,EAAA;QAAEhD,GAAK,EAAA,UAAA;AAAW,KAAA;IAC/BiD,iBAAmB,EAAA;QAAEjD,GAAK,EAAA,UAAA;QAAYjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,aAAA;AAAc,KAAA;IACxF+nB,SAAW,EAAA;QAAElD,GAAK,EAAA,QAAA;AAAS,KAAA;IAC3BmD,WAAa,EAAA;QAAEnD,GAAK,EAAA,QAAA;QAAU/iB,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,YAAA;AAAa,KAAA;IAC/DioB,iBAAmB,EAAA;QAAEpD,GAAK,EAAA,cAAA;QAAgBjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,iBAAA;AAAkB,KAAA;IAChGkoB,gBAAkB,EAAA;QAAErD,GAAK,EAAA,cAAA;QAAgB7kB,MAAQ,EAAA,iBAAA;AAAkB,KAAA;IACnEqnB,MAAQ,EAAA;QAAExC,GAAK,EAAA,QAAA;AAAS,KAAA;IACxBsD,eAAiB,EAAA;QAAEtD,GAAK,EAAA,QAAA;QAAUjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,QAAA;AAAS,KAAA;IAC/E+mB,QAAU,EAAA;QAAElC,GAAK,EAAA,UAAA;AAAW,KAAA;IAC5BmC,iBAAmB,EAAA;QAAEnC,GAAK,EAAA,UAAA;QAAYjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;QAAM9B,MAAQ,EAAA,UAAA;AAAW,KAAA;AACzF,CAAA,CAAA;AACA,IAAK,IAAI8jB,KAAKyD,8BAAgC,CAAA;AAC1C1kB,IAAAA,aAAAA,CAAS0kB,8BAA8B,CAACzD,CAAAA,CAAE,CAAEsE,CAAAA,0BAAAA,CAAqBjY,SAAS,EAAE2T,CAAAA,CAAAA,CAAAA;AAChF,CAAA;AAEA,MAAMuE,8BAAiC,GAAA;IACnCC,GAAK,EAAA;QAAE1mB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,EAAA;QAAIC,IAAM,EAAA,IAAA;AAAK,KAAA;IACnCymB,UAAY,EAAA;QAAE3mB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,EAAA;QAAIC,IAAM,EAAA,IAAA;AAAK,KAAA;IAC1C0mB,SAAW,EAAA;QAAE3D,GAAK,EAAA,WAAA;AAAY,KAAA;IAC9B4D,YAAc,EAAA;QAAE5D,GAAK,EAAA,WAAA;QAAajjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IAC7D4mB,kBAAoB,EAAA;QAAE7D,GAAK,EAAA,WAAA;QAAajjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IACnE6mB,oBAAsB,EAAA;QAAE9D,GAAK,EAAA,WAAA;QAAa/iB,IAAM,EAAA,IAAA;AAAK,KAAA;IACrD8mB,kBAAoB,EAAA;QAAE/D,GAAK,EAAA,WAAA;AAAY,KAAA;IACvCgE,WAAa,EAAA;QAAEhE,GAAK,EAAA,aAAA;QAAejjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IAC9DgnB,cAAgB,EAAA;QAAEjE,GAAK,EAAA,aAAA;AAAc,KAAA;IACrCkE,cAAgB,EAAA;QAAElE,GAAK,EAAA,aAAA;QAAe/iB,IAAM,EAAA,IAAA;AAAK,KAAA;IACjDknB,yBAA2B,EAAA;QAAEnE,GAAK,EAAA,aAAA;AAAc,KAAA;IAChDoE,uBAAyB,EAAA;QAAEpE,GAAK,EAAA,aAAA;AAAc,KAAA;IAC9CqE,KAAO,EAAA;QAAErE,GAAK,EAAA,OAAA;AAAQ,KAAA;IACtBsE,UAAY,EAAA;QAAEtE,GAAK,EAAA,OAAA;AAAQ,KAAA;IAC3BuE,aAAe,EAAA;QAAEvE,GAAK,EAAA,OAAA;AAAQ,KAAA;IAC9BwE,cAAgB,EAAA;QAAExE,GAAK,EAAA,OAAA;QAASjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IAC3DwnB,iBAAmB,EAAA;QAAEzE,GAAK,EAAA,OAAA;AAAQ,KAAA;IAClC0E,YAAc,EAAA;QAAE1E,GAAK,EAAA,cAAA;AAAe,KAAA;IACpC2E,eAAiB,EAAA;QAAE3E,GAAK,EAAA,cAAA;AAAe,KAAA;IACvC4E,SAAW,EAAA;QAAE5E,GAAK,EAAA,WAAA;QAAajjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IAC1D4nB,YAAc,EAAA;QAAE7E,GAAK,EAAA,WAAA;AAAY,KAAA;IACjC8E,mBAAqB,EAAA;QAAE9E,GAAK,EAAA,aAAA;AAAc,KAAA;IAC1C+E,gBAAkB,EAAA;QAAE/E,GAAK,EAAA,aAAA;AAAc,KAAA;IACvCgF,iBAAmB,EAAA;QAAEhF,GAAK,EAAA,UAAA;QAAYjjB,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAGC,IAAM,EAAA,IAAA;AAAK,KAAA;IACjEgoB,oBAAsB,EAAA;QAAEjF,GAAK,EAAA,UAAA;AAAW,KAAA;IACxCkF,aAAe,EAAA;QAAElF,GAAK,EAAA,UAAA;AAAW,KAAA;IACjCmF,gBAAkB,EAAA;QAAEnF,GAAK,EAAA,UAAA;AAAW,KAAA;AACxC,CAAA,CAAA;AACA,IAAK,IAAIf,KAAKuE,8BAAgC,CAAA;AAC1CxlB,IAAAA,aAAAA,CAASwlB,8BAA8B,CAACvE,CAAAA,CAAE,CAAEmG,CAAAA,0BAAAA,CAAqB9Z,SAAS,EAAE2T,CAAAA,CAAAA,CAAAA;AAChF;;AC1VA;;IAIA,SAAS/c,OAAOhB,CAAC,EAAA;AAChB,IAAA,IAAIA,IAAI,IAAM,EAAA;AACb,QAAA,OAAO6B,IAAKsF,CAAAA,KAAK,CAACnH,CAAAA,GAAI,KAAS,CAAA,GAAA,GAAA,CAAA;KAE3B,MAAA,IAAIA,IAAI,OAAS,EAAA;AACrB,QAAA,OAAO6B,IAAKsF,CAAAA,KAAK,CAACnH,CAAAA,GAAI,QAAY,CAAA,GAAA,GAAA,CAAA;KAE9B,MAAA;QACJ,OAAOA,CAAAA,CAAAA;AACR,KAAA;AACD,CAAA;AAEA,IAAImkB,QAAQ,SAAUzqB,IAAI,EAAE0qB,EAAE,EAAEC,EAAE,EAAA;AAEjC,IAAA,IAAIxoB,MAAM4O,QAAU3O,EAAAA,GAAAA,GAAM,CAAG2L,EAAAA,KAAAA,GAAQ5F,KAAK4F,KAAK,CAAA;AAC/C,IAAA,IAAI6c,EAAK7c,GAAAA,KAAAA,CAAMjF,MAAOwL,CAAAA,gBAAgB,IAAI,CAAA,CAAA,CAAA;IAE1C,IAAIuW,KAAAA,GAAQ,KAAKD,EAAIE,EAAAA,MAAAA,GAAS,KAAKF,EAClCG,EAAAA,MAAAA,GAAS,CAAIH,GAAAA,EAAAA,EAAII,MAAS,GAAA,CAAA,GAAIJ,IAC9BK,OAAU,GAAA,CAAA,GAAIL,IAAIM,OAAU,GAAA,EAAA,GAAKN,IACjCO,WAAc,GAAA,EAAA,GAAKP,EAAIQ,EAAAA,YAAAA,GAAe,EAAKR,GAAAA,EAAAA,CAAAA;IAE5C,IAAIxW,MAAAA,GAASnQ,QAASC,CAAAA,aAAa,CAAC,QAAA,CAAA,CAAA;AACpCkQ,IAAAA,MAAAA,CAAO3L,KAAK,GAAGoiB,KAAAA,CAAAA;AACfzW,IAAAA,MAAAA,CAAOD,MAAM,GAAG2W,MAAAA,CAAAA;IAChB1W,MAAOrS,CAAAA,KAAK,CAACspB,OAAO,GAAG,wBAAA,CAAA;IAEvB,IAAIvO,OAAAA,GAAU1I,MAAOiG,CAAAA,UAAU,CAAC,IAAA,CAAA,CAAA;AAChCyC,IAAAA,OAAAA,CAAQwO,IAAI,GAAG,OAAW,GAAA,CAAA,GAAIV,EAAM,GAAA,+BAAA,CAAA;AACpC9N,IAAAA,OAAAA,CAAQyO,YAAY,GAAG,KAAA,CAAA;AAEvBzO,IAAAA,OAAAA,CAAQtF,SAAS,GAAGmT,EAAAA,CAAAA;AACpB7N,IAAAA,OAAAA,CAAQrF,QAAQ,CAAC,CAAG,EAAA,CAAA,EAAGoT,KAAOC,EAAAA,MAAAA,CAAAA,CAAAA;AAE9BhO,IAAAA,OAAAA,CAAQtF,SAAS,GAAGkT,EAAAA,CAAAA;IACpB5N,OAAQ0O,CAAAA,QAAQ,CAACxrB,IAAAA,EAAM+qB,MAAQC,EAAAA,MAAAA,CAAAA,CAAAA;AAC/BlO,IAAAA,OAAAA,CAAQrF,QAAQ,CAACwT,OAASC,EAAAA,OAAAA,EAASC,WAAaC,EAAAA,YAAAA,CAAAA,CAAAA;AAEhDtO,IAAAA,OAAAA,CAAQtF,SAAS,GAAGmT,EAAAA,CAAAA;AACpB7N,IAAAA,OAAAA,CAAQ2O,WAAW,GAAG,GAAA,CAAA;AACtB3O,IAAAA,OAAAA,CAAQrF,QAAQ,CAACwT,OAASC,EAAAA,OAAAA,EAASC,WAAaC,EAAAA,YAAAA,CAAAA,CAAAA;IAEhD,OAAO;QAEN3b,GAAK2E,EAAAA,MAAAA;QAEL/Q,MAAQ,EAAA,SAAUP,KAAK,EAAE4oB,QAAQ,EAAA;YAEhCvpB,GAAMgG,GAAAA,IAAAA,CAAKhG,GAAG,CAACA,GAAKW,EAAAA,KAAAA,CAAAA,CAAAA;YACpBV,GAAM+F,GAAAA,IAAAA,CAAK/F,GAAG,CAACA,GAAKU,EAAAA,KAAAA,CAAAA,CAAAA;AAEpBga,YAAAA,OAAAA,CAAQtF,SAAS,GAAGmT,EAAAA,CAAAA;AACpB7N,YAAAA,OAAAA,CAAQ2O,WAAW,GAAG,CAAA,CAAA;AACtB3O,YAAAA,OAAAA,CAAQrF,QAAQ,CAAC,CAAG,EAAA,CAAA,EAAGoT,KAAOK,EAAAA,OAAAA,CAAAA,CAAAA;AAC9BpO,YAAAA,OAAAA,CAAQtF,SAAS,GAAGkT,EAAAA,CAAAA;AACpB5N,YAAAA,OAAAA,CAAQ0O,QAAQ,CAAClkB,MAAAA,CAAOyG,KAAMjL,CAAAA,KAAAA,CAAAA,CAAAA,GAAU,MAAM9C,IAAO,GAAA,IAAA,GAAOsH,MAAOyG,CAAAA,KAAAA,CAAM5L,QAAQ,GAAMmF,GAAAA,MAAAA,CAAOyG,KAAM3L,CAAAA,GAAAA,CAAAA,CAAAA,GAAQ,KAAK2oB,MAAQC,EAAAA,MAAAA,CAAAA,CAAAA;AAEzHlO,YAAAA,OAAAA,CAAQQ,SAAS,CAAClJ,MAAQ6W,EAAAA,OAAAA,GAAUL,EAAIM,EAAAA,OAAAA,EAASC,WAAcP,GAAAA,EAAAA,EAAIQ,YAAcH,EAAAA,OAAAA,EAASC,OAASC,EAAAA,WAAAA,GAAcP,EAAIQ,EAAAA,YAAAA,CAAAA,CAAAA;AAErHtO,YAAAA,OAAAA,CAAQrF,QAAQ,CAACwT,OAAAA,GAAUE,WAAcP,GAAAA,EAAAA,EAAIM,SAASN,EAAIQ,EAAAA,YAAAA,CAAAA,CAAAA;AAE1DtO,YAAAA,OAAAA,CAAQtF,SAAS,GAAGmT,EAAAA,CAAAA;AACpB7N,YAAAA,OAAAA,CAAQ2O,WAAW,GAAG,GAAA,CAAA;AACtB3O,YAAAA,OAAAA,CAAQrF,QAAQ,CAACwT,OAAUE,GAAAA,WAAAA,GAAcP,EAAIM,EAAAA,OAAAA,EAASN,EAAI7c,EAAAA,KAAAA,CAAM,CAAC,CAAKjL,GAAAA,KAAAA,GAAQ4oB,QAAQ,IAAKN,YAAAA,CAAAA,CAAAA,CAAAA;AAE5F,SAAA;AAED,KAAA,CAAA;AAED,CAAA,CAAA;AAEA,IAAIO,OAAQ,GAAA,WAAA;AAEX,IAAA,IAAIxR,IAAO,GAAA,CAAA,CAAA;IAEX,IAAI6F,SAAAA,GAAY/b,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CAAA;IACvC8b,SAAUje,CAAAA,KAAK,CAACspB,OAAO,GAAG,sEAAA,CAAA;AAC1BrL,IAAAA,SAAAA,CAAUxb,gBAAgB,CAAC,OAAS,EAAA,SAAUqN,KAAK,EAAA;AAElDA,QAAAA,KAAAA,CAAMjI,cAAc,EAAA,CAAA;AACpBgiB,QAAAA,SAAAA,CAAU,EAAEzR,IAAAA,GAAO6F,SAAUxc,CAAAA,QAAQ,CAACiE,MAAM,CAAA,CAAA;KAE1C,EAAA,KAAA,CAAA,CAAA;;AAIH,IAAA,SAASokB,SAASC,KAAK,EAAA;QAEtB9L,SAAUzb,CAAAA,WAAW,CAACunB,KAAAA,CAAMrc,GAAG,CAAA,CAAA;QAC/B,OAAOqc,KAAAA,CAAAA;AAER,KAAA;AAEA,IAAA,SAASF,UAAUvnB,EAAE,EAAA;QAEpB,IAAK,IAAIkL,IAAI,CAAGA,EAAAA,CAAAA,GAAIyQ,UAAUxc,QAAQ,CAACiE,MAAM,EAAE8H,CAAK,EAAA,CAAA;YAEnDyQ,SAAUxc,CAAAA,QAAQ,CAAC+L,CAAAA,CAAE,CAACxN,KAAK,CAACC,OAAO,GAAGuN,CAAMlL,KAAAA,EAAAA,GAAK,OAAU,GAAA,MAAA,CAAA;AAE5D,SAAA;QAEA8V,IAAO9V,GAAAA,EAAAA,CAAAA;AAER,KAAA;;IAIA,IAAI0nB,SAAAA,GAAY,CAACC,WAAeC,IAAAA,IAAG,EAAGC,GAAG,EAAA,EAAIC,QAAWJ,GAAAA,SAAAA,EAAWK,MAAS,GAAA,CAAA,CAAA;AAE5E,IAAA,IAAIC,QAAWR,GAAAA,QAAAA,CAAS,IAAIpB,KAAAA,CAAM,OAAO,MAAQ,EAAA,MAAA,CAAA,CAAA,CAAA;AACjD,IAAA,IAAI6B,OAAUT,GAAAA,QAAAA,CAAS,IAAIpB,KAAAA,CAAM,MAAM,MAAQ,EAAA,MAAA,CAAA,CAAA,CAAA;AAE/C,IAAA,IAAI8B,KAAKP,WAAW,IAAIO,KAAKP,WAAW,CAACQ,MAAM,EAAE;AAEhD,QAAA,IAAIC,QAAWZ,GAAAA,QAAAA,CAAS,IAAIpB,KAAAA,CAAM,MAAM,MAAQ,EAAA,MAAA,CAAA,CAAA,CAAA;AAEjD,KAAA;IAEAmB,SAAU,CAAA,CAAA,CAAA,CAAA;IAEV,OAAO;QAENc,QAAU,EAAA,EAAA;QAEVjd,GAAKuQ,EAAAA,SAAAA;QAEL6L,QAAUA,EAAAA,QAAAA;QACVD,SAAWA,EAAAA,SAAAA;QAEXe,KAAO,EAAA,WAAA;AAENZ,YAAAA,SAAAA,GAAY,CAACC,WAAeC,IAAAA,IAAG,EAAGC,GAAG,EAAA,CAAA;AAEtC,SAAA;QAEAU,GAAK,EAAA,WAAA;AAEJR,YAAAA,MAAAA,EAAAA,CAAAA;AAEA,YAAA,IAAIS,OAAO,CAACb,WAAeC,IAAAA,IAAG,EAAGC,GAAG,EAAA,CAAA;YAEpCI,OAAQjpB,CAAAA,MAAM,CAACwpB,IAAAA,GAAOd,SAAW,EAAA,GAAA,CAAA,CAAA;YAEjC,IAAIc,IAAAA,IAAQV,WAAW,IAAM,EAAA;gBAE5BE,QAAShpB,CAAAA,MAAM,CAAC,MAAC+oB,GAAS,QAASS,IAAAA,GAAOV,QAAO,CAAI,EAAA,GAAA,CAAA,CAAA;gBAErDA,QAAWU,GAAAA,IAAAA,CAAAA;gBACXT,MAAS,GAAA,CAAA,CAAA;AAET,gBAAA,IAAIK,QAAU,EAAA;oBAEb,IAAID,MAAAA,GAASR,YAAYQ,MAAM,CAAA;oBAC/BC,QAASppB,CAAAA,MAAM,CAACmpB,MAAOM,CAAAA,cAAc,GAAG,OAASN,EAAAA,MAAAA,CAAOO,eAAe,GAAG,OAAA,CAAA,CAAA;AAE3E,iBAAA;AAED,aAAA;YAEA,OAAOF,IAAAA,CAAAA;AAER,SAAA;QAEAxpB,MAAQ,EAAA,WAAA;YAEP0oB,SAAY,GAAA,IAAI,CAACa,GAAG,EAAA,CAAA;AAErB,SAAA;;QAIAprB,UAAYwe,EAAAA,SAAAA;QACZgN,OAASpB,EAAAA,SAAAA;AAEV,KAAA,CAAA;AAED,CAAA;;ACjLO,MAAMD,KAAcrJ,SAAAA,UAAAA,CAAAA;IAOvBC,MAAS,GAAA;AACL,QAAA,IAAI,CAAC0K,MAAM,CAACpB,QAAQ,CAAC,IAAI,CAACqB,QAAQ,CAAA,CAAA;AAClC,QAAA,IAAI,CAACD,MAAM,CAACpB,QAAQ,CAAC,IAAI,CAACsB,SAAS,CAAA,CAAA;AACnC,QAAA,IAAI,CAACF,MAAM,CAACpB,QAAQ,CAAC,IAAI,CAACuB,SAAS,CAAA,CAAA;AACnC,QAAA,IAAI,CAACH,MAAM,CAACpB,QAAQ,CAAC,IAAI,CAACwB,SAAS,CAAA,CAAA;AACnC,QAAA,IAAI,CAACJ,MAAM,CAACrB,SAAS,CAAC,CAAA,CAAA,CAAA;QACtB3nB,QAASmJ,CAAAA,IAAI,CAAC7I,WAAW,CAAC,IAAI,CAAC0oB,MAAM,CAACxd,GAAG,CAAA,CAAA;AAC7C,KAAA;IAEAqT,SAAY,GAAA;QACR7e,QAASmJ,CAAAA,IAAI,CAACvJ,WAAW,CAAC,IAAI,CAACopB,MAAM,CAACxd,GAAG,CAAA,CAAA;AAC7C,KAAA;AAEApM,IAAAA,MAAAA,CAAO4f,EAAU,EAAQ;AACrB,QAAA,MAAMqK,OAAO,IAAI,CAAC9L,MAAM,CAACE,QAAQ,CAAC4L,IAAI,CAAA;QACtC,IAAI,CAACJ,QAAQ,CAAC7pB,MAAM,CAACiqB,IAAKnW,CAAAA,MAAM,CAACoW,KAAK,EAAE,GAAA,CAAA,CAAA;QACxC,IAAI,CAACH,SAAS,CAAC/pB,MAAM,CAACiqB,IAAKnW,CAAAA,MAAM,CAACqW,SAAS,EAAE,MAAA,CAAA,CAAA;QAC7C,IAAI,CAACL,SAAS,CAAC9pB,MAAM,CAACiqB,IAAKd,CAAAA,MAAM,CAACiB,QAAQ,EAAE,GAAA,CAAA,CAAA;QAC5C,IAAI,CAACJ,SAAS,CAAChqB,MAAM,CAACiqB,IAAKI,CAAAA,QAAQ,CAACjmB,MAAM,EAAE,EAAA,CAAA,CAAA;QAC5C,IAAI,CAACwlB,MAAM,CAAC5pB,MAAM,EAAA,CAAA;AACtB,KAAA;;;AA1BQ4pB,QAAAA,IAAAA,CAAAA,MAAAA,GAAyB,IAAIU,OAAAA,EAAAA,CAAAA;aAC7BT,QAAkB,GAAA,IAAIzC,KAAM,CAAA,IAAA,EAAM,MAAQ,EAAA,MAAA,CAAA,CAAA;aAC1C2C,SAAmB,GAAA,IAAI3C,KAAM,CAAA,KAAA,EAAO,MAAQ,EAAA,MAAA,CAAA,CAAA;aAC5C0C,SAAmB,GAAA,IAAI1C,KAAM,CAAA,KAAA,EAAO,MAAQ,EAAA,MAAA,CAAA,CAAA;aAC5C4C,SAAmB,GAAA,IAAI5C,KAAM,CAAA,KAAA,EAAO,MAAQ,EAAA,MAAA,CAAA,CAAA;;AAuBxD;;AC5BO,MAAMmD,mBAA4BtL,SAAAA,UAAAA,CAAAA;IAKrCC,MAAe,GAAA;QACX,IAAI,CAACsL,KAAK,GAAG,IAAIC,UAAAA,EAAAA,CAAAA;QACjB,IAAI,CAAC7R,OAAO,GAAG,IAAI,CAACuF,MAAM,CAACuM,KAAK,CAACC,kBAAAA,CAAAA,CAAAA;AACjC,QAAA,IAAI,CAACC,OAAO,GAAG,IAAI,CAACzM,MAAM,CAACrd,GAAG,CAAC,IAAI+pB,gBAAW,CAAA,IAAI,CAACL,KAAK,CAAA,CAAA,CAAA;AAC5D,KAAA;IAEAM,QAAiB,GAAA;AACb,QAAA,IAAI,CAACF,OAAO,CAACtK,OAAO,GAAG,IAAA,CAAA;AAC3B,KAAA;IAEAyK,SAAkB,GAAA;AACd,QAAA,IAAI,CAACH,OAAO,CAACtK,OAAO,GAAG,KAAA,CAAA;AAC3B,KAAA;AAEAtgB,IAAAA,MAAAA,CAAO4f,EAAU,EAAQ;QACrB,MAAM,EAAEoL,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAG,IAAI,CAACtS,OAAO,CAAA;QAC/C,IAAI,CAAC4R,KAAK,CAAC1rB,GAAG,CAACgf,IAAI,CAACkN,MAAQlqB,CAAAA,CAAAA,GAAG,CAACmqB,MAAAA,CAAAA,CAAAA;QAChC,IAAI,CAACT,KAAK,CAACzrB,GAAG,CAAC+e,IAAI,CAACkN,MAAQlqB,CAAAA,CAAAA,GAAG,CAACoqB,MAAAA,CAAAA,CAAAA;QAChC,IAAI,CAACN,OAAO,CAACO,iBAAiB,EAAA,CAAA;AAClC,KAAA;AACJ;;;;;;;","x_google_ignoreList":[0,18]}
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../../../node_modules/.pnpm/rollup-plugin-styles@4.0.0_rollup@4.49.0/node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/gui/controllers/Controller.ts","../src/gui/controllers/OptionController.ts","../src/gui/utils/normalizeColorString.ts","../src/gui/utils/getColorFormat.ts","../src/gui/utils/index.ts","../src/gui/controllers/NumberController.ts","../src/gui/controllers/BooleanController.ts","../src/gui/controllers/StringController.ts","../src/gui/controllers/FunctionController.ts","../src/gui/controllers/ColorController.ts","../src/gui/common/UIElement.ts","../src/gui/common/UINumber.ts","../src/gui/controllers/VectorController.ts","../src/gui/curve/CurveEditor.ts","../src/gui/controllers/CurveController.ts","../src/gui/controllers/TextureController.ts","../src/gui/controllers/SceneTreeController.ts","../src/gui/GUI.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/helpers/ViewerHelper.ts","../src/Inspector.ts","../src/stats/Stats.js","../src/Stats.ts"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import { GUI } from \"../GUI\";\n\nexport class Controller {\n static nextNameID: number = 0;\n\n parent: GUI;\n object: Object;\n property: string;\n /**\n * The value of `object[ property ]` when the controller was created.\n */\n initialValue: any;\n /**\n * The outermost container DOM element for this controller.\n */\n domElement: HTMLElement;\n /**\n * The DOM element that contains the controller's name.\n */\n $name: HTMLElement;\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n */\n $widget: HTMLElement;\n /**\n * The DOM element that receives the disabled attribute when using disable()\n */\n $disable: HTMLElement;\n /**\n * Used to determine if the controller is disabled.\n * Use `controller.disable( true|false )` to modify this value\n */\n protected _disabled: boolean = false;\n /**\n * Used to determine if the Controller is hidden.\n * Use `controller.show()` or `controller.hide()` to change this.\n */\n protected _hidden: boolean = false;\n protected _changed: boolean = false;\n /**\n * Used to determine if the controller is currently listening. Don't modify this value\n * directly. Use the `controller.listen( true|false )` method instead.\n */\n protected _listening: boolean = false;\n protected _listenCallbackID: number = -1;\n protected _listenPrevValue: any;\n /**\n * The controller's name. Use `controller.name( 'Name' )` to modify this value.\n */\n _name: string = \"\";\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value directly.\n * Use the `controller.onChange( callback )` method instead.\n */\n protected _onChange: Function;\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `controller.onFinishChange( callback )` method instead.\n */\n protected _onFinishChange: Function;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n className: string,\n widgetTag: string = 'div'\n ) {\n this.parent = parent;\n this.object = object;\n this.property = property;\n\n this.initialValue = this.getValue();\n this.domElement = document.createElement('div');\n this.domElement.classList.add('controller');\n this.domElement.classList.add(className);\n\n this.$name = document.createElement('div');\n this.$name.classList.add('name');\n\n Controller.nextNameID = Controller.nextNameID || 0;\n this.$name.id = `lil-gui-name-${++Controller.nextNameID}`;\n\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n * @type {HTMLElement}\n */\n this.$widget = document.createElement(widgetTag);\n this.$widget.classList.add('widget');\n this.$disable = this.$widget;\n\n this.domElement.appendChild(this.$name);\n this.domElement.appendChild(this.$widget);\n // Don't fire global key events while typing in a controller\n this.domElement.addEventListener('keydown', e => e.stopPropagation());\n this.domElement.addEventListener('keyup', e => e.stopPropagation());\n\n this.parent.children.push(this);\n this.parent.controllers.push(this);\n\n this.parent.$children.appendChild(this.domElement);\n\n this._listenCallback = this._listenCallback.bind(this);\n\n this.name(property);\n\n }\n\n /**\n * Sets the name of the controller and its label in the GUI.\n * @param {string} name\n * @returns {this}\n */\n name(name: string) {\n this._name = name;\n this.$name.innerHTML = name;\n return this;\n }\n\n /**\n * Pass a function to be called whenever the value is modified by this controller.\n * The function receives the new value as its first parameter. The value of `this` will be the\n * controller.\n *\n * For function controllers, the `onChange` callback will be fired on click, after the function\n * executes.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onChange( function( v ) {\n * \tconsole.log( 'The value is now ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n /**\n * Calls the onChange methods of this controller and its parent GUI.\n */\n protected _callOnChange() {\n this.parent._callOnChange(this);\n if (this._onChange !== undefined) {\n this._onChange.call(this, this.getValue());\n }\n this._changed = true;\n }\n\n /**\n * Pass a function to be called after this controller has been modified and loses focus.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onFinishChange( function( v ) {\n * \tconsole.log( 'Changes complete: ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n /**\n * Should be called by Controller when its widgets lose focus.\n */\n protected _callOnFinishChange() {\n if (this._changed) {\n this.parent._callOnFinishChange(this);\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, this.getValue());\n }\n }\n this._changed = false;\n }\n\n /**\n * Sets the controller back to its initial value.\n * @returns {this}\n */\n reset() {\n this.setValue(this.initialValue);\n this._callOnFinishChange();\n return this;\n }\n\n /**\n * Enables this controller.\n * @param {boolean} enabled\n * @returns {this}\n * @example\n * controller.enable();\n * controller.enable( false ); // disable\n * controller.enable( controller._disabled ); // toggle\n */\n enable(enabled = true) {\n return this.disable(!enabled);\n }\n\n /**\n * Disables this controller.\n * @param {boolean} disabled\n * @returns {this}\n * @example\n * controller.disable();\n * controller.disable( false ); // enable\n * controller.disable( !controller._disabled ); // toggle\n */\n disable(disabled = true) {\n if (disabled === this._disabled) return this;\n this._disabled = disabled;\n this.domElement.classList.toggle('disabled', disabled);\n this.$disable.toggleAttribute('disabled', disabled);\n return this;\n\n }\n\n /**\n * Shows the Controller after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * controller.show();\n * controller.show( false ); // hide\n * controller.show( controller._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n\n }\n\n /**\n * Hides the Controller.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n options(options: any) {\n return this;\n }\n\n /**\n * Sets the minimum value. Only works on number controllers.\n * @param {number} min\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n min(min: number) {\n return this;\n }\n\n /**\n * Sets the maximum value. Only works on number controllers.\n * @param {number} max\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n max(max: number) {\n return this;\n }\n\n /**\n * Values set by this controller will be rounded to multiples of `step`. Only works on number\n * controllers.\n * @param {number} step\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n step(step: number) {\n return this;\n }\n\n /**\n * Rounds the displayed value to a fixed number of decimals, without affecting the actual value\n * like `step()`. Only works on number controllers.\n * @example\n * gui.add( object, 'property' ).listen().decimals( 4 );\n * @param {number} decimals\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n decimals(decimals: number) {\n return this;\n }\n\n /**\n * Calls `updateDisplay()` every animation frame. Pass `false` to stop listening.\n * @param {boolean} listen\n * @returns {this}\n */\n listen(listen: boolean = true) {\n this._listening = listen;\n if (this._listenCallbackID !== undefined) {\n cancelAnimationFrame(this._listenCallbackID);\n this._listenCallbackID = undefined;\n }\n if (this._listening) {\n this._listenCallback();\n }\n return this;\n\n }\n\n checkDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.save();\n if (this._listenPrevValue !== value) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n private _listenCallback() {\n this._listenCallbackID = requestAnimationFrame(this._listenCallback);\n // To prevent framerate loss, make sure the value has changed before updating the display.\n // Note: save() is used here instead of getValue() only because of ColorController. The !== operator\n // won't work for color objects or arrays, but ColorController.save() always returns a string.\n if (this.checkDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Returns `object[ property ]`.\n * @returns {any}\n */\n getValue() {\n return this.object[this.property];\n }\n\n /**\n * Sets the value of `object[ property ]`, invokes any `onChange` handlers and updates the display.\n * @param {any} value\n * @param {boolean} callOnChange\n * @returns {this}\n */\n setValue(value: any) {\n this.object[this.property] = value;\n this._callOnChange();\n this.updateDisplay();\n return this;\n }\n\n update() {\n if (this.checkDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Updates the display to keep it in sync with the current value. Useful for updating your\n * controllers when their values have been modified outside of the GUI.\n * @returns {this}\n */\n updateDisplay() {\n return this;\n }\n\n load(value: any) {\n this.setValue(value);\n this._callOnFinishChange();\n return this;\n }\n\n save() {\n return this.getValue();\n }\n\n /**\n * Destroys this controller and removes it from the parent GUI.\n */\n destroy() {\n this.listen(false);\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.controllers.splice(this.parent.controllers.indexOf(this), 1);\n this.parent.$children.removeChild(this.domElement);\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class OptionController extends Controller {\n $select: HTMLSelectElement;\n $display: HTMLElement;\n\n private _values: any[];\n private _names: string[];\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n options: Array<any> | Object\n ) {\n super(parent, object, property, 'option');\n\n this.$select = document.createElement('select');\n this.$select.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n\n this.options(options);\n \n this.$select.addEventListener('change', () => {\n this.setValue(this._values[this.$select.selectedIndex]);\n this._callOnFinishChange();\n });\n this.$select.addEventListener('focus', () => {\n this.$display.classList.add('focus');\n });\n this.$select.addEventListener('blur', () => {\n this.$display.classList.remove('focus');\n });\n\n this.$widget.appendChild(this.$select);\n this.$widget.appendChild(this.$display);\n this.$disable = this.$select;\n }\n\n updateDisplay() {\n const value = this.getValue();\n const index = this._values.indexOf(value);\n this.$select.selectedIndex = index;\n this.$display.innerHTML = index === -1 ? value : this._names[index];\n return this;\n }\n\n options(options: Array<any> | Object) {\n this.$select.innerHTML = \"\";\n this._values = Array.isArray(options) ? options : Object.values(options);\n this._names = Array.isArray(options) ? options : Object.keys(options);\n this._names.forEach(name => {\n const $option = document.createElement('option');\n $option.innerHTML = name;\n this.$select.appendChild($option);\n });\n return this;\n }\n}\n","/* eslint-disable no-cond-assign */\n\nexport function normalizeColorString(string: String) {\n\tlet match, result;\n\n\tif (match = string.match(/(#|0x)?([a-f0-9]{6})/i)) {\n\t\tresult = match[2];\n\t} else if (match = string.match(/rgb\\(\\s*(\\d*)\\s*,\\s*(\\d*)\\s*,\\s*(\\d*)\\s*\\)/)) {\n\t\tresult = parseInt(match[1]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[2]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[3]).toString(16).padStart(2, \"0\");\n\t} else if (match = string.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i)) {\n\t\tresult = match[1] + match[1] + match[2] + match[2] + match[3] + match[3];\n\t}\n\n\tif (result) {\n\t\treturn '#' + result;\n\t}\n\n\treturn false;\n\n}\n","import { normalizeColorString } from './normalizeColorString';\n\nconst STRING = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'string',\n\tfromHexString: normalizeColorString,\n\ttoHexString: normalizeColorString\n};\n\nconst INT = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'number',\n\tfromHexString: string => parseInt(string.substring(1), 16),\n\ttoHexString: value => '#' + value.toString(16).padStart(6, 0)\n};\n\nconst ARRAY = {\n\tisPrimitive: false,\n\n\t// The arrow function is here to appease tree shakers like esbuild or webpack.\n\t// See https://esbuild.github.io/api/#tree-shaking\n\tmatch: v => Array.isArray(v),\n\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget[0] = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget[1] = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget[2] = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString([r, g, b], rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst OBJECT = {\n\tisPrimitive: false,\n\tmatch: v => Object(v) === v,\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget.r = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget.g = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget.b = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString({ r, g, b }, rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst FORMATS = [STRING, INT, ARRAY, OBJECT];\n\nexport function getColorFormat(value) {\n\treturn FORMATS.find(format => format.match(value));\n}\n","export * from \"./getColorFormat\";\nexport * from \"./normalizeColorString\";\n\nexport function toFixedFloat(v: number, fractionDigits: number) {\n\treturn parseFloat(v.toFixed(fractionDigits));\n}\n\nexport function toFixed(v: number, fractionDigits: number) {\n\treturn toFixedFloat(v, fractionDigits).toString();\n}\n\nexport function getPrecision(value: number) {\n\tlet str = value.toString();\n\tlet index = str.indexOf('.');\n\tif (index > 0) {\n\t\treturn str.length - index - 1;\n\t}\n\treturn 0;\n}\n\nexport function hasDecimal(value: number) {\n\treturn value % 1 !== 0;\n}","import { GUI } from \"../GUI\";\nimport { getPrecision, hasDecimal } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class NumberController extends Controller {\n private _min: number;\n private _max: number;\n private _step: number;\n\n private _stepExplicit: boolean;\n private _hasSlider: boolean;\n private _inputFocused: boolean;\n\n $fill: HTMLElement;\n $input: HTMLInputElement;\n $slider: HTMLElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n\n super(parent, object, property, 'number');\n\n this._initInput();\n\n this.min(min);\n this.max(max);\n\n const stepExplicit = step !== undefined;\n this.step(stepExplicit ? step : this._getImplicitStep(), stepExplicit);\n }\n\n min(min: number) {\n this._min = min;\n this._onUpdateMinMax();\n return this;\n }\n\n max(max: number) {\n this._max = max;\n this._onUpdateMinMax();\n return this;\n }\n\n step(step: number, explicit: boolean = true) {\n this._step = step;\n this._stepExplicit = explicit;\n return this;\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.getValue();\n if (this._listenPrevValue === undefined || (Math.abs(this._listenPrevValue - value) >= this._step)) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n updateDisplay() {\n const value = this._snap(this.getValue());\n if (this._hasSlider) {\n let percent = (value - this._min) / (this._max - this._min);\n percent = Math.max(0, Math.min(percent, 1));\n this.$fill.style.width = percent * 100 + '%';\n }\n if (!this._inputFocused) {\n this.$input.value = \"\" + value;\n }\n return this;\n }\n\n private _initInput() {\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n // On touch devices only, use input[type=number] to force a numeric keyboard.\n // Ideally we could use one input type everywhere, but [type=number] has quirks\n // on desktop, and [inputmode=decimal] has quirks on iOS.\n // See https://github.com/georgealways/lil-gui/pull/16\n\n const isTouch = window.matchMedia('(pointer: coarse)').matches;\n\n if (isTouch) {\n this.$input.setAttribute('type', 'number');\n this.$input.setAttribute('step', 'any');\n }\n\n this.$widget.appendChild(this.$input);\n\n this.$disable = this.$input;\n\n const onInput = () => {\n let value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n if (this._stepExplicit) {\n value = this._snap(value);\n }\n this.setValue(this._clamp(value));\n };\n\n // Keys & mouse wheel\n // ---------------------------------------------------------------------\n const increment = delta => {\n const value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n this._snapClampSetValue(value + delta);\n // Force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n };\n\n const onKeyDown = e => {\n // Using `e.key` instead of `e.code` also catches NumpadEnter\n if (e.key === 'Enter') {\n this.$input.blur();\n }\n if (e.code === 'ArrowUp') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e));\n }\n if (e.code === 'ArrowDown') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e) * -1);\n }\n };\n\n const onWheel = e => {\n if (this._inputFocused) {\n e.preventDefault();\n increment(this._step * this._normalizeMouseWheel(e));\n }\n };\n\n // Vertical drag\n // ---------------------------------------------------------------------\n\n let testingForVerticalDrag = false,\n initClientX,\n initClientY,\n prevClientY,\n initValue,\n dragDelta;\n\n // Once the mouse is dragged more than DRAG_THRESH px on any axis, we decide\n // on the user's intent: horizontal means highlight, vertical means drag.\n const DRAG_THRESH = 5;\n\n const onMouseDown = e => {\n\n initClientX = e.clientX;\n initClientY = prevClientY = e.clientY;\n testingForVerticalDrag = true;\n\n initValue = this.getValue();\n dragDelta = 0;\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n\n };\n\n const onMouseMove = e => {\n if (testingForVerticalDrag) {\n const dx = e.clientX - initClientX;\n const dy = e.clientY - initClientY;\n if (Math.abs(dy) > DRAG_THRESH) {\n e.preventDefault();\n this.$input.blur();\n testingForVerticalDrag = false;\n this._setDraggingStyle(true, 'vertical');\n } else if (Math.abs(dx) > DRAG_THRESH) {\n onMouseUp();\n }\n }\n\n // This isn't an else so that the first move counts towards dragDelta\n if (!testingForVerticalDrag) {\n const dy = e.clientY - prevClientY;\n dragDelta -= dy * this._step * this._arrowKeyMultiplier(e);\n\n // Clamp dragDelta so we don't have 'dead space' after dragging past bounds.\n // We're okay with the fact that bounds can be undefined here.\n if (initValue + dragDelta > this._max) {\n dragDelta = this._max - initValue;\n } else if (initValue + dragDelta < this._min) {\n dragDelta = this._min - initValue;\n }\n\n this._snapClampSetValue(initValue + dragDelta);\n\n }\n\n prevClientY = e.clientY;\n\n };\n\n const onMouseUp = () => {\n this._setDraggingStyle(false, 'vertical');\n this._callOnFinishChange();\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n };\n\n // Focus state & onFinishChange\n // ---------------------------------------------------------------------\n\n const onFocus = () => {\n this._inputFocused = true;\n };\n\n const onBlur = () => {\n this._inputFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n };\n\n this.$input.addEventListener('input', onInput);\n this.$input.addEventListener('keydown', onKeyDown);\n this.$input.addEventListener('wheel', onWheel, { passive: false });\n this.$input.addEventListener('mousedown', onMouseDown);\n this.$input.addEventListener('focus', onFocus);\n this.$input.addEventListener('blur', onBlur);\n\n }\n\n private _initSlider() {\n this._hasSlider = true;\n\n // Build DOM\n // ---------------------------------------------------------------------\n\n this.$slider = document.createElement('div');\n this.$slider.classList.add('slider');\n\n this.$fill = document.createElement('div');\n this.$fill.classList.add('fill');\n\n this.$slider.appendChild(this.$fill);\n this.$widget.insertBefore(this.$slider, this.$input);\n\n this.domElement.classList.add('hasSlider');\n\n // Map clientX to value\n // ---------------------------------------------------------------------\n\n const map = (v, a, b, c, d) => {\n return (v - a) / (b - a) * (d - c) + c;\n };\n\n const setValueFromX = clientX => {\n const rect = this.$slider.getBoundingClientRect();\n let value = map(clientX, rect.left, rect.right, this._min, this._max);\n this._snapClampSetValue(value);\n };\n\n // Mouse drag\n // ---------------------------------------------------------------------\n\n const mouseDown = e => {\n this._setDraggingStyle(true);\n setValueFromX(e.clientX);\n window.addEventListener('mousemove', mouseMove);\n window.addEventListener('mouseup', mouseUp);\n };\n\n const mouseMove = e => {\n setValueFromX(e.clientX);\n };\n\n const mouseUp = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('mousemove', mouseMove);\n window.removeEventListener('mouseup', mouseUp);\n };\n\n // Touch drag\n // ---------------------------------------------------------------------\n\n let testingForScroll = false, prevClientX, prevClientY;\n\n const beginTouchDrag = e => {\n e.preventDefault();\n this._setDraggingStyle(true);\n setValueFromX(e.touches[0].clientX);\n testingForScroll = false;\n };\n\n const onTouchStart = e => {\n\n if (e.touches.length > 1) return;\n\n // If we're in a scrollable container, we should wait for the first\n // touchmove to see if the user is trying to slide or scroll.\n if (this._hasScrollBar) {\n\n prevClientX = e.touches[0].clientX;\n prevClientY = e.touches[0].clientY;\n testingForScroll = true;\n\n } else {\n\n // Otherwise, we can set the value straight away on touchstart.\n beginTouchDrag(e);\n\n }\n\n window.addEventListener('touchmove', onTouchMove, { passive: false });\n window.addEventListener('touchend', onTouchEnd);\n\n };\n\n const onTouchMove = e => {\n\n if (testingForScroll) {\n\n const dx = e.touches[0].clientX - prevClientX;\n const dy = e.touches[0].clientY - prevClientY;\n\n if (Math.abs(dx) > Math.abs(dy)) {\n\n // We moved horizontally, set the value and stop checking.\n beginTouchDrag(e);\n\n } else {\n\n // This was, in fact, an attempt to scroll. Abort.\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n\n }\n\n } else {\n\n e.preventDefault();\n setValueFromX(e.touches[0].clientX);\n\n }\n\n };\n\n const onTouchEnd = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n };\n\n // Mouse wheel\n // ---------------------------------------------------------------------\n\n // We have to use a debounced function to call onFinishChange because\n // there's no way to tell when the user is \"done\" mouse-wheeling.\n const callOnFinishChange = this._callOnFinishChange.bind(this);\n const WHEEL_DEBOUNCE_TIME = 400;\n let wheelFinishChangeTimeout;\n\n const onWheel = e => {\n\n // ignore vertical wheels if there's a scrollbar\n const isVertical = Math.abs(e.deltaX) < Math.abs(e.deltaY);\n if (isVertical && this._hasScrollBar) return;\n\n e.preventDefault();\n\n // set value\n const delta = this._normalizeMouseWheel(e) * this._step;\n this._snapClampSetValue(this.getValue() + delta);\n\n // force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n\n // debounce onFinishChange\n clearTimeout(wheelFinishChangeTimeout);\n wheelFinishChangeTimeout = setTimeout(callOnFinishChange, WHEEL_DEBOUNCE_TIME);\n\n };\n\n this.$slider.addEventListener('mousedown', mouseDown);\n this.$slider.addEventListener('touchstart', onTouchStart, { passive: false });\n this.$slider.addEventListener('wheel', onWheel, { passive: false });\n\n }\n\n private _setDraggingStyle(active, axis = 'horizontal') {\n if (this.$slider) {\n this.$slider.classList.toggle('active', active);\n }\n document.body.classList.toggle('lil-gui-dragging', active);\n document.body.classList.toggle(`lil-gui-${axis}`, active);\n }\n\n private _getImplicitStep() {\n const value = this.getValue();\n if (this._hasMin && this._hasMax) {\n return (this._max - this._min) / 100;\n }\n else if (hasDecimal(value)) {\n return Math.pow(0.1, getPrecision(value));\n }\n return 0.1;\n }\n\n private _onUpdateMinMax() {\n if (!this._hasSlider && this._hasMin && this._hasMax) {\n // If this is the first time we're hearing about min and max\n // and we haven't explicitly stated what our step is, let's\n // update that too.\n if (!this._stepExplicit) {\n this.step(this._getImplicitStep(), false);\n }\n\n this._initSlider();\n this.updateDisplay();\n }\n }\n\n private _normalizeMouseWheel(e) {\n let { deltaX, deltaY } = e;\n // Safari and Chrome report weird non-integral values for a notched wheel,\n // but still expose actual lines scrolled via wheelDelta. Notched wheels\n // should behave the same way as arrow keys.\n if (Math.floor(e.deltaY) !== e.deltaY && e.wheelDelta) {\n deltaX = 0;\n deltaY = -e.wheelDelta / 120;\n deltaY *= this._stepExplicit ? 1 : 10;\n }\n const wheel = deltaX + -deltaY;\n return wheel;\n\n }\n\n private _arrowKeyMultiplier(e) {\n let mult = this._stepExplicit ? 1 : 10;\n if (e.shiftKey) {\n mult *= 10;\n } else if (e.altKey) {\n mult /= 10;\n }\n return mult;\n\n }\n\n private _snap(value) {\n // This would be the logical way to do things, but floating point errors.\n // return Math.round( value / this._step ) * this._step;\n\n // Using inverse step solves a lot of them, but not all\n // const inverseStep = 1 / this._step;\n // return Math.round( value * inverseStep ) / inverseStep;\n\n // Not happy about this, but haven't seen it break.\n const r = Math.round(value / this._step) * this._step;\n return parseFloat(r.toPrecision(15));\n }\n\n private _clamp(value) {\n // either condition is false if min or max is undefined\n if (value < this._min) value = this._min;\n if (value > this._max) value = this._max;\n return value;\n }\n\n private _snapClampSetValue(value) {\n this.setValue(this._clamp(this._snap(value)));\n }\n\n private get _hasScrollBar() {\n const root = this.parent.root.$children;\n return root.scrollHeight > root.clientHeight;\n }\n\n private get _hasMin() {\n return this._min !== undefined;\n }\n\n private get _hasMax() {\n return this._max !== undefined;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class BooleanController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'boolean', 'label');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'checkbox');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$widget.appendChild(this.$input);\n this.$input.addEventListener('change', () => {\n this.setValue(this.$input.checked);\n this._callOnFinishChange();\n });\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.checked = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class StringController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n\n super(parent, object, property, 'string');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$input.addEventListener('input', () => {\n this.setValue(this.$input.value);\n });\n this.$input.addEventListener('keydown', e => {\n if (e.code === 'Enter') {\n this.$input.blur();\n }\n });\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n this.$widget.appendChild(this.$input);\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.value = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class FunctionController extends Controller {\n $button: HTMLButtonElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'function');\n\n // Buttons are the only case where widget contains name\n this.$button = document.createElement('button');\n this.$button.appendChild(this.$name);\n this.$widget.appendChild(this.$button);\n\n this.$button.addEventListener('click', e => {\n e.preventDefault();\n this.getValue().call(this.object);\n this._callOnChange();\n });\n\n // enables :active pseudo class on mobile\n this.$button.addEventListener('touchstart', () => { }, { passive: true });\n this.$disable = this.$button;\n }\n\n}","import { GUI } from \"../GUI\";\nimport { getColorFormat, normalizeColorString } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class ColorController extends Controller {\n $input: HTMLInputElement;\n $text: HTMLInputElement;\n $display: HTMLDivElement;\n $alpha: HTMLDivElement;\n\n private _textFocused: boolean = false;\n private _initialValueHexString: string = \"\";\n private _rgbScale: number = 1;\n private _format: any;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n rgbScale: number\n ) {\n super(parent, object, property, 'color');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'color');\n this.$input.setAttribute('tabindex', \"-1\");\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$text = document.createElement('input');\n this.$text.setAttribute('type', 'text');\n this.$text.setAttribute('spellcheck', 'false');\n this.$text.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n this.$display.appendChild(this.$input);\n\n this.$widget.appendChild(this.$display);\n this.$widget.appendChild(this.$text);\n\n this._format = getColorFormat(this.initialValue);\n this._rgbScale = rgbScale;\n\n this._initialValueHexString = this.save();\n this._textFocused = false;\n\n this.$input.addEventListener('input', () => {\n this._setValueFromHexString(this.$input.value);\n });\n\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n\n this.$text.addEventListener('input', () => {\n const tryParse = normalizeColorString(this.$text.value);\n if (tryParse) {\n this._setValueFromHexString(tryParse);\n }\n });\n\n this.$text.addEventListener('focus', () => {\n this._textFocused = true;\n this.$text.select();\n });\n\n this.$text.addEventListener('blur', () => {\n this._textFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n });\n\n this.$disable = this.$text;\n this.listen();\n }\n\n reset() {\n this._setValueFromHexString(this._initialValueHexString);\n return this;\n }\n\n private _setValueFromHexString(value: string) {\n if (this._format.isPrimitive) {\n const newValue = this._format.fromHexString(value);\n this.setValue(newValue);\n } else {\n this._format.fromHexString(value, this.getValue(), this._rgbScale);\n this.setValue(this.getValue());\n }\n }\n\n save() {\n return this._format.toHexString(this.getValue(), this._rgbScale);\n }\n\n load(value: string) {\n this._setValueFromHexString(value);\n this._callOnFinishChange();\n return this;\n }\n\n updateDisplay() {\n this.$input.value = this._format.toHexString(this.getValue(), this._rgbScale);\n if (!this._textFocused) {\n this.$text.value = this.$input.value.substring(1);\n }\n this.$display.style.backgroundColor = this.$input.value;\n return this;\n }\n\n}\n","export class UIElement<T extends HTMLElement = HTMLElement> {\n\tpublic dom: T & { disabled?: boolean };\n\n\tconstructor(dom: T) {\n\t\tthis.dom = dom;\n\t}\n\n\tpublic add(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.appendChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic remove(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.removeChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic clear() {\n\t\twhile (this.dom.children.length) {\n\t\t\tthis.dom.removeChild(this.dom.lastChild);\n\t\t}\n\t}\n\n\tpublic setId(id: string) {\n\t\tthis.dom.id = id;\n\t\treturn this;\n\n\t}\n\n\tpublic getId() {\n\t\treturn this.dom.id;\n\n\t}\n\n\tpublic setClass(name: string) {\n\t\tthis.dom.className = name;\n\t\treturn this;\n\t}\n\n\tpublic addClass(name) {\n\t\tthis.dom.classList.add(name);\n\t\treturn this;\n\t}\n\n\tpublic removeClass(name) {\n\t\tthis.dom.classList.remove(name);\n\t\treturn this;\n\t}\n\n\tpublic setStyle(style: string, array: any[]) {\n\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\tthis.dom.style[style] = array[i];\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setDisabled(value: boolean) {\n\t\tthis.dom.disabled = value;\n\t\treturn this;\n\n\t}\n\n\tpublic setTextContent(value: string) {\n\t\tthis.dom.textContent = value;\n\t\treturn this;\n\n\t}\n\n\tpublic getIndexOfChild(element: UIElement) {\n\t\treturn Array.prototype.indexOf.call(this.dom.children, element.dom);\n\t}\n\n}\n","import { getPrecision, hasDecimal } from '../utils';\nimport { UIElement } from './UIElement';\n\nexport class UINumber extends UIElement<HTMLInputElement> {\n\tvalue: number = 0;\n\tmin: number = -Infinity;\n\tmax: number = Infinity;\n\tstep: number = 1;\n\tnudge: number = 1;\n\tunit: string = \"\";\n\n\tprivate _onChangeCallback: Function;\n\n\tconstructor(\n\t\tvalue: number,\n\t\tmin: number,\n\t\tmax: number,\n\t\tstep: number\n\t) {\n\t\tsuper(document.createElement('input'));\n\n\t\tthis.dom.style.cursor = 'ns-resize';\n\t\tthis.dom.value = '0.00';\n\n\t\tthis.min = min ?? this.min;\n\t\tthis.max = max ?? this.max;\n\t\tthis.step = step ?? this._getImplicitStep(value);\n\t\tthis.setValue(value);\n\n\t\tconst scope = this;\n\n\t\tconst changeEvent = document.createEvent('HTMLEvents');\n\t\tchangeEvent.initEvent('change', true, true);\n\n\t\tlet distance = 0;\n\t\tlet onMouseDownValue = 0;\n\n\t\tconst pointer = { x: 0, y: 0 };\n\t\tconst prevPointer = { x: 0, y: 0 };\n\n\t\tfunction onMouseDown(event: MouseEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tdistance = 0;\n\t\t\tonMouseDownValue = scope.value;\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\n\t\t\tdocument.addEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.addEventListener('mouseup', onMouseUp, false);\n\t\t}\n\n\t\tfunction onMouseMove(event: MouseEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.clientX;\n\t\t\tpointer.y = event.clientY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance * 10 / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\n\t\t\t}\n\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\t\t}\n\n\t\tfunction onMouseUp() {\n\t\t\tdocument.removeEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.removeEventListener('mouseup', onMouseUp, false);\n\n\t\t\tif (Math.abs(distance) < 2) {\n\t\t\t\tscope.dom.focus();\n\t\t\t\tscope.dom.select();\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchStart(event: TouchEvent) {\n\t\t\tif (event.touches.length === 1) {\n\t\t\t\tdistance = 0;\n\t\t\t\tonMouseDownValue = scope.value;\n\n\t\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\t\tprevPointer.y = event.touches[0].pageY;\n\n\t\t\t\tdocument.addEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.addEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchMove(event: TouchEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.touches[0].pageX;\n\t\t\tpointer.y = event.touches[0].pageY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t}\n\n\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\tprevPointer.y = event.touches[0].pageY;\n\t\t}\n\n\t\tfunction onTouchEnd(event: TouchEvent) {\n\t\t\tif (event.touches.length === 0) {\n\t\t\t\tdocument.removeEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.removeEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onChange() {\n\t\t\tscope.setValue(parseFloat(scope.dom.value));\n\t\t}\n\n\t\tfunction onFocus() {\n\t\t\tscope.dom.style.backgroundColor = '';\n\t\t\tscope.dom.style.cursor = '';\n\t\t}\n\n\t\tfunction onBlur() {\n\t\t\t// scope.dom.style.backgroundColor = 'transparent';\n\t\t\tscope.dom.style.cursor = 'ns-resize';\n\t\t}\n\n\t\tfunction onKeyDown(event: KeyboardEvent) {\n\t\t\tevent.stopPropagation();\n\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tscope.dom.blur();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() + scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 40: // down\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() - scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tonBlur();\n\n\t\tthis.dom.addEventListener('keydown', onKeyDown, false);\n\t\tthis.dom.addEventListener('mousedown', onMouseDown, false);\n\t\tthis.dom.addEventListener('touchstart', onTouchStart, { passive: true });\n\t\tthis.dom.addEventListener('change', onChange, false);\n\t\tthis.dom.addEventListener('focus', onFocus, false);\n\t\tthis.dom.addEventListener('blur', onBlur, false);\n\t}\n\n\tequals(v: number) {\n\t\treturn Math.abs(this.value - v) <= this.step;\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsetValue(value: any) {\n\t\tif (value !== undefined) {\n\t\t\tif (value < this.min) value = this.min;\n\t\t\tif (value > this.max) value = this.max;\n\t\t\tthis.value = value;\n\t\t\tthis.updateDisplay();\n\t\t\tthis._onChangeCallback && this._onChangeCallback(value);\n\t\t}\n\t\treturn this;\n\t}\n\n\tupdateDisplay() {\n\t\tlet value = this._snap(this.getValue());\n\t\tthis.dom.value = \"\" + value;\n\t\tif (this.unit !== '') this.dom.value += ' ' + this.unit;\n\t}\n\n\tprivate _getImplicitStep(value: number) {\n\t\tif (this.max !== Infinity && this.min !== -Infinity) {\n\t\t\treturn (this.max - this.min) / 100;\n\t\t}\n\t\telse if (hasDecimal(value)) {\n\t\t\treturn 1 / Math.pow(10, getPrecision(value));\n\t\t}\n\t\treturn 0.1;\n\t}\n\n\tprivate _snap(value: number) {\n\t\tconst r = Math.round(value / this.step) * this.step;\n\t\treturn parseFloat(r.toPrecision(15));\n\t}\n\n\tonChange(callback: Function) {\n\t\tthis._onChangeCallback = callback;\n\t\treturn this;\n\t}\n\n\tsetUnit(unit: string) {\n\t\tthis.unit = unit;\n\t\treturn this;\n\t}\n\n}\n","import { GUI } from \"../GUI\";\nimport { UINumber } from \"../common/UINumber\";\nimport { Controller } from \"./Controller\";\n\nexport class VectorController extends Controller {\n xElement: UINumber;\n yElement: UINumber;\n zElement: UINumber;\n wElement: UINumber;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n super(parent, object, property, 'vector');\n\n const value = this.getValue();\n this.initialValue = value.clone && value.clone() || Object.assign({}, value);\n if (this.initialValue.x !== undefined) this.xElement = this.createElement(true, this.initialValue.x, min, max, step, v => { value.x = v; this._callOnChange() });\n if (this.initialValue.y !== undefined) this.yElement = this.createElement(true, this.initialValue.y, min, max, step, v => { value.y = v; this._callOnChange() });\n if (this.initialValue.z !== undefined) this.zElement = this.createElement(true, this.initialValue.z, min, max, step, v => { value.z = v; this._callOnChange() });\n if (this.initialValue.w !== undefined) this.wElement = this.createElement(false, this.initialValue.w, min, max, step, v => { value.w = v; this._callOnChange() });\n }\n\n createElement(\n fill: boolean,\n value: number,\n min: number,\n max: number,\n step: number,\n onChange: Function\n ) {\n let uiNumber = new UINumber(value, min, max, step);\n uiNumber.dom.setAttribute('type', 'number');\n uiNumber.dom.setAttribute('aria-labelledby', this.$name.id);\n uiNumber.onChange(onChange);\n this.$widget.appendChild(uiNumber.dom);\n if (fill) {\n let $fill = document.createElement('div');\n $fill.classList.add('fill');\n this.$widget.appendChild($fill);\n }\n return uiNumber;\n }\n\n setValue(value: { x?: number, y?: number, z?: number, w?: number }) {\n let target = this.getValue();\n if (value.x !== undefined) target.x = value.x;\n if (value.y !== undefined) target.y = value.y;\n if (value.z !== undefined) target.z = value.z;\n if (value.w !== undefined) target.w = value.w;\n this._callOnChange();\n return this;\n }\n\n checkDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n let value = this.getValue();\n if (value.x !== undefined && this.xElement && !this.xElement.equals(value.x)) {\n this.xElement.value = value.x;\n this.xElement.updateDisplay();\n }\n if (value.y !== undefined && this.yElement && !this.yElement.equals(value.y)) {\n this.yElement.value = value.y;\n this.yElement.updateDisplay();\n }\n if (value.z !== undefined && this.zElement && !this.zElement.equals(value.z)) {\n this.zElement.value = value.z;\n this.zElement.updateDisplay();\n }\n if (value.w !== undefined && this.wElement && !this.wElement.equals(value.w)) {\n this.wElement.value = value.w;\n this.wElement.updateDisplay();\n }\n return this;\n }\n}\n","import { IAnimationCurve } from \"./IAnimationCurve\";\nimport { ICurvePoint } from \"./ICurvePoint\";\n\nfunction clamp(v: number, minv: number, maxv: number) {\n return Math.max(Math.min(v, maxv), minv);\n}\n\nfunction hitTest(x: number, y: number, cx: number, cy: number, hw: number, hh: number) {\n if (x < cx - hw || x > cx + hw || y < cy - hh || y > cy + hh) {\n return false;\n }\n return true;\n}\n\nconst theme = {\n BACKGROUND: \"#545454\",\n GRID: \"#646464\",\n LINE: \"#000000\",\n COVER: \"#19191980\",\n POINT: \"#878787\",\n SELECTED: \"#ffffff\",\n}\n\nclass CurvePanel {\n private _canvas: HTMLCanvasElement;\n private _context: CanvasRenderingContext2D;\n private _xRes: number = 1;\n private _yRes: number = 1;\n private _cx: number = 0;\n private _cy: number = 0;\n private _ra: number = 2;\n private _fixed: boolean = false;\n private _autoResize: boolean = true;\n\n private _mouse: { x: number, y: number } = { x: 0, y: 0 };\n private _offsetXRef: number = 0;\n private _offsetYRef: number = 0;\n private _cxRef: number = 0;\n private _cyRef: number = 0;\n private _pxRef: number = 0;\n private _pyRef: number = 0;\n private _button: number = -1;\n\n private _curve: IAnimationCurve = null;\n private _selectedPoint: ICurvePoint = null;\n private _tryAddingPoint: boolean = false;\n private _trySelectingPoint: boolean = false;\n private _onCurveChanged?: (curve: IAnimationCurve) => void;\n private _onPointChanged?: (point: ICurvePoint) => void;\n private _onPointRemoved?: (point: ICurvePoint) => void;\n private _onPointAdded?: (point: ICurvePoint) => void;\n\n get dom() {\n return this._canvas;\n }\n\n get curve() {\n return this._curve;\n }\n\n constructor() {\n this._canvas = document.createElement(\"canvas\");\n this._context = this._canvas.getContext(\"2d\");\n\n const canvas = this._canvas;\n canvas.addEventListener(\"mousedown\", e => this._onMouseDown(e));\n canvas.addEventListener(\"mouseup\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mouseleave\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mousemove\", e => this._onMouseMove(e));\n canvas.addEventListener(\"wheel\", e => this._onWheel(e as any));\n canvas.addEventListener(\"dblclick\", e => this._onDblClick(e));\n }\n\n resize(width?: number, height?: number) {\n const canvas = this._canvas;\n const DPR = window.devicePixelRatio || 1;\n const xRes = (width ?? canvas.offsetWidth) * DPR;\n const yRes = (height ?? canvas.offsetHeight) * DPR;\n if (Math.hypot(xRes - this._xRes, yRes - this._yRes) > 0.001) {\n this._xRes = canvas.width = xRes;\n this._yRes = canvas.height = yRes;\n }\n }\n\n onCurveChanged(callback: (curve: IAnimationCurve) => void) {\n this._onCurveChanged = callback;\n return this;\n }\n\n onPointChanged(callback: (point: ICurvePoint) => void) {\n this._onPointChanged = callback;\n return this;\n }\n\n onPointRemoved(callback: (point: ICurvePoint) => void) {\n this._onPointRemoved = callback;\n return this;\n }\n\n onPointAdded(callback: (point: ICurvePoint) => void) {\n this._onPointAdded = callback;\n return this;\n }\n\n private _onDblClick(e: MouseEvent) {\n e.preventDefault();\n if (e.button === 0) {\n this._tryAddingPoint = true;\n }\n }\n\n private _onMouseDown(e: MouseEvent) {\n e.preventDefault();\n if (e.button == 0) {\n this._cxRef = this._cx;\n this._cyRef = this._cy;\n this._offsetXRef = e.offsetX;\n this._offsetYRef = e.offsetY;\n this._trySelectingPoint = true;\n }\n this._button = e.button;\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n this._selectedPoint = null;\n }\n\n _onMouseUp(e: MouseEvent) {\n e.preventDefault();\n this._button = -1;\n }\n\n private _onMouseMove(e: MouseEvent) {\n e.preventDefault();\n const cxRes = this._canvas.offsetWidth;\n const cyRes = this._canvas.offsetHeight;\n if (this._button == 0) {\n if (this._selectedPoint) {\n const rx = this._ra;\n const ry = this._fixed ? this._ra * cyRes / cxRes : this._ra;\n const x = this._pxRef + (e.offsetX - this._offsetXRef) / cxRes * rx / 2;\n const y = this._pyRef - (e.offsetY - this._offsetYRef) / cyRes * ry / 2;\n this.setPointPos(x, y);\n }\n else {\n this._cx = this._cxRef - (e.offsetX - this._offsetXRef) * 2 * this._ra / cxRes;\n this._cy = this._cyRef + (e.offsetY - this._offsetYRef) * 2 * this._ra / cyRes;\n }\n }\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n }\n\n private _onWheel(e: WheelEvent & { wheelDelta: number }) {\n e.preventDefault();\n const sfactor = 1.1;\n this._ra *= (e.deltaY < 0 || e.wheelDelta > 0) ? 1.0 / sfactor : sfactor;\n this._ra = clamp(this._ra, 1, 2);\n }\n\n render() {\n if (this._autoResize) {\n this.resize();\n }\n\n const rx = this._ra;\n const ry = this._fixed ? this._ra * this._yRes / this._xRes : this._ra;\n\n const a = 2 - this._ra;\n this._cx = clamp(this._cx, -a, a);\n this._cy = clamp(this._cy, -a, a);\n\n const ctx = this._context;\n ctx.setTransform(1, 0.0, 0.0, 1, 0.5, 0.5);\n ctx.fillStyle = theme.BACKGROUND;\n ctx.fillRect(0, 0, this._xRes, this._yRes);\n\n this._drawGrid(ctx, theme.GRID, rx, ry);\n // this._drawAxis(ctx, theme.GRID, rx, ry);\n this._drawCurve(ctx, theme.LINE, rx, ry);\n }\n\n private _drawGrid(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const iax = Math.floor(this._cx - rx);\n const ibx = Math.floor(this._cx + rx);\n const iay = Math.floor(this._cy - ry);\n const iby = Math.floor(this._cy + ry);\n\n ctx.lineWidth = 2.0;\n ctx.strokeStyle = color;\n ctx.beginPath();\n for (let i = iax; i <= ibx; i++) {\n let ix = this._xRes * (0.5 + (i - this._cx) / (2 * rx));\n ctx.moveTo(ix, this._yRes);\n ctx.lineTo(ix, 0);\n }\n for (let i = iay; i <= iby; i++) {\n let iy = this._yRes * (0.5 - (i - this._cy) / (2 * ry));\n ctx.moveTo(this._xRes, iy);\n ctx.lineTo(0, iy);\n }\n ctx.stroke();\n }\n\n private _drawAxis(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const xPos = this._xRes * (0.5 - this._cx / (2.0 * rx));\n const yPos = this._yRes * (0.5 + this._cy / (2.0 * ry));\n ctx.strokeStyle = color;\n ctx.lineWidth = 4;\n ctx.beginPath();\n ctx.moveTo(xPos, 0); ctx.lineTo(xPos, this._yRes);\n ctx.moveTo(0, yPos); ctx.lineTo(this._xRes, yPos);\n ctx.stroke();\n }\n\n private _drawCurve(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n if (!this._curve) return;\n\n const ax = 2 / rx; //缩放\n const ay = 2 / ry;\n const bx = (1 - ax) / 2; //偏移,保持居中\n const by = (1 - ay) / 2;\n const cx = this._cx / 4; //缩小4倍至单位1\n const cy = this._cy / 4;\n\n const SAMPLES = Math.min(100, this._xRes);\n const STEP = 1 / (SAMPLES - 1);\n const point = this._curve.createCurvePoint();\n\n const DPR = window.devicePixelRatio || 1;\n const mx = this._mouse.x * DPR;\n const my = this._mouse.y * DPR;\n\n let hitCurve = null;\n let hitPoint = null;\n let isFirstPoint = true;\n\n //配置参数\n ctx.lineWidth = 2;\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n\n //绘制曲线\n ctx.beginPath();\n for (let i = 0; i < SAMPLES; i++) {\n let p = this._curve.getPoint(i * STEP, point);\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitCurve === null && hitTest(mx, my, x, y, 15, 15)) {\n hitCurve = p;\n }\n\n if (isFirstPoint) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n isFirstPoint = false;\n }\n ctx.stroke();\n ctx.lineTo(this._xRes, this._yRes);\n ctx.closePath();\n ctx.fillStyle = theme.COVER;\n ctx.fill();\n\n //绘制控制点\n const points = this._curve.points;\n for (let i = 1; i < points.length - 1; i++) {\n let p = points[i];\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitPoint === null && hitTest(mx, my, x, y, 20, 20)) {\n hitPoint = p;\n }\n\n ctx.fillStyle = p === hitPoint || p === this._selectedPoint ? theme.SELECTED : theme.POINT;\n ctx.fillRect(x - 2.5, y - 2.5, 5, 5);\n }\n\n //状态检查\n if (this._tryAddingPoint && hitPoint) {\n this._tryAddingPoint = false;\n points.splice(points.indexOf(hitPoint), 1);\n this._onPointRemoved && this._onPointRemoved(hitPoint);\n }\n if (this._tryAddingPoint && hitCurve) {\n this._tryAddingPoint = false;\n let px = (mx / this._xRes - bx) / ax + cx;\n let py = cy - (my / this._yRes + by - 1) / ay;\n let p = this._curve.createCurvePoint(px, py);\n points.push(p);\n points.sort((a, b) => a.x - b.x);\n this._onPointAdded && this._onPointAdded(p);\n }\n if (this._trySelectingPoint && hitPoint) {\n this._trySelectingPoint = false;\n this.selectPoint(hitPoint);\n }\n this._tryAddingPoint = false;\n this._trySelectingPoint = false;\n }\n\n setCurve(curve: IAnimationCurve) {\n this._curve = curve;\n this._selectedPoint = null;\n this._onCurveChanged && this._onCurveChanged(curve);\n return this;\n }\n\n setPointMode(mode: number) {\n if (this._selectedPoint) {\n this._selectedPoint.mode = mode;\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n setPointPos(x: number, y: number) {\n if (this._selectedPoint) {\n this._selectedPoint.set(clamp(x, 0, 1), clamp(y, 0, 1));\n this._curve.points.sort((a, b) => a.x - b.x);\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n selectPoint(point?: ICurvePoint) {\n if (point) {\n this._selectedPoint = point;\n this._pxRef = point.x;\n this._pyRef = point.y;\n this._onPointChanged && this._onPointChanged(point);\n }\n else {\n this._selectedPoint = null;\n }\n return this;\n }\n}\n\nfunction copyToClipboard(text: string) {\n const tempInput = document.createElement('textarea');\n tempInput.value = text;\n\n document.body.appendChild(tempInput);\n\n tempInput.select();\n tempInput.setSelectionRange(0, 99999); // 兼容移动设备\n\n document.execCommand('copy');\n document.body.removeChild(tempInput);\n}\n\nfunction toFixedFloat(v: number, fractionDigits?: number) {\n return parseFloat(v.toFixed(fractionDigits));\n}\n\nexport class CurveEditor {\n private _dom: HTMLElement;\n private _tabs: HTMLDivElement[] = [];\n private _sharpTab: HTMLDivElement;\n private _smoothTab: HTMLDivElement;\n private _xPosInput: HTMLInputElement;\n private _yPosInput: HTMLInputElement;\n private _curvePanel: CurvePanel;\n private _curvePointPanel: HTMLDivElement;\n private _layoutPoint: ICurvePoint;\n private _curves: IAnimationCurve[];\n private _target: IAnimationCurve | IAnimationCurve[];\n private _onChange: Function;\n\n get dom() {\n return this._dom;\n }\n\n constructor(target: IAnimationCurve | IAnimationCurve[]) {\n this._dom = document.createElement(\"div\");\n this._dom.classList.add(\"curve-editor\");\n document.body.appendChild(this._dom);\n\n let tabGroup = document.createElement(\"div\");\n tabGroup.classList.add(\"curve-top\");\n tabGroup.ondblclick = (e) => {\n e.preventDefault();\n let text = this._curves.map(v => v.points.length + \",\" + v.points.map(p => `${toFixedFloat(p.x, 3)},${toFixedFloat(p.y, 3)},${p.mode}`).join(\",\")).join(\",\");\n copyToClipboard(text);\n alert(\"Copyed curve points\");\n }\n this._dom.appendChild(tabGroup);\n\n let curves = Array.isArray(target) ? target : [target];\n if (curves.length > 1) {\n for (let i = 0; i < curves.length; i++) {\n let c = curves[i];\n let tab = document.createElement(\"div\");\n tab.classList.add(\"button-medium\");\n tab.textContent = c.name || i.toString();\n tab.onclick = () => this._onToggleTab(i);\n tabGroup.appendChild(tab);\n this._tabs.push(tab);\n }\n }\n this._target = target;\n this._curves = curves;\n this._layoutPoint = curves[0].createCurvePoint(0, 0, -1);\n this._curvePanel = new CurvePanel();\n this._curvePanel.dom.classList.add(\"curve-panel\");\n this._curvePanel.onCurveChanged(c => this._onCurveChanged(c));\n this._curvePanel.onPointChanged(p => this._onPointChanged(p));\n this._curvePanel.onPointAdded(p => this._onPointAdded(p));\n this._curvePanel.onPointRemoved(p => this._onPointRemoved(p));\n this._dom.appendChild(this._curvePanel.dom);\n\n this._curvePointPanel = document.createElement(\"div\");\n this._curvePointPanel.classList.add(\"curve-point-panel\");\n this._curvePointPanel.style.display = \"none\";\n this._dom.appendChild(this._curvePointPanel);\n\n this._smoothTab = document.createElement(\"div\");\n this._smoothTab.classList.add(\"button-medium\");\n this._smoothTab.innerHTML = /*html*/`\n <svg viewBox=\"351.367 172.836 32 32\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:bx=\"https://boxy-svg.com\">\n <path style=\"fill: none; stroke-width: 2px; stroke: rgb(240, 240, 240);\" d=\"M 356 200 C 356 200 355.7892846963982 195.12801796288684 356 193 C 356.17984169835074 191.18377517899805 356.2627725586097 189.58207992830177 357 188 C 357.82614089255884 186.22711303095053 359.32609311863524 184.16719383631644 361 183 C 362.6636054267734 181.83998923607413 364.99999999999994 180.99999999999997 367 181 C 368.99999999999994 180.99999999999997 371.3363945732266 181.83998923607413 373 183 C 374.6739068813647 184.16719383631644 376.1738591074412 186.22711303095053 377 188 C 377.73722744139036 189.58207992830177 377.8201583016493 191.18377517899808 378 193 C 378.2107153036018 195.12801796288684 378 200 378 200\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\" bx:d=\"M 356 200 R 356 193 R 357 188 R 361 183 R 367 181 R 373 183 R 377 188 R 378 193 R 378 200 1@f911f19e\"/>\n <rect x=\"368\" y=\"176.021\" width=\"6\" height=\"5.979\" style=\"fill: rgb(255, 255, 255);\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\"/>\n </svg>\n `;\n this._curvePointPanel.appendChild(this._smoothTab);\n\n this._sharpTab = document.createElement(\"div\");\n this._sharpTab.classList.add(\"button-medium\");\n this._sharpTab.innerHTML = /*html*/`\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <polyline style=\"fill: none; stroke: rgb(240, 240, 240); stroke-width: 2px;\" points=\"6 26 17 7 28 26\"/>\n <rect x=\"14\" y=\"4\" width=\"6\" height=\"6\" style=\"fill: rgb(255, 255, 255);\"/>\n </svg>\n `\n this._curvePointPanel.appendChild(this._sharpTab);\n\n this._smoothTab.onclick = () => this._curvePanel.setPointMode(0);\n this._sharpTab.onclick = () => this._curvePanel.setPointMode(1);\n\n this._xPosInput = document.createElement(\"input\");\n this._xPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._xPosInput);\n\n this._yPosInput = document.createElement(\"input\");\n this._yPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._yPosInput);\n\n this._onToggleTab(0);\n }\n\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n private _onToggleTab(tabInex: number) {\n for (let i = 0; i < this._tabs.length; i++) {\n if (i === tabInex) this._tabs[i].classList.add(\"selected\");\n else this._tabs[i].classList.remove(\"selected\");\n }\n this._curvePanel.setCurve(this._curves[tabInex]);\n }\n\n private _onTogglePointTab(tab: number) {\n if (tab === 0) {\n this._smoothTab.classList.add(\"selected\");\n this._sharpTab.classList.remove(\"selected\");\n }\n else {\n this._smoothTab.classList.remove(\"selected\");\n this._sharpTab.classList.add(\"selected\");\n }\n }\n\n private _onCurveChanged(curve: IAnimationCurve) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPosChanged() {\n this._curvePanel.setPointPos(parseFloat(this._xPosInput.value), parseFloat(this._yPosInput.value));\n }\n\n private _onPointAdded(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(point);\n }\n\n private _onPointRemoved(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPointChanged(point: ICurvePoint) {\n let isChanged = false;\n let layoutPoint = this._layoutPoint;\n if (layoutPoint.mode !== point.mode) {\n layoutPoint.mode = point.mode;\n this._onTogglePointTab(point.mode);\n isChanged = true;\n }\n if (Math.hypot(layoutPoint.x - point.x, layoutPoint.y - point.y) > 0.001) {\n layoutPoint.x = point.x;\n layoutPoint.y = point.y;\n this._xPosInput.value = parseFloat(point.x.toFixed(3)).toString();\n this._yPosInput.value = parseFloat(point.y.toFixed(3)).toString();\n isChanged = true;\n }\n if (isChanged) {\n this._curvePanel.curve.needsUpdate = true;\n this._onChange && this._onChange(this._target);\n }\n }\n\n render() {\n this._curvePanel.render();\n }\n}","import { GUI } from \"../GUI\";\nimport { CurveEditor } from \"../curve/CurveEditor\";\nimport { Controller } from \"./Controller\";\n\nexport class CurveController extends Controller {\n private _curveEditor: CurveEditor;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"label\");\n this._curveEditor = new CurveEditor(this.getValue());\n this._curveEditor.onChange(v => this.setValue(v));\n this.$widget.appendChild(this._curveEditor.dom);\n }\n\n needsUpdateDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n this._curveEditor.render();\n return this;\n }\n}","import { Texture } from \"three\";\nimport { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class TextureController extends Controller {\n private _autoRefresh: boolean = false;\n\n $img: HTMLImageElement;\n $canvas: HTMLCanvasElement;\n $label: HTMLDivElement;\n\n getImage?: ((texture: Texture, width: number, height: number) => HTMLCanvasElement) | null;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n ) {\n super(parent, object, property, \"texture\");\n\n const group = this.$widget.appendChild(document.createElement(\"div\"));\n group.classList.add(\"group\");\n\n this.$canvas = group.appendChild(document.createElement(\"canvas\"));\n\n const label = this.$label = group.appendChild(document.createElement(\"div\"));\n label.classList.add(\"label\");\n\n let texture = this.getValue();\n if (texture && texture.image && texture.image.depth) {\n\n const block = group.appendChild(document.createElement(\"div\"));\n block.classList.add(\"block\");\n block.onclick = () => {\n this._autoRefresh = !this._autoRefresh;\n if (this._autoRefresh) block.classList.add(\"select\");\n else block.classList.remove(\"select\");\n }\n\n }\n }\n\n checkDisplay(): boolean {\n return this._autoRefresh || super.checkDisplay();\n }\n\n updateDisplay() {\n const canvas = this.$canvas;\n const context = canvas.getContext(\"2d\");\n\n let texture = this.getValue();\n if (texture) {\n let image = texture.image;\n if (image && image.width > 0) {\n\n this.$label.textContent = `${image.width}x${image.height}`;\n canvas.title = texture.sourceFile || \"\";\n canvas.height = canvas.width / image.width * image.height;\n\n if (this.getImage) {\n const w = 256, h = Math.floor(256 / image.width * image.height);\n context.drawImage(this.getImage(texture, w, h), 0, 0, w * 1.5, h * 1.5, 0, 0, canvas.width, canvas.height); //why 1.5 ?\n }\n }\n else {\n canvas.title = texture.sourceFile + ' (error)';\n }\n }\n else {\n canvas.title = 'empty';\n }\n\n return this;\n }\n}","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\nimport { Object3D, Scene } from \"three\";\nimport { GLTFExporter } from \"three/examples/jsm/Addons\";\nimport * as TextureUtils from 'three/examples/jsm/utils/WebGLTextureUtils';\n\nexport interface SceneTreeNode {\n object: Object3D;\n name: string;\n type: string;\n visible: boolean;\n children: SceneTreeNode[];\n expanded: boolean;\n}\n\nexport class SceneTreeController extends Controller {\n private $treeContainer: HTMLElement;\n private _scene: Scene;\n private _rootNode: SceneTreeNode;\n private _selectedObject: Object3D | null = null;\n private _onObjectSelect: ((object: Object3D) => void) | null = null;\n private _autoUpdate: boolean = true;\n private _cachedObjectCount: number = 0;\n private _lastUpdateTime: number = 0;\n private _updateInterval: number = 1000; // Only check for changes every 1 second\n private _visibleNodeCount: number = 0; // Counter for alternating background colors\n\n // Context menu properties\n private _contextMenu: HTMLElement | null = null;\n private _contextMenuTarget: SceneTreeNode | null = null;\n private _clipboardData: any = null;\n\n constructor(parent: GUI, scene: Scene) {\n super(parent, scene, 'sceneTree', 'scene-tree-controller', 'div');\n\n this._scene = scene;\n this._rootNode = this._buildSceneTree(scene);\n this._cachedObjectCount = this._countObjects(scene);\n\n this._setupDOM();\n this._createContextMenu();\n this._renderTree();\n this._setupGlobalEventListeners();\n }\n\n private _setupDOM() {\n // Hide the name element since we don't need it for scene tree\n this.$name.style.display = 'none';\n\n this.$treeContainer = document.createElement('div');\n this.$treeContainer.classList.add('scene-tree-container');\n\n this.$widget.appendChild(this.$treeContainer);\n }\n\n private _createContextMenu() {\n this._contextMenu = document.createElement('div');\n this._contextMenu.classList.add('scene-tree-context-menu');\n this._contextMenu.style.display = 'none';\n\n const menuItems = [\n { label: 'Export', action: 'export' },\n { label: 'Copy', action: 'copy' },\n { label: 'Paste', action: 'paste' }\n ];\n\n menuItems.forEach(item => {\n const menuItem = document.createElement('div');\n menuItem.classList.add('context-menu-item');\n menuItem.dataset.action = item.action;\n menuItem.textContent = item.label;\n menuItem.addEventListener('click', () => this._handleContextMenuAction(item.action));\n this._contextMenu.appendChild(menuItem);\n });\n\n document.body.appendChild(this._contextMenu);\n }\n\n private _setupGlobalEventListeners() {\n // Hide context menu when clicking outside\n document.addEventListener('click', (e) => {\n if (this._contextMenu && !this._contextMenu.contains(e.target as Node)) {\n this._hideContextMenu();\n }\n });\n\n // Hide context menu on escape key\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n this._hideContextMenu();\n }\n });\n }\n\n private _showContextMenu(x: number, y: number, target: SceneTreeNode) {\n if (!this._contextMenu) return;\n\n this._contextMenuTarget = target;\n this._contextMenu.style.display = 'block';\n\n // Update paste menu item state based on clipboard\n this._updateContextMenuState();\n\n // Position the menu\n const rect = this._contextMenu.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Adjust position if menu would go off-screen\n let adjustedX = x;\n let adjustedY = y;\n\n if (x + rect.width > viewportWidth) {\n adjustedX = x - rect.width;\n }\n\n if (y + rect.height > viewportHeight) {\n adjustedY = y - rect.height;\n }\n\n this._contextMenu.style.left = `${adjustedX}px`;\n this._contextMenu.style.top = `${adjustedY}px`;\n }\n\n private _updateContextMenuState() {\n if (!this._contextMenu) return;\n\n const pasteItem = this._contextMenu.querySelector('[data-action=\"paste\"]') as HTMLElement;\n if (pasteItem) {\n if (this._clipboardData) {\n pasteItem.classList.remove('disabled');\n pasteItem.style.cursor = 'pointer';\n } else {\n pasteItem.classList.add('disabled');\n pasteItem.style.cursor = 'not-allowed';\n }\n }\n }\n\n private _hideContextMenu() {\n if (this._contextMenu) {\n this._contextMenu.style.display = 'none';\n }\n this._contextMenuTarget = null;\n }\n\n private _handleContextMenuAction(action: string) {\n if (!this._contextMenuTarget) return;\n\n switch (action) {\n case 'export':\n this._exportObject(this._contextMenuTarget);\n break;\n case 'copy':\n this._copyObject(this._contextMenuTarget);\n break;\n case 'paste':\n if (this._clipboardData) {\n this._pasteObject(this._contextMenuTarget);\n }\n break;\n }\n\n this._hideContextMenu();\n }\n\n private _exportObject(node: SceneTreeNode) {\n try {\n new GLTFExporter()\n .setTextureUtils(TextureUtils)\n .parse(node.object, result => {\n if (result instanceof ArrayBuffer) {\n const blob = new Blob([result], { type: 'application/octet-stream' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `${node.name || node.type}.glb`;\n link.click();\n }\n }, err => {\n console.log('An error happened during parsing', err)\n }, {\n trs: false,\n binary: true,\n maxTextureSize: 4096\n });\n\n console.log(`Exported object: ${node.name || node.type}`);\n } catch (error) {\n console.error('Failed to export object:', error);\n }\n }\n\n private _copyObject(node: SceneTreeNode) {\n try {\n const copyData = this._serializeObject(node.object);\n this._clipboardData = copyData;\n\n // Also copy to system clipboard if possible\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(JSON.stringify(copyData, null, 2));\n }\n\n console.log(`Copied object: ${node.name || node.type}`);\n } catch (error) {\n console.error('Failed to copy object:', error);\n }\n }\n\n private _pasteObject(targetNode: SceneTreeNode) {\n if (!this._clipboardData) {\n console.warn('No object data in clipboard');\n return;\n }\n\n try {\n // Create a new object based on clipboard data\n const newObject = this._deserializeObject(this._clipboardData);\n if (newObject) {\n // Add to the target node's parent\n const parent = this._findParentNode(targetNode);\n if (parent) {\n parent.object.add(newObject);\n this.refresh();\n console.log(`Pasted object to: ${parent.name || parent.type}`);\n }\n }\n } catch (error) {\n console.error('Failed to paste object:', error);\n }\n }\n\n private _serializeObject(obj: Object3D): any {\n const serialized: any = {\n type: obj.type,\n name: obj.name,\n uuid: obj.uuid,\n visible: obj.visible,\n position: obj.position.toArray(),\n rotation: obj.rotation.toArray(),\n scale: obj.scale.toArray(),\n userData: obj.userData\n };\n\n // Add children if any\n if (obj.children.length > 0) {\n serialized.children = obj.children.map(child => this._serializeObject(child));\n }\n\n return serialized;\n }\n\n private _deserializeObject(data: any): Object3D | null {\n try {\n // This is a simplified deserialization\n // In a real implementation, you'd want to handle different object types properly\n const obj = new Object3D();\n obj.name = data.name || data.type;\n obj.visible = data.visible !== undefined ? data.visible : true;\n\n if (data.position) {\n obj.position.set(data.position[0], data.position[1], data.position[2]);\n }\n\n if (data.rotation) {\n obj.rotation.set(data.rotation[0], data.rotation[1], data.rotation[2]);\n }\n\n if (data.scale) {\n obj.scale.set(data.scale[0], data.scale[1], data.scale[2]);\n }\n\n if (data.userData) {\n obj.userData = { ...data.userData };\n }\n\n return obj;\n } catch (error) {\n console.error('Failed to deserialize object:', error);\n return null;\n }\n }\n\n private _findParentNode(node: SceneTreeNode): SceneTreeNode | null {\n const findParent = (current: SceneTreeNode, target: SceneTreeNode): SceneTreeNode | null => {\n if (current.children.includes(target)) {\n return current;\n }\n\n for (const child of current.children) {\n const result = findParent(child, target);\n if (result) return result;\n }\n\n return null;\n };\n\n return findParent(this._rootNode, node);\n }\n\n private _buildSceneTree(scene: Scene): SceneTreeNode {\n const buildNode = (obj: Object3D): SceneTreeNode => {\n const children: SceneTreeNode[] = [];\n for (let i = 0; i < obj.children.length; i++) {\n children.push(buildNode(obj.children[i]));\n }\n\n return {\n object: obj,\n name: obj.name || obj.type,\n type: obj.type,\n visible: obj.visible,\n children: children,\n expanded: false\n };\n };\n\n return buildNode(scene);\n }\n\n private _renderTree() {\n this.$treeContainer.innerHTML = '';\n this._visibleNodeCount = 0; // Reset counter for each render\n this._renderNode(this._rootNode, 0);\n }\n\n private _renderNode(node: SceneTreeNode, depth: number) {\n const nodeElement = document.createElement('div');\n nodeElement.classList.add('scene-tree-node');\n // Remove marginLeft from the node itself to keep background full width\n\n // Add alternating background colors using theme colors\n // Use a simple counter that increments for each visible node\n const isEvenRow = this._visibleNodeCount % 2 === 0;\n nodeElement.classList.add(isEvenRow ? 'even-row' : 'odd-row');\n this._visibleNodeCount++;\n\n // Create a content wrapper for indentation\n const contentWrapper = document.createElement('div');\n contentWrapper.style.marginLeft = `${depth * 7}px`;\n contentWrapper.style.display = 'flex';\n contentWrapper.style.alignItems = 'center';\n contentWrapper.style.width = '100%';\n\n // Expand/collapse button\n if (node.children.length > 0) {\n const expandBtn = document.createElement('span');\n expandBtn.classList.add('expand-btn');\n expandBtn.classList.add(node.expanded ? 'expanded' : 'collapsed');\n expandBtn.textContent = node.expanded ? '▾' : '▸';\n expandBtn.addEventListener('click', (e) => {\n e.stopPropagation();\n node.expanded = !node.expanded;\n this._renderTree();\n });\n contentWrapper.appendChild(expandBtn);\n }\n // Node name and type\n const nodeInfo = document.createElement('span');\n nodeInfo.textContent = `${node.name} (${node.type})`;\n nodeInfo.classList.add('node-info');\n contentWrapper.appendChild(nodeInfo);\n\n // Visibility toggle (moved after node name)\n const visibilityBtn = document.createElement('span');\n visibilityBtn.classList.add('visibility-btn');\n visibilityBtn.classList.add(node.visible ? 'visible' : 'hidden');\n visibilityBtn.innerHTML = node.visible ?\n '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\"><path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"/></svg>' :\n '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\"><path d=\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"/></svg>';\n visibilityBtn.addEventListener('click', (e) => {\n e.stopPropagation();\n node.object.visible = !node.object.visible;\n node.visible = node.object.visible;\n this._renderTree();\n });\n contentWrapper.appendChild(visibilityBtn);\n\n // Add content wrapper to node\n nodeElement.appendChild(contentWrapper);\n\n // Selection indicator\n if (this._selectedObject === node.object) {\n nodeElement.classList.add('selected');\n }\n\n // Click to select\n nodeElement.addEventListener('click', () => {\n this._selectObject(node.object);\n });\n\n // Right-click for context menu\n nodeElement.addEventListener('contextmenu', (e) => {\n e.preventDefault();\n e.stopPropagation();\n this._showContextMenu(e.clientX, e.clientY, node);\n });\n\n this.$treeContainer.appendChild(nodeElement);\n\n // Render children if expanded\n if (node.expanded) {\n node.children.forEach(child => {\n this._renderNode(child, depth + 1);\n });\n }\n }\n\n\n\n private _selectObject(object: Object3D) {\n this._selectedObject = object;\n this._renderTree();\n\n if (this._onObjectSelect) {\n this._onObjectSelect(object);\n }\n }\n\n onObjectSelect(callback: (object: Object3D) => void) {\n this._onObjectSelect = callback;\n return this;\n }\n\n refresh() {\n this._rootNode = this._buildSceneTree(this._scene);\n this._renderTree();\n }\n\n getSelectedObject(): Object3D | null {\n return this._selectedObject;\n }\n\n expandAll() {\n const expandNode = (node: SceneTreeNode) => {\n node.expanded = true;\n node.children.forEach(expandNode);\n };\n expandNode(this._rootNode);\n this._renderTree();\n }\n\n collapseAll() {\n const collapseNode = (node: SceneTreeNode) => {\n node.expanded = false;\n node.children.forEach(collapseNode);\n };\n collapseNode(this._rootNode);\n this._renderTree();\n }\n\n update() {\n // Always update visibility states (lightweight operation)\n this._updateVisibilityStates(this._rootNode);\n\n // Only check for structural changes periodically to avoid performance issues\n if (this._autoUpdate && this._shouldCheckForChanges()) {\n this._checkForStructuralChanges();\n }\n }\n\n private _shouldCheckForChanges(): boolean {\n const now = performance.now();\n if (now - this._lastUpdateTime > this._updateInterval) {\n this._lastUpdateTime = now;\n return true;\n }\n return false;\n }\n\n setAutoUpdate(enabled: boolean) {\n this._autoUpdate = enabled;\n }\n\n setUpdateInterval(intervalMs: number) {\n this._updateInterval = intervalMs;\n }\n\n getUpdateInterval(): number {\n return this._updateInterval;\n }\n\n getAutoUpdate(): boolean {\n return this._autoUpdate;\n }\n\n forceUpdate() {\n this._rootNode = this._buildSceneTree(this._scene);\n this._renderTree();\n }\n\n private _checkForStructuralChanges() {\n // Use lightweight change detection instead of rebuilding the entire tree\n if (this._hasSceneStructureChanged()) {\n this._rebuildSceneTree();\n }\n }\n\n private _hasSceneStructureChanged(): boolean {\n // Quick check for common changes without rebuilding the tree\n return this._checkObjectCount() || this._checkObjectReferences();\n }\n\n private _checkObjectCount(): boolean {\n // Check if the total number of objects has changed\n const currentCount = this._countObjects(this._scene);\n if (currentCount !== this._cachedObjectCount) {\n this._cachedObjectCount = currentCount;\n return true;\n }\n return false;\n }\n\n private _checkObjectReferences(): boolean {\n // Check if any object references have changed (objects added/removed)\n return this._scene.children.length !== this._rootNode.children.length ||\n this._hasChildrenChanged(this._scene, this._rootNode);\n }\n\n private _hasChildrenChanged(sceneObj: Object3D, treeNode: SceneTreeNode): boolean {\n if (sceneObj.children.length !== treeNode.children.length) return true;\n\n for (let i = 0; i < sceneObj.children.length; i++) {\n const sceneChild = sceneObj.children[i];\n const treeChild = treeNode.children[i];\n\n if (sceneChild !== treeChild.object) return true;\n if (this._hasChildrenChanged(sceneChild, treeChild)) return true;\n }\n return false;\n }\n\n private _countObjects(obj: Object3D): number {\n let count = 1;\n for (let i = 0; i < obj.children.length; i++) {\n count += this._countObjects(obj.children[i]);\n }\n return count;\n }\n\n private _rebuildSceneTree() {\n // Only rebuild when necessary\n const currentStructure = this._buildSceneTree(this._scene);\n this._preserveExpandedStates(this._rootNode, currentStructure);\n this._rootNode = currentStructure;\n this._cachedObjectCount = this._countObjects(this._scene);\n this._renderTree();\n }\n\n private _hasStructureChanged(oldNode: SceneTreeNode, newNode: SceneTreeNode): boolean {\n if (oldNode.children.length !== newNode.children.length) return true;\n if (oldNode.object !== newNode.object) return true;\n\n for (let i = 0; i < oldNode.children.length; i++) {\n if (this._hasStructureChanged(oldNode.children[i], newNode.children[i])) {\n return true;\n }\n }\n return false;\n }\n\n private _preserveExpandedStates(oldNode: SceneTreeNode, newNode: SceneTreeNode) {\n // Try to preserve expanded states by matching object references\n if (oldNode.object === newNode.object) {\n newNode.expanded = oldNode.expanded;\n }\n\n for (let i = 0; i < Math.min(oldNode.children.length, newNode.children.length); i++) {\n this._preserveExpandedStates(oldNode.children[i], newNode.children[i]);\n }\n }\n\n private _updateVisibilityStates(node: SceneTreeNode) {\n node.visible = node.object.visible;\n node.children.forEach(child => this._updateVisibilityStates(child));\n }\n\n destroy() {\n super.destroy();\n this._onObjectSelect = null;\n\n // Clean up context menu\n if (this._contextMenu && this._contextMenu.parentNode) {\n this._contextMenu.parentNode.removeChild(this._contextMenu);\n }\n this._contextMenu = null;\n this._contextMenuTarget = null;\n this._clipboardData = null;\n }\n}\n","import \"./css/index.css\";\nimport { Controller } from \"./controllers/Controller\";\nimport { OptionController } from \"./controllers/OptionController\";\nimport { NumberController } from \"./controllers/NumberController\";\nimport { BooleanController } from \"./controllers/BooleanController\";\nimport { StringController } from \"./controllers/StringController\";\nimport { FunctionController } from \"./controllers/FunctionController\";\nimport { ColorController } from \"./controllers/ColorController\";\nimport { VectorController } from \"./controllers/VectorController\";\nimport { CurveController } from \"./controllers/CurveController\";\nimport { TextureController } from \"./controllers/TextureController\";\nimport { SceneTreeController } from \"./controllers/SceneTreeController\";\n\nexport class GUI {\n id: string;\n\n parent: GUI;\n root: GUI;\n children: Array<GUI | Controller> = [];\n controllers: Array<Controller> = [];\n folders: Array<GUI> = [];\n\n domElement: HTMLElement;\n $title: HTMLElement;\n $children: HTMLElement;\n /**\n * Current title of the GUI. Use `gui.title( 'Title' )` to modify this value.\n */\n _title: string = \"\";\n _closed: boolean = false;\n _hidden: boolean = false;\n _closeFolders: boolean = false;\n\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `gui.onFinishChange( callback )` method instead.\n */\n private _onFinishChange: Function;\n private _onOpenClose: Function;\n private _onChange: Function;\n\n constructor({\n parent,\n container,\n width,\n autoPlace = parent === undefined,\n title = 'Controls',\n id = title,\n closeFolders = false,\n touchStyles = true,\n }: {\n parent?: GUI;\n container?: HTMLElement;\n autoPlace?: boolean;\n width?: number;\n title?: string;\n id?: string;\n closeFolders?: boolean;\n touchStyles?: boolean;\n } = {}) {\n this.id = id;\n this.parent = parent;\n this.root = parent ? parent.root : this;\n this.domElement = document.createElement(\"div\");\n this.domElement.classList.add(\"lil-gui\");\n\n this.$title = document.createElement('div');\n this.$title.classList.add('title');\n this.$title.setAttribute('role', 'button');\n this.$title.setAttribute('aria-expanded', \"true\");\n this.$title.setAttribute('tabindex', \"0\");\n this.$title.addEventListener('click', () => {\n // Set this folder as active and deactivate others\n this.setActive();\n this.openAnimated(this._closed);\n });\n this.$title.addEventListener('keydown', e => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n this.$title.click();\n }\n });\n\n // enables :active pseudo class on mobile\n this.$title.addEventListener('touchstart', () => { }, { passive: true });\n\n /**\n * The DOM element that contains children.\n * @type {HTMLElement}\n */\n this.$children = document.createElement('div');\n this.$children.classList.add('children');\n\n this.domElement.appendChild(this.$title);\n this.domElement.appendChild(this.$children);\n\n this.title(title);\n\n if (this.parent) {\n this.parent.children.push(this);\n this.parent.folders.push(this);\n this.parent.$children.appendChild(this.domElement);\n\n // Stop the constructor early, everything onward only applies to root GUI's\n return;\n\n }\n\n this.domElement.classList.add('root');\n\n if (touchStyles) {\n this.domElement.classList.add('allow-touch-styles');\n }\n if (container) {\n container.appendChild(this.domElement);\n } else if (autoPlace) {\n this.domElement.classList.add('autoPlace');\n document.body.appendChild(this.domElement);\n }\n if (width) {\n this.domElement.style.setProperty('--width', width + 'px');\n }\n\n this._closeFolders = closeFolders;\n }\n\n\n /**\n * Adds a controller to the GUI, inferring controller type using the `typeof` operator.\n * @example\n * gui.add( object, 'property' );\n * gui.add( object, 'number', 0, 100, 1 );\n * gui.add( object, 'options', [ 1, 2, 3 ] );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number|object|Array} [$1] Minimum value for number controllers, or the set of\n * selectable values for a dropdown.\n * @param {number} [max] Maximum value for number controllers.\n * @param {number} [step] Step value for number controllers.\n * @returns {Controller}\n */\n add(\n object: Object,\n property: string,\n $1?: number | object | Array<any>,\n max?: number,\n step?: number\n ) {\n if (Object($1) === $1) {\n return new OptionController(this, object, property, $1);\n }\n\n const initialValue = object[property];\n switch (typeof initialValue) {\n case 'number':\n return new NumberController(this, object, property, $1 as number, max, step);\n case 'boolean':\n return new BooleanController(this, object, property);\n case 'string':\n return new StringController(this, object, property);\n case 'function':\n return new FunctionController(this, object, property);\n\n }\n\n // eslint-disable-next-line no-console\n console.error(`gui.add failed\n property:`, property, `\n object:`, object, `\n value:`, initialValue\n );\n\n }\n\n /**\n * Adds a color controller to the GUI.\n * @example\n * params = {\n * \tcssColor: '#ff00ff',\n * \trgbColor: { r: 0, g: 0.2, b: 0.4 },\n * \tcustomRange: [ 0, 127, 255 ],\n * };\n *\n * gui.addColor( params, 'cssColor' );\n * gui.addColor( params, 'rgbColor' );\n * gui.addColor( params, 'customRange', 255 );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number} rgbScale Maximum value for a color channel when using an RGB color. You may\n * need to set this to 255 if your colors are too bright.\n * @returns {Controller}\n */\n addColor(\n object: Object,\n property: string,\n rgbScale: number = 1,\n ) {\n return new ColorController(this, object, property, rgbScale);\n }\n\n addTexture(\n object: Object,\n property: string,\n ) {\n return new TextureController(this, object, property);\n }\n /**\n *\n * @param {object} object\n * @param {string} property\n * @param min\n * @param max\n * @param step\n * @returns {Controller}\n */\n addVector(\n object: Object,\n property: string,\n min?: number,\n max?: number,\n step?: number\n ) {\n return new VectorController(this, object, property, min, max, step);\n }\n\n addCurve(\n object: Object,\n property: string,\n ) {\n return new CurveController(this, object, property);\n }\n\n /**\n * Adds a scene tree controller to display Three.js scene hierarchy.\n * @param {Scene} scene The Three.js scene to display\n * @returns {SceneTreeController}\n */\n addSceneTree(scene: any) {\n return new SceneTreeController(this, scene);\n }\n\n /**\n * Adds a folder to the GUI, which is just another GUI. This method returns\n * the nested GUI so you can add controllers to it.\n * @example\n * const folder = gui.addFolder( 'Position' );\n * folder.add( position, 'x' );\n * folder.add( position, 'y' );\n * folder.add( position, 'z' );\n *\n * @returns {GUI}\n */\n addFolder(title: string, id: string = title) {\n const folder = new GUI({ parent: this, title, id });\n if (this.root._closeFolders) folder.close();\n return folder;\n }\n\n /**\n *\n * @param {string} id\n * @returns {this}\n */\n removeFolder(id: string) {\n let folder = this.getFolder(id);\n if (folder) folder.destroy();\n return this;\n }\n /**\n *\n * @param {string} id\n * @returns {GUI}\n */\n getFolder(id: string) {\n return this.folders.find(v => v.id === id);\n }\n\n /**\n * Recalls values that were saved with `gui.save()`.\n * @param {object} obj\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n load(obj: GUI, recursive: boolean = true) {\n if (obj.controllers) {\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n c.load(obj.controllers[c._name]);\n }\n });\n }\n\n if (recursive && obj.folders) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n f.load(obj.folders[f._title]);\n }\n });\n\n }\n\n return this;\n\n }\n\n /**\n * Returns an object mapping controller names to values. The object can be passed to `gui.load()` to\n * recall these values.\n * @example\n * {\n * \tcontrollers: {\n * \t\tprop1: 1,\n * \t\tprop2: 'value',\n * \t\t...\n * \t},\n * \tfolders: {\n * \t\tfolderName1: { controllers, folders },\n * \t\tfolderName2: { controllers, folders }\n * \t\t...\n * \t}\n * }\n *\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {object}\n */\n save(recursive: boolean = true) {\n const obj = {\n controllers: {},\n folders: {}\n };\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n throw new Error(`Cannot save GUI with duplicate property \"${c._name}\"`);\n }\n obj.controllers[c._name] = c.save();\n });\n\n if (recursive) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n throw new Error(`Cannot save GUI with duplicate folder \"${f._title}\"`);\n }\n obj.folders[f._title] = f.save();\n });\n }\n return obj;\n }\n\n /**\n * Opens a GUI or folder. GUI and folders are open by default.\n * @param {boolean} open Pass false to close\n * @returns {this}\n * @example\n * gui.open(); // open\n * gui.open( false ); // close\n * gui.open( gui._closed ); // toggle\n */\n open(open: boolean = true) {\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n this.domElement.classList.toggle('closed', this._closed);\n return this;\n }\n\n /**\n * Closes the GUI.\n * @returns {this}\n */\n close() {\n return this.open(false);\n }\n\n private _setClosed(closed: boolean) {\n if (this._closed === closed) return;\n this._closed = closed;\n this._callOnOpenClose(this);\n }\n\n /**\n * Shows the GUI after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * gui.show();\n * gui.show( false ); // hide\n * gui.show( gui._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n }\n\n /**\n * Hides the GUI.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n openAnimated(open: boolean = true) {\n // set state immediately\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n\n // wait for next frame to measure $children\n requestAnimationFrame(() => {\n // explicitly set initial height for transition\n const initialHeight = this.$children.clientHeight;\n this.$children.style.height = initialHeight + 'px';\n\n this.domElement.classList.add('transition');\n\n const onTransitionEnd = e => {\n if (e.target !== this.$children) return;\n this.$children.style.height = '';\n this.domElement.classList.remove('transition');\n this.$children.removeEventListener('transitionend', onTransitionEnd);\n };\n\n this.$children.addEventListener('transitionend', onTransitionEnd);\n\n // todo: this is wrong if children's scrollHeight makes for a gui taller than maxHeight\n const targetHeight = !open ? 0 : this.$children.scrollHeight;\n this.domElement.classList.toggle('closed', !open);\n\n requestAnimationFrame(() => {\n this.$children.style.height = targetHeight + 'px';\n });\n });\n\n return this;\n }\n\n /**\n * Change the title of this GUI.\n * @param {string} title\n * @returns {this}\n */\n title(title: string) {\n this._title = title;\n this.$title.innerHTML = title;\n return this;\n }\n\n /**\n * Resets all controllers to their initial values.\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n reset(recursive = true) {\n const controllers = recursive ? this.controllersRecursive() : this.controllers;\n controllers.forEach(c => c.reset());\n return this;\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI changes.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onChange(callback) {\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value\n * directly. Use the `gui.onChange( callback )` method instead.\n * @type {Function}\n */\n this._onChange = callback;\n return this;\n }\n\n _callOnChange(controller) {\n\n if (this.parent) {\n this.parent._callOnChange(controller);\n }\n\n if (this._onChange !== undefined) {\n this._onChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI has finished changing.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onFinishChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n _callOnFinishChange(controller: Controller) {\n if (this.parent) {\n this.parent._callOnFinishChange(controller);\n }\n\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called when this GUI or its descendants are opened or closed.\n * @param {function(GUI)} callback\n * @returns {this}\n * @example\n * gui.onOpenClose( changedGUI => {\n * \tconsole.log( changedGUI._closed );\n * } );\n */\n onOpenClose(callback: Function) {\n this._onOpenClose = callback;\n return this;\n }\n\n private _callOnOpenClose(changedGUI: GUI) {\n if (this.parent) {\n this.parent._callOnOpenClose(changedGUI);\n }\n\n if (this._onOpenClose !== undefined) {\n this._onOpenClose.call(this, changedGUI);\n }\n }\n\n /**\n * Destroys all DOM elements and event listeners associated with this GUI\n */\n destroy() {\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.folders.splice(this.parent.folders.indexOf(this), 1);\n }\n\n if (this.domElement.parentElement) {\n this.domElement.parentElement.removeChild(this.domElement);\n }\n\n Array.from(this.children).forEach(c => c.destroy());\n }\n\n /**\n * Returns an array of controllers contained by this GUI and its descendents.\n * @returns {Controller[]}\n */\n controllersRecursive() {\n let controllers = Array.from(this.controllers);\n this.folders.forEach(f => {\n controllers = controllers.concat(f.controllersRecursive());\n });\n return controllers;\n }\n\n /**\n * Returns an array of folders contained by this GUI and its descendents.\n * @returns {GUI[]}\n */\n foldersRecursive() {\n let folders = Array.from(this.folders);\n this.folders.forEach(f => {\n folders = folders.concat(f.foldersRecursive());\n });\n return folders;\n }\n\n update() {\n for (let child of this.children) {\n child.update();\n }\n }\n\n /**\n * Sets this folder as active and deactivates all other folders\n */\n setActive() {\n // Only root GUI can manage active states\n if (!this.parent) return;\n\n // Remove active class from ALL folders in the entire GUI tree using DOM query\n const allActiveFolders = document.querySelectorAll('.lil-gui.active');\n allActiveFolders.forEach(folder => {\n folder.classList.remove('active');\n });\n\n // Add active class to this folder\n this.domElement.classList.add('active');\n }\n\n\n\n /**\n * Gets the currently active folder\n */\n getActiveFolder(): GUI | null {\n if (!this.parent) return null;\n return this.parent.folders.find(folder => folder.domElement.classList.contains('active')) || null;\n }\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { ObjectInstance, property, Viewer } from \"@xviewer.js/core\";\nimport { Color, ColorSpace, CubeTexture, Euler, Scene, Texture, ToneMapping, WebGLRenderer } from \"three\";\n\nexport class ViewerHelper extends ObjectInstance {\n\n @property({\n value: {\n SRGBColorSpace: \"srgb\",\n LinearSRGBColorSpace: \"srgb-linear\",\n DisplayP3ColorSpace: \"display-p3\",\n LinearDisplayP3ColorSpace: \"display-p3-linear\",\n }\n })\n get outputColorSpace() {\n return this._renderer.outputColorSpace as ColorSpace;\n }\n set outputColorSpace(v: ColorSpace) {\n this._renderer.outputColorSpace = v;\n }\n\n @property({\n value: {\n NoToneMapping: 0,\n LinearToneMapping: 1,\n ReinhardToneMapping: 2,\n CineonToneMapping: 3,\n ACESFilmicToneMapping: 4\n }\n })\n get toneMapping() {\n return this._renderer.toneMapping;\n }\n set toneMapping(v: ToneMapping) {\n this._renderer.toneMapping = v;\n }\n\n @property({ min: 0, max: 10, step: 0.01 })\n get toneMappingExposure() {\n return this._renderer.toneMappingExposure;\n }\n set toneMappingExposure(v: number) {\n this._renderer.toneMappingExposure = v;\n }\n\n @property\n get shadows() {\n return this._renderer.shadowMap.enabled;\n }\n set shadows(v: boolean) {\n this._renderer.shadowMap.enabled = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get backgroundBlurriness() {\n return this._scene.backgroundBlurriness;\n }\n set backgroundBlurriness(v: number) {\n this._scene.backgroundBlurriness = v;\n }\n\n @property({ value: new Texture() })\n get environment() {\n return this._scene.environment;\n }\n set environment(v: Texture) {\n this._scene.environment = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get environmentIntensity() {\n return this._scene.environmentIntensity;\n }\n set environmentIntensity(v: number) {\n this._scene.environmentIntensity = v;\n }\n\n @property({ step: 0.01 })\n get environmentRotation() {\n return this._scene.environmentRotation;\n }\n set environmentRotation(v: Euler) {\n this._scene.environmentRotation.copy(v);\n }\n\n @property\n get background() {\n return this._scene.background;\n }\n set background(v: Texture | Color | CubeTexture) {\n this._scene.background = v;\n }\n\n @property({ step: 0.01 })\n get backgroundRotation() {\n return this._scene.backgroundRotation;\n }\n set backgroundRotation(v: Euler) {\n this._scene.backgroundRotation.copy(v);\n }\n\n @property\n get targetFrameRate() {\n return this._viewer.targetFrameRate;\n }\n set targetFrameRate(v) {\n this._viewer.targetFrameRate = v;\n }\n\n\n private _scene: Scene;\n private _renderer: WebGLRenderer;\n private _viewer: Viewer;\n\n constructor(viewer: Viewer) {\n super();\n this._viewer = viewer;\n this._scene = viewer.scene;\n this._renderer = viewer.renderer;\n }\n}","import {\n BufferGeometry,\n Camera,\n DoubleSide,\n Material,\n Mesh,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n PlaneGeometry,\n Scene,\n ShaderMaterial,\n Sprite,\n Texture,\n Vector3,\n Vector4,\n} from \"three\";\n\nimport { Component, PropertyManager, property } from \"@xviewer.js/core\";\nimport { GUI } from \"./gui/GUI\";\nimport { ViewerHelper } from \"./helpers/ViewerHelper\";\nimport { SceneTreeController } from \"./gui/controllers/SceneTreeController\";\n\nconst vert_Sprite = `\nuniform vec4 u_transform;\nuniform vec4 u_resolution;\nvarying vec2 v_uv;\n\nvoid main() {\n vec2 pos = u_transform.xy + u_transform.zw * 0.5 + position.xy * u_transform.zw;\n vec2 ndc = pos * u_resolution.zw * 2. - 1.;\n gl_Position = vec4(ndc, 0., 1.);\n v_uv = uv;\n}\n`\n\nconst frag_Sprite = `\nuniform sampler2D u_texture;\nvarying vec2 v_uv;\n\nvoid main() {\n gl_FragColor = texture2D(u_texture, v_uv);\n}\n`\n\ntype uuidObject = { uuid: string, name: string, type: string }\n\nexport class Inspector extends Component {\n static viewport = new Vector4();\n\n private _camera: Camera = new Camera();\n private _sprite: Mesh<BufferGeometry, ShaderMaterial> = null;\n private _spriteUniforms = {\n u_texture: { value: null },\n u_transform: { value: new Vector4() },\n u_resolution: { value: new Vector4() }\n }\n\n private _gui: GUI;\n private _tree: SceneTreeController;\n\n private _refCntMap: Map<uuidObject, number> = new Map();\n private _targetMap: Map<Object, Object> = new Map();\n\n onLoad() {\n const { width, height } = this.viewer;\n this._spriteUniforms.u_resolution.value.set(width, height, 1 / width, 1 / height);\n this._sprite = new Mesh(new PlaneGeometry(1, 1, 1, 1), new ShaderMaterial({\n side: DoubleSide,\n vertexShader: vert_Sprite,\n fragmentShader: frag_Sprite,\n uniforms: this._spriteUniforms\n }))\n this._sprite.frustumCulled = false;\n this._camera.viewport = new Vector4(0, 0, 256, 256);\n\n this._gui = new GUI({ width: 310, title: \"Inspector\" }).close();\n this._tree = this._gui.addSceneTree(this.viewer.scene);\n\n this._gui.addFolder(\"Viewer\").close().hide();\n this._gui.addFolder(\"Component\").close().hide();\n this._gui.addFolder(\"Material\").close().hide();\n this._gui.addFolder(\"Other\").close().hide();\n\n this._inspect(new ViewerHelper(this.viewer));\n }\n\n onDestroy() {\n if (this._tree) {\n this._tree.destroy();\n }\n this._gui.destroy();\n this._refCntMap.clear();\n this._targetMap.clear();\n }\n\n update(dt: number): void {\n this._gui.update();\n if (this._tree) {\n this._tree.update();\n }\n this._updateFolders();\n }\n\n resize(width: number, height: number): void {\n this._spriteUniforms.u_resolution.value.set(width, height, 1 / width, 1 / height);\n }\n\n private _renderSprite(texture: Texture, w: number, h: number) {\n const resolution = this._spriteUniforms.u_resolution.value;\n this._camera.viewport.set(0, resolution.y - h, w, h);\n this._spriteUniforms.u_transform.value.set(0, resolution.y - h, w, h);\n this._spriteUniforms.u_texture.value = texture;\n this.viewer.render(null, this._sprite, this._camera, 0, 0);\n return this.viewer.canvas;\n }\n\n private _updateFolders() {\n const refCntMap = this._refCntMap;\n const setState = (v: uuidObject) => {\n if (refCntMap.get(v) === -1) refCntMap.set(v, 0);\n if (refCntMap.get(v) === undefined) refCntMap.set(v, 1);\n }\n refCntMap.forEach((_, k, map) => map.set(k, -1));\n\n const { scene, componentManager } = this.viewer;\n scene.traverse((item: any) => {\n if (item.material) {\n if (Array.isArray(item.material)) item.material.forEach(setState);\n else setState(item.material);\n }\n })\n componentManager.traverseComponents(setState);\n\n refCntMap.forEach((v, k, map) => {\n if (v === 1) {\n this._inspect(k);\n }\n if (v === -1) {\n this._uninspect(k);\n map.delete(k);\n }\n })\n }\n\n private _getPropertiesList<T extends uuidObject>(target: T) {\n const list = [];\n\n let props = PropertyManager._getMergedProperties(target.constructor);\n if (props) {\n const values = propsSort(props);\n this._targetMap.set(values, target);\n list.push(values);\n }\n if (target instanceof ShaderMaterial) {\n props = Object.create(null);\n const uniforms = Object.create(null);\n\n Object.keys(target.uniforms).forEach((name) => {\n Object.defineProperty(uniforms, name, {\n get: () => target.uniforms[name].value,\n set: (v) => (target.uniforms[name].value = v),\n });\n props[name] = { dir: \"uniforms\" };\n });\n\n const values = propsSort(props);\n this._targetMap.set(values, uniforms);\n list.push(values);\n }\n\n return list;\n }\n\n private _inspect<T extends uuidObject>(target: T) {\n let propsList = this._getPropertiesList(target);\n if (propsList.length === 0) return;\n\n let gui = this._gui;\n if (target instanceof ViewerHelper) {\n gui = gui.getFolder(\"Viewer\").show();\n }\n else if (target instanceof Component) {\n gui = gui.getFolder(\"Component\").show();\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\").show();\n }\n else {\n gui = gui.getFolder(\"Other\").show();\n }\n\n if (gui._title !== \"Viewer\") {\n gui = gui.getFolder(target.uuid) || gui.addFolder(targetName(target), target.uuid).close();\n }\n\n this._addGUI(gui, propsList, target);\n return target;\n }\n\n private _addGUI(gui: GUI, list: [string, any][][], target: Object, dir: string = \"\") {\n if (dir) {\n gui = gui.getFolder(dir) || gui.addFolder(dir).close();\n }\n\n const source = target;\n for (const props of list) {\n target = this._targetMap.get(props) || source;\n\n for (const [k, prop] of props) {\n let value = target[k] == null ? prop.value : target[k];\n if (value == null || (prop.parent && target[prop.parent] == null)) {\n continue;\n }\n\n let folder = gui;\n if (prop.dir) {\n folder = folder.getFolder(prop.dir) || folder.addFolder(prop.dir).close();\n }\n\n if (PropertyManager._hasProperties(value.constructor)) {\n this._addGUI(folder, this._getPropertiesList(value), target, k);\n }\n\n if (Array.isArray(value)) {\n if (prop.flat) {\n value.forEach(v => this._addGUI(folder, this._getPropertiesList(v), v, v.constructor.name))\n }\n else {\n this._addGUI(folder, [value.map((_, i) => [i.toString(), {}])], value, k);\n }\n }\n else {\n const type = typeof value;\n\n let ins = null;\n if (value.isColor) {\n ins = folder.addColor(target, k);\n }\n else if (value.isAnimationCurve) {\n ins = folder.addCurve(target, k);\n }\n else if (value.isVector2 || value.isVector3 || value.isVector4 || value.isEuler) {\n ins = folder.addVector(target, k, prop.min, prop.max, prop.step);\n }\n else if (value.isTexture) {\n ins = folder.addTexture(target, k);\n ins.getImage = (texture, w, h) => this._renderSprite(texture, w, h);\n }\n else if (type === \"number\" || type === \"boolean\" || type === \"string\" || type === \"function\") {\n ins = folder.add(target, k, prop.value || prop.min, prop.max, prop.step);\n }\n else {\n //do nothing\n }\n if (ins && prop.name) {\n ins.name(prop.name);\n }\n }\n }\n }\n }\n\n private _uninspect(target: uuidObject) {\n let gui = this._gui;\n if (target instanceof Component) {\n gui = gui.getFolder(\"Component\");\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\");\n }\n else {\n gui = gui.getFolder(\"Other\");\n }\n\n gui.removeFolder(target.uuid);\n\n if (gui.children.length === 0) {\n gui.hide();\n }\n }\n}\n\nfunction targetName(target: uuidObject) {\n return target.name || target.constructor.name || target.type;\n}\n\nfunction propsSort(props: Object) {\n const order = v => v.order || 10000;\n const values = Object.entries<any>(props);\n const array0 = values.filter(v => !v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n const array1 = values.filter(v => v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n return array0.concat(array1);\n}\n\nconst materialProperties = {\n visible: { order: 1 },\n transparent: { order: 2 },\n depthWrite: { order: 3 },\n depthTest: { order: 4 },\n side: { order: 5, value: { FrontSide: 0, BackSide: 1, DoubleSide: 2 } },\n color: { order: 6, },\n opacity: { order: 7, min: 0, max: 1, step: 0.01 }\n}\nfor (let k in materialProperties) {\n property(materialProperties[k])(Material.prototype, k);\n}\n\nconst meshBasicMaterislProperties = {\n map: { dir: \"diffuse\" },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n specularMap: {},\n alphaMap: {},\n envMap: {},\n}\nfor (let k in meshBasicMaterislProperties) {\n property(meshBasicMaterislProperties[k])(MeshBasicMaterial.prototype, k);\n}\n\nconst meshStandardMaterialProperties = {\n map: { dir: \"diffuse\" },\n roughnessMap: { dir: \"roughness\" },\n roughness: { dir: \"roughness\", min: 0, max: 1, step: 0.01 },\n metalnessMap: { dir: \"metalness\" },\n metalness: { dir: \"metalness\", min: 0, max: 1, step: 0.01 },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n emissive: { dir: \"emissive\" },\n emissiveMap: { dir: \"emissive\" },\n emissiveIntensity: { dir: \"emissive\", min: 0, max: 1, step: 0.01, parent: \"emissiveMap\" },\n normalMap: { dir: \"normal\" },\n normalScale: { dir: \"normal\", step: 0.01, parent: \"normalMap \" },\n displacementScale: { dir: \"displacement\", min: 0, max: 1, step: 0.01, parent: \"displacementMap\" },\n displacementBias: { dir: \"displacement\", parent: \"displacementMap\" },\n envMap: { dir: \"envMap\" },\n envMapIntensity: { dir: \"envMap\", min: 0, max: 1, step: 0.01, parent: \"envMap\" },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n}\nfor (let k in meshStandardMaterialProperties) {\n property(meshStandardMaterialProperties[k])(MeshStandardMaterial.prototype, k);\n}\n\nconst meshPhysicalMaterialProperties = {\n ior: { min: 0, max: 10, step: 0.01 },\n anisotropy: { min: 0, max: 10, step: 0.01 },\n clearcoat: { dir: \"clearcoat\" },\n clearcoatMap: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatRoughness: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatNormalScale: { dir: \"clearcoat\", step: 0.01 },\n clearcoatNormalMap: { dir: \"clearcoat\" },\n iridescence: { dir: \"iridescence\", min: 0, max: 1, step: 0.01 },\n iridescenceMap: { dir: \"iridescence\" },\n iridescenceIOR: { dir: \"iridescence\", step: 0.01 },\n iridescenceThicknessRange: { dir: \"iridescence\" },\n iridescenceThicknessMap: { dir: \"iridescence\" },\n sheen: { dir: \"sheen\" },\n sheenColor: { dir: \"sheen\" },\n sheenColorMap: { dir: \"sheen\" },\n sheenRoughness: { dir: \"sheen\", min: 0, max: 1, step: 0.01 },\n sheenRoughnessMap: { dir: \"sheen\" },\n transmission: { dir: \"transmission\" },\n transmissionMap: { dir: \"transmission\" },\n thickness: { dir: \"thickness\", min: 0, max: 1, step: 0.01 },\n thicknessMap: { dir: \"thickness\" },\n attenuationDistance: { dir: \"attenuation\" },\n attenuationColor: { dir: \"attenuation\" },\n specularIntensity: { dir: \"specular\", min: 0, max: 1, step: 0.01 },\n specularIntensityMap: { dir: \"specular\" },\n specularColor: { dir: \"specular\" },\n specularColorMap: { dir: \"specular\" },\n}\nfor (let k in meshPhysicalMaterialProperties) {\n property(meshPhysicalMaterialProperties[k])(MeshPhysicalMaterial.prototype, k);\n}\n\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction format(v) {\n\tif (v > 1000) {\n\t\treturn Math.floor(v * 0.001) + \"k\";\n\t}\n\telse if (v > 1000000) {\n\t\treturn Math.floor(v * 0.000001) + \"m\"\n\t}\n\telse {\n\t\treturn v;\n\t}\n}\n\nvar Panel = function (name, fg, bg) {\n\n\tvar min = Infinity, max = 0, round = Math.round;\n\tvar PR = round(window.devicePixelRatio || 1);\n\n\tvar WIDTH = 80 * PR, HEIGHT = 48 * PR,\n\t\tTEXT_X = 3 * PR, TEXT_Y = 2 * PR,\n\t\tGRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,\n\t\tGRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;\n\n\tvar canvas = document.createElement('canvas');\n\tcanvas.width = WIDTH;\n\tcanvas.height = HEIGHT;\n\tcanvas.style.cssText = 'width:80px;height:48px';\n\n\tvar context = canvas.getContext('2d');\n\tcontext.font = 'bold ' + (9 * PR) + 'px Helvetica,Arial,sans-serif';\n\tcontext.textBaseline = 'top';\n\n\tcontext.fillStyle = bg;\n\tcontext.fillRect(0, 0, WIDTH, HEIGHT);\n\n\tcontext.fillStyle = fg;\n\tcontext.fillText(name, TEXT_X, TEXT_Y);\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\tcontext.fillStyle = bg;\n\tcontext.globalAlpha = 0.9;\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\treturn {\n\n\t\tdom: canvas,\n\n\t\tupdate: function (value, maxValue) {\n\n\t\t\tmin = Math.min(min, value);\n\t\t\tmax = Math.max(max, value);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 1;\n\t\t\tcontext.fillRect(0, 0, WIDTH, GRAPH_Y);\n\t\t\tcontext.fillStyle = fg;\n\t\t\tcontext.fillText(format(round(value)) + ' ' + name + ' (' + format(round(min)) + '-' + format(round(max)) + ')', TEXT_X, TEXT_Y);\n\n\t\t\tcontext.drawImage(canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 0.9;\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round((1 - (value / maxValue)) * GRAPH_HEIGHT));\n\n\t\t}\n\n\t};\n\n};\n\nvar Stats = function () {\n\n\tvar mode = 0;\n\n\tvar container = document.createElement('div');\n\tcontainer.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';\n\tcontainer.addEventListener('click', function (event) {\n\n\t\tevent.preventDefault();\n\t\tshowPanel(++mode % container.children.length);\n\n\t}, false);\n\n\t//\n\n\tfunction addPanel(panel) {\n\n\t\tcontainer.appendChild(panel.dom);\n\t\treturn panel;\n\n\t}\n\n\tfunction showPanel(id) {\n\n\t\tfor (var i = 0; i < container.children.length; i++) {\n\n\t\t\tcontainer.children[i].style.display = i === id ? 'block' : 'none';\n\n\t\t}\n\n\t\tmode = id;\n\n\t}\n\n\t//\n\n\tvar beginTime = (performance || Date).now(), prevTime = beginTime, frames = 0;\n\n\tvar fpsPanel = addPanel(new Panel('FPS', '#0ff', '#002'));\n\tvar msPanel = addPanel(new Panel('MS', '#0f0', '#020'));\n\n\tif (self.performance && self.performance.memory) {\n\n\t\tvar memPanel = addPanel(new Panel('MB', '#f08', '#201'));\n\n\t}\n\n\tshowPanel(0);\n\n\treturn {\n\n\t\tREVISION: 16,\n\n\t\tdom: container,\n\n\t\taddPanel: addPanel,\n\t\tshowPanel: showPanel,\n\n\t\tbegin: function () {\n\n\t\t\tbeginTime = (performance || Date).now();\n\n\t\t},\n\n\t\tend: function () {\n\n\t\t\tframes++;\n\n\t\t\tvar time = (performance || Date).now();\n\n\t\t\tmsPanel.update(time - beginTime, 200);\n\n\t\t\tif (time >= prevTime + 1000) {\n\n\t\t\t\tfpsPanel.update((frames * 1000) / (time - prevTime), 100);\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t\tif (memPanel) {\n\n\t\t\t\t\tvar memory = performance.memory;\n\t\t\t\t\tmemPanel.update(memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tbeginTime = this.end();\n\n\t\t},\n\n\t\t// Backwards Compatibility\n\n\t\tdomElement: container,\n\t\tsetMode: showPanel\n\n\t};\n\n};\nexport { Stats, Panel };\n","import { Component } from \"@xviewer.js/core\";\nimport { Panel, Stats as StatsPrimitive } from \"./stats/Stats\";\n\nexport class Stats extends Component {\n private _stats: StatsPrimitive = new StatsPrimitive();\n private _dcPanel: Panel = new Panel('DC', '#ff8', '#221');\n private _triPanel: Panel = new Panel(\"TRI\", '#ff8', '#221')\n private _texPanel: Panel = new Panel('TEX', '#ff8', '#221')\n private _prgPanel: Panel = new Panel('PRG', '#ff8', '#221')\n\n onLoad() {\n this._stats.addPanel(this._dcPanel);\n this._stats.addPanel(this._texPanel);\n this._stats.addPanel(this._triPanel);\n this._stats.addPanel(this._prgPanel);\n this._stats.showPanel(0);\n document.body.appendChild(this._stats.dom);\n }\n\n onDestroy() {\n document.body.removeChild(this._stats.dom);\n }\n\n update(dt: number): void {\n const info = this.viewer.renderer.info;\n this._dcPanel.update(info.render.calls, 300);\n this._triPanel.update(info.render.triangles, 500000);\n this._texPanel.update(info.memory.textures, 200);\n this._prgPanel.update(info.programs.length, 50);\n this._stats.update();\n }\n}"],"names":["Controller","name","_name","$name","innerHTML","onChange","callback","_onChange","_callOnChange","parent","undefined","call","getValue","_changed","onFinishChange","_onFinishChange","_callOnFinishChange","reset","setValue","initialValue","enable","enabled","disable","disabled","_disabled","domElement","classList","toggle","$disable","toggleAttribute","show","_hidden","style","display","hide","options","min","max","step","decimals","listen","_listening","_listenCallbackID","cancelAnimationFrame","_listenCallback","checkDisplay","_closed","value","save","_listenPrevValue","requestAnimationFrame","updateDisplay","object","property","update","load","destroy","children","splice","indexOf","controllers","$children","removeChild","className","widgetTag","document","createElement","add","nextNameID","id","$widget","appendChild","addEventListener","e","stopPropagation","push","bind","OptionController","index","_values","$select","selectedIndex","$display","_names","Array","isArray","Object","values","keys","forEach","$option","setAttribute","remove","normalizeColorString","string","match","result","parseInt","toString","padStart","STRING","isPrimitive","v","fromHexString","toHexString","INT","substring","ARRAY","target","rgbScale","int","r","g","b","OBJECT","FORMATS","getColorFormat","find","format","getPrecision","str","length","hasDecimal","NumberController","_min","_onUpdateMinMax","_max","explicit","_step","_stepExplicit","needsUpdateDisplay","Math","abs","_snap","_hasSlider","percent","$fill","width","_inputFocused","$input","_initInput","isTouch","window","matchMedia","matches","onInput","parseFloat","isNaN","_clamp","increment","delta","_snapClampSetValue","onKeyDown","key","blur","code","preventDefault","_arrowKeyMultiplier","onWheel","_normalizeMouseWheel","testingForVerticalDrag","initClientX","initClientY","prevClientY","initValue","dragDelta","DRAG_THRESH","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","dx","dy","_setDraggingStyle","removeEventListener","onFocus","onBlur","passive","_initSlider","$slider","insertBefore","map","a","c","d","setValueFromX","rect","getBoundingClientRect","left","right","mouseDown","mouseMove","mouseUp","testingForScroll","prevClientX","beginTouchDrag","touches","onTouchStart","_hasScrollBar","onTouchMove","onTouchEnd","callOnFinishChange","WHEEL_DEBOUNCE_TIME","wheelFinishChangeTimeout","isVertical","deltaX","deltaY","clearTimeout","setTimeout","active","axis","body","_getImplicitStep","_hasMin","_hasMax","pow","floor","wheelDelta","wheel","mult","shiftKey","altKey","round","toPrecision","root","scrollHeight","clientHeight","stepExplicit","BooleanController","checked","StringController","FunctionController","$button","ColorController","_setValueFromHexString","_initialValueHexString","_format","newValue","_rgbScale","_textFocused","$text","backgroundColor","tryParse","select","UIElement","args","i","argument","dom","console","error","clear","lastChild","setId","getId","setClass","addClass","removeClass","setStyle","array","setDisabled","setTextContent","textContent","getIndexOfChild","element","prototype","UINumber","equals","_onChangeCallback","unit","Infinity","setUnit","nudge","cursor","scope","changeEvent","createEvent","initEvent","distance","onMouseDownValue","pointer","x","y","prevPointer","event","currentValue","dispatchEvent","focus","pageX","pageY","keyCode","VectorController","fill","uiNumber","z","w","xElement","yElement","zElement","wElement","clone","assign","clamp","minv","maxv","hitTest","cx","cy","hw","hh","theme","BACKGROUND","GRID","LINE","COVER","POINT","SELECTED","CurvePanel","_canvas","curve","_curve","resize","height","canvas","DPR","devicePixelRatio","xRes","offsetWidth","yRes","offsetHeight","hypot","_xRes","_yRes","onCurveChanged","_onCurveChanged","onPointChanged","_onPointChanged","onPointRemoved","_onPointRemoved","onPointAdded","_onPointAdded","_onDblClick","button","_tryAddingPoint","_onMouseDown","_cxRef","_cx","_cyRef","_cy","_offsetXRef","offsetX","_offsetYRef","offsetY","_trySelectingPoint","_button","_mouse","_selectedPoint","_onMouseUp","_onMouseMove","cxRes","cyRes","rx","_ra","ry","_fixed","_pxRef","_pyRef","setPointPos","_onWheel","sfactor","render","_autoResize","ctx","_context","setTransform","fillStyle","fillRect","_drawGrid","_drawCurve","color","iax","ibx","iay","iby","lineWidth","strokeStyle","beginPath","ix","moveTo","lineTo","iy","stroke","_drawAxis","xPos","yPos","ax","ay","bx","by","SAMPLES","STEP","point","createCurvePoint","mx","my","hitCurve","hitPoint","isFirstPoint","p","getPoint","closePath","points","px","py","sort","selectPoint","setCurve","setPointMode","mode","set","getContext","copyToClipboard","text","tempInput","setSelectionRange","execCommand","toFixedFloat","fractionDigits","toFixed","CurveEditor","_dom","_onToggleTab","tabInex","_tabs","_curvePanel","_curves","_onTogglePointTab","tab","_smoothTab","_sharpTab","_curvePointPanel","_onPosChanged","_xPosInput","_yPosInput","isChanged","layoutPoint","_layoutPoint","needsUpdate","_target","tabGroup","ondblclick","join","alert","curves","onclick","onchange","CurveController","_curveEditor","TextureController","_autoRefresh","$canvas","context","texture","image","$label","title","sourceFile","getImage","h","drawImage","group","label","depth","block","SceneTreeController","_setupDOM","$treeContainer","_createContextMenu","_contextMenu","menuItems","action","item","menuItem","dataset","_handleContextMenuAction","_setupGlobalEventListeners","contains","_hideContextMenu","_showContextMenu","_contextMenuTarget","_updateContextMenuState","viewportWidth","innerWidth","viewportHeight","innerHeight","adjustedX","adjustedY","top","pasteItem","querySelector","_clipboardData","_exportObject","_copyObject","_pasteObject","node","GLTFExporter","setTextureUtils","TextureUtils","parse","ArrayBuffer","blob","Blob","type","url","URL","createObjectURL","link","href","download","click","err","log","trs","binary","maxTextureSize","copyData","_serializeObject","navigator","clipboard","writeText","JSON","stringify","targetNode","warn","newObject","_deserializeObject","_findParentNode","refresh","obj","serialized","uuid","visible","position","toArray","rotation","scale","userData","child","data","Object3D","findParent","current","includes","_rootNode","_buildSceneTree","scene","buildNode","expanded","_renderTree","_visibleNodeCount","_renderNode","nodeElement","isEvenRow","contentWrapper","marginLeft","alignItems","expandBtn","nodeInfo","visibilityBtn","_selectedObject","_selectObject","_onObjectSelect","onObjectSelect","_scene","getSelectedObject","expandAll","expandNode","collapseAll","collapseNode","_updateVisibilityStates","_autoUpdate","_shouldCheckForChanges","_checkForStructuralChanges","now","performance","_lastUpdateTime","_updateInterval","setAutoUpdate","setUpdateInterval","intervalMs","getUpdateInterval","getAutoUpdate","forceUpdate","_hasSceneStructureChanged","_rebuildSceneTree","_checkObjectCount","_checkObjectReferences","currentCount","_countObjects","_cachedObjectCount","_hasChildrenChanged","sceneObj","treeNode","sceneChild","treeChild","count","currentStructure","_preserveExpandedStates","_hasStructureChanged","oldNode","newNode","parentNode","GUI","$1","addColor","addTexture","addVector","addCurve","addSceneTree","addFolder","folder","_closeFolders","close","removeFolder","getFolder","folders","recursive","f","_title","Error","open","_setClosed","$title","closed","_callOnOpenClose","openAnimated","initialHeight","onTransitionEnd","targetHeight","controllersRecursive","controller","onOpenClose","_onOpenClose","changedGUI","parentElement","from","concat","foldersRecursive","setActive","allActiveFolders","querySelectorAll","getActiveFolder","container","autoPlace","closeFolders","touchStyles","setProperty","ViewerHelper","ObjectInstance","outputColorSpace","_renderer","toneMapping","toneMappingExposure","shadows","shadowMap","backgroundBlurriness","environment","environmentIntensity","environmentRotation","copy","background","backgroundRotation","targetFrameRate","_viewer","viewer","renderer","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","Texture","vert_Sprite","frag_Sprite","Inspector","Component","onLoad","_spriteUniforms","u_resolution","_sprite","Mesh","PlaneGeometry","ShaderMaterial","side","DoubleSide","vertexShader","fragmentShader","uniforms","frustumCulled","_camera","viewport","Vector4","_gui","_tree","_inspect","onDestroy","_refCntMap","_targetMap","dt","_updateFolders","_renderSprite","resolution","u_transform","u_texture","refCntMap","setState","get","_","k","componentManager","traverse","material","traverseComponents","_uninspect","delete","_getPropertiesList","list","props","PropertyManager","_getMergedProperties","propsSort","create","defineProperty","dir","propsList","gui","Material","targetName","_addGUI","source","prop","_hasProperties","flat","ins","isColor","isAnimationCurve","isVector2","isVector3","isVector4","isEuler","isTexture","Camera","Map","order","entries","array0","filter","array1","materialProperties","transparent","depthWrite","depthTest","FrontSide","BackSide","opacity","meshBasicMaterislProperties","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","MeshBasicMaterial","meshStandardMaterialProperties","roughnessMap","roughness","metalnessMap","metalness","emissive","emissiveMap","emissiveIntensity","normalMap","normalScale","displacementScale","displacementBias","envMapIntensity","MeshStandardMaterial","meshPhysicalMaterialProperties","ior","anisotropy","clearcoat","clearcoatMap","clearcoatRoughness","clearcoatNormalScale","clearcoatNormalMap","iridescence","iridescenceMap","iridescenceIOR","iridescenceThicknessRange","iridescenceThicknessMap","sheen","sheenColor","sheenColorMap","sheenRoughness","sheenRoughnessMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","specularIntensity","specularIntensityMap","specularColor","specularColorMap","MeshPhysicalMaterial","Panel","fg","bg","PR","WIDTH","HEIGHT","TEXT_X","TEXT_Y","GRAPH_X","GRAPH_Y","GRAPH_WIDTH","GRAPH_HEIGHT","cssText","font","textBaseline","fillText","globalAlpha","maxValue","Stats","showPanel","addPanel","panel","beginTime","Date","prevTime","frames","fpsPanel","msPanel","self","memory","memPanel","REVISION","begin","end","time","usedJSHeapSize","jsHeapSizeLimit","setMode","_stats","_dcPanel","_texPanel","_triPanel","_prgPanel","info","calls","triangles","textures","programs","StatsPrimitive"],"mappings":"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","x_google_ignoreList":[0,19]}
|