dockview-angular 0.0.0-beta-0
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 +56 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +17 -0
- package/dist/cjs/utils.d.ts +49 -0
- package/dist/cjs/utils.js +141 -0
- package/dist/dockview-angular.amd.js +9268 -0
- package/dist/dockview-angular.amd.js.map +1 -0
- package/dist/dockview-angular.amd.min.js +8 -0
- package/dist/dockview-angular.amd.min.js.map +1 -0
- package/dist/dockview-angular.amd.min.noStyle.js +8 -0
- package/dist/dockview-angular.amd.min.noStyle.js.map +1 -0
- package/dist/dockview-angular.amd.noStyle.js +9238 -0
- package/dist/dockview-angular.amd.noStyle.js.map +1 -0
- package/dist/dockview-angular.cjs.js +9266 -0
- package/dist/dockview-angular.cjs.js.map +1 -0
- package/dist/dockview-angular.esm.js +9215 -0
- package/dist/dockview-angular.esm.js.map +1 -0
- package/dist/dockview-angular.esm.min.js +8 -0
- package/dist/dockview-angular.esm.min.js.map +1 -0
- package/dist/dockview-angular.js +9272 -0
- package/dist/dockview-angular.js.map +1 -0
- package/dist/dockview-angular.min.js +8 -0
- package/dist/dockview-angular.min.js.map +1 -0
- package/dist/dockview-angular.min.noStyle.js +8 -0
- package/dist/dockview-angular.min.noStyle.js.map +1 -0
- package/dist/dockview-angular.noStyle.js +9242 -0
- package/dist/dockview-angular.noStyle.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/utils.d.ts +49 -0
- package/dist/esm/utils.js +119 -0
- package/dist/styles/dockview.css +0 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dockview-angular.esm.js","sources":["../../../node_modules/style-inject/dist/style-inject.es.js","../../dockview-core/dist/esm/dnd/dataTransfer.js","../../dockview-core/dist/esm/events.js","../../dockview-core/dist/esm/lifecycle.js","../../dockview-core/dist/esm/panel/componentFactory.js","../../dockview-core/dist/esm/dom.js","../../dockview-core/dist/esm/array.js","../../dockview-core/dist/esm/math.js","../../dockview-core/dist/esm/splitview/viewItem.js","../../dockview-core/dist/esm/splitview/splitview.js","../../dockview-core/dist/esm/paneview/paneview.js","../../dockview-core/dist/esm/gridview/leafNode.js","../../dockview-core/dist/esm/gridview/branchNode.js","../../dockview-core/dist/esm/gridview/gridview.js","../../dockview-core/dist/esm/api/component.api.js","../../dockview-core/dist/esm/dnd/dnd.js","../../dockview-core/dist/esm/dnd/droptarget.js","../../dockview-core/dist/esm/dockview/components/panel/content.js","../../dockview-core/dist/esm/dnd/abstractDragHandler.js","../../dockview-core/dist/esm/dockview/components/tab/tab.js","../../dockview-core/dist/esm/dnd/ghost.js","../../dockview-core/dist/esm/dnd/groupDragHandler.js","../../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../dockview-core/dist/esm/resizable.js","../../dockview-core/dist/esm/gridview/baseComponentGridview.js","../../dockview-core/dist/esm/api/panelApi.js","../../dockview-core/dist/esm/api/splitviewPanelApi.js","../../dockview-core/dist/esm/api/paneviewPanelApi.js","../../dockview-core/dist/esm/gridview/basePanelView.js","../../dockview-core/dist/esm/paneview/paneviewPanel.js","../../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../dockview-core/dist/esm/api/gridviewPanelApi.js","../../dockview-core/dist/esm/gridview/gridviewPanel.js","../../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../dockview-core/dist/esm/dockview/options.js","../../dockview-core/dist/esm/api/dockviewPanelApi.js","../../dockview-core/dist/esm/dockview/dockviewPanel.js","../../dockview-core/dist/esm/svg.js","../../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../dockview-core/dist/esm/dockview/deserializer.js","../../dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../dockview-core/dist/esm/dnd/overlay.js","../../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../dockview-core/dist/esm/constants.js","../../dockview-core/dist/esm/overlayRenderContainer.js","../../dockview-core/dist/esm/popoutWindow.js","../../dockview-core/dist/esm/dockview/dockviewComponent.js","../../dockview-core/dist/esm/gridview/gridviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewComponent.js","../../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../dockview-core/dist/esm/paneview/paneviewComponent.js","../../dockview-core/dist/esm/splitview/splitviewPanel.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn(this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `Listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n this._last = e;\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn((_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableWindowListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\nexport class TickDelayedEvent {\n constructor() {\n this._onFired = new Emitter();\n this.onEvent = this._onFired.event;\n }\n fire() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this._onFired.fire();\n clearTimeout(this.timer);\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {\n const Component = typeof componentName === 'string'\n ? components[componentName]\n : undefined;\n const FrameworkComponent = typeof componentName === 'string'\n ? frameworkComponents[componentName]\n : undefined;\n if (Component && FrameworkComponent) {\n throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);\n }\n if (FrameworkComponent) {\n if (!createFrameworkComponent) {\n throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);\n }\n return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);\n }\n if (!Component) {\n if (fallback) {\n return fallback();\n }\n throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);\n }\n return new Component(id, componentName);\n}\n","import { Emitter, addDisposableListener, addDisposableWindowListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag) {\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n if (element instanceof HTMLElement) {\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n else {\n this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));\n }\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n throw new Error(`${min} > ${max} is an invalid condition`);\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, getElementsByTagName, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'horizontal', 'vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'horizontal'\n : 'vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n constructor(container, options) {\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = options.orientation;\n this.element = this.createContainer();\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n toggleClass(this.container, 'visible', visible);\n const viewItem = this.viewItems[index];\n toggleClass(this.container, 'visible', visible);\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let sum = 0;\n const x = [];\n this.updateSashEnablement();\n for (let i = 0; i < this.viewItems.length - 1; i++) {\n sum += this.viewItems[i].size;\n x.push(sum);\n const offset = Math.min(Math.max(0, sum - 2), this.size - 4);\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${offset}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${offset}px`;\n }\n }\n this.viewItems.forEach((view, i) => {\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${view.size}px`;\n view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${view.size}px`;\n view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'horizontal'\n : 'vertical';\n element.className = `split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(visible) {\n for (const child of this.children) {\n child.setVisible(visible);\n }\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire(visible);\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange((visible) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bgrid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire();\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire();\n }\n serialize() {\n if (this.hasMaximizedView()) {\n /**\n * do not persist maximized view state\n * firstly exit any maximized views to ensure the correct dimensions are persisted\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n return {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this._locked, children);\n }\n else {\n result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'grid-view';\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","import { Emitter } from '../events';\nexport class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n const emitter = new Emitter();\n const disposable = this.component.onDidDrop((e) => {\n emitter.fire(Object.assign(Object.assign({}, e), { api: this }));\n });\n emitter.dispose = () => {\n disposable.dispose();\n emitter.dispose();\n };\n return emitter.event;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, coord) {\n return this.component.addFloatingGroup(item, coord);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n // use a set to take advantage of #<set>.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => undefined,\n onDragOver: (e) => {\n if (this._acceptedTargetZonesSet.size === 0) {\n this.removeDropTarget();\n return;\n }\n const width = this.element.clientWidth;\n const height = this.element.clientHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n if (typeof this.options.canDisplayOverlay === 'boolean') {\n if (!this.options.canDisplayOverlay) {\n this.removeDropTarget();\n return;\n }\n }\n else if (!this.options.canDisplayOverlay(e, quadrant)) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n this.element.classList.add('drop-target');\n this.element.append(this.targetElement);\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n this.removeDropTarget();\n },\n onDragEnd: () => {\n this.removeDropTarget();\n },\n onDrop: (e) => {\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b;\n if (!this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n this.overlayElement.style.top = box.top;\n this.overlayElement.style.left = box.left;\n this.overlayElement.style.width = box.width;\n this.overlayElement.style.height = box.height;\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n if (this.targetElement) {\n this._state = undefined;\n this.element.removeChild(this.targetElement);\n this.targetElement = undefined;\n this.overlayElement = undefined;\n this.element.classList.remove('drop-target');\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n this.dropTarget = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n if (data.groupId === this.group.id) {\n if (position === 'center') {\n // don't allow to drop on self for center position\n return false;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return false;\n }\n }\n const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&\n data.groupId === this.group.id;\n return !groupHasOnePanelAndIsActiveDragElement;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisibile':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisibile') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { getElementsByTagName } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el) {\n super();\n this.el = el;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event)) {\n event.preventDefault();\n return;\n }\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n this.pointerEventsDisposable.value = {\n dispose: () => {\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n },\n };\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n this.dataDisposable.dispose();\n }));\n }\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel) {\n super(element);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onChanged = new Emitter();\n this.onChanged = this._onChanged.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'tab';\n this._element.tabIndex = 0;\n this._element.draggable = true;\n toggleClass(this.element, 'inactive-tab', true);\n const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n if (data.panelId === null &&\n data.groupId === this.group.id) {\n // don't allow group move to drop on self\n return false;\n }\n return this.panel.id !== data.panelId;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n this._onChanged.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'active-tab', isActive);\n toggleClass(this.element, 'inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n dispose() {\n super.dispose();\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement) {\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, 0, 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group) {\n super(element);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement);\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { last } from '../../../array';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'void-container';\n this._element.tabIndex = 0;\n this._element.draggable = true;\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n const handler = new GroupDragHandler(this._element, accessor, group);\n this.dropTraget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n var _a;\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n if (data.panelId === null &&\n data.groupId === this.group.id) {\n // don't allow group move to drop on self\n return false;\n }\n // don't show the overlay if the tab being dragged is the last panel of this group\n return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n });\n this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;\n this.addDisposables(handler, handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTraget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTraget);\n }\n}\n","import { CompositeDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { Tab } from '../tab/tab';\nimport { VoidContainer } from './voidContainer';\nimport { toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent, } from '../../dockviewGroupPanelModel';\nexport class TabsContainer extends CompositeDisposable {\n get panels() {\n return this.tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this.tabs.length;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n get element() {\n return this._element;\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this.tabs[this.selectedIndex].value === tab);\n }\n indexOf(id) {\n return this.tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.tabs = [];\n this.selectedIndex = -1;\n this._hidden = false;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'pre-actions-container';\n this.tabContainer = document.createElement('div');\n this.tabContainer.className = 'tabs-container';\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabContainer);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.accessor.onDidAddPanel((e) => {\n if (e.api.group === this.group) {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n }), this.accessor.onDidRemovePanel((e) => {\n if (e.api.group === this.group) {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n }), this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.length,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n }));\n }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n }, { inDragMode: true });\n }\n }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }));\n }\n setActive(_isGroupActive) {\n // noop\n }\n addTab(tab, index = this.tabs.length) {\n if (index < 0 || index > this.tabs.length) {\n throw new Error('invalid location');\n }\n this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);\n this.tabs = [\n ...this.tabs.slice(0, index),\n tab,\n ...this.tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n delete(id) {\n const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);\n const tabToRemove = this.tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n setActivePanel(panel) {\n this.tabs.forEach((tab) => {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n });\n }\n openPanel(panel, index = this.tabs.length) {\n var _a;\n if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {\n throw new Error('invalid header component');\n }\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onChanged((event) => {\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n }, { inDragMode: true });\n return;\n }\n const isLeftClick = event.button === 0;\n if (!isLeftClick || event.defaultPrevented) {\n return;\n }\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n dispose() {\n super.dispose();\n for (const { value, disposable } of this.tabs) {\n disposable.dispose();\n value.dispose();\n }\n this.tabs = [];\n }\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class WillShowOverlayLocationEvent {\n get kind() {\n return this._kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n constructor(event, options) {\n this.event = event;\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._overwriteRenderContainer = null;\n toggleClass(this.container, 'groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionsElement) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionsElement(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionsElement) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionsElement) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n this.accessor.removePanel(panel);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'active-group', isGroupActive);\n toggleClass(this.container, 'inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n toggleClass(this.container, 'empty', this.isEmpty);\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'click', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.tabsContainer.hide();\n this.contentContainer.element.appendChild(this.watermark.element);\n this.watermark.updateParentGroup(this.groupPanel, true);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n this.tabsContainer.show();\n }\n }\n canDisplayOverlay(event, position, target) {\n // custom overlay handler\n if (this.accessor.options.showDndOverlay) {\n return this.accessor.options.showDndOverlay({\n nativeEvent: event,\n target,\n group: this.accessor.getPanel(this.id),\n position,\n getData: getPanelData,\n });\n }\n return false;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, TickDelayedEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(options) {\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new TickDelayedEvent();\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n options.parentElement.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._bufferOnDidLayoutChange.onEvent(() => {\n this._onDidLayoutChange.fire();\n }), this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._onDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n get onDidMaximizedGroupChange() {\n return this.gridview.onDidMaximizedNodeChange;\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize !== null && forceResize !== void 0 ? forceResize : (width !== this.width || height !== this.height);\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n this._onDidLayoutChange.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id) {\n super();\n this.id = id;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onUpdateParameters = new Emitter();\n this.onUpdateParameters = this._onUpdateParameters.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onWillVisibilityChange, this._onUpdateParameters);\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onUpdateParameters.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id) {\n super(id);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id) {\n super(id);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {\n super(id, component, new PaneviewPanelApiImpl(id));\n this.headerComponent = headerComponent;\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.headerSize = 22;\n this._orthogonalSize = 0;\n this._size = 0;\n this._minimumBodySize = 100;\n this._maximumBodySize = Number.POSITIVE_INFINITY;\n this._isExpanded = false;\n this.expandedSize = 0;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this._isExpanded = isExpanded;\n this._headerVisible = isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = orientation;\n this.element.classList.add('pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n if (this.isExpanded()) {\n this.expandedSize = width;\n }\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {\n super(id, component, headerComponent, orientation, isExpanded, true);\n this.accessor = accessor;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n if (!disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n if (this.accessor.options.showDndOverlay) {\n return this.accessor.options.showDndOverlay({\n nativeEvent: event,\n getData: getPaneData,\n panel: this,\n });\n }\n return false;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, panel) {\n super(id);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n get minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n get isActive() {\n return this.api.isActive;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\n// TODO find a better way to initialize and avoid needing null checks\nconst NOT_INITIALIZED_MESSAGE = 'DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id);\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.addDisposables(this._onDidLocationChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: true,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'\n : 'center',\n },\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n super(id, 'groupview_default', {\n minimumHeight: MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n constructor(panel, group, accessor) {\n super(panel.id);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: options.group,\n position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',\n index: options.index,\n },\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n if (!event.isVisible && this.isVisible) {\n this._onDidVisibilityChange.fire(event);\n }\n else if (event.isVisible &&\n !this.isVisible &&\n this.group.model.isPanelActive(this.panel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n constructor(id, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange((event) => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.view.update({\n params: {\n params: this._params,\n title: this.title,\n },\n });\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: {\n params: this._params,\n title: this.title,\n },\n });\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dockview-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n //\n this.params = {};\n this._element = document.createElement('div');\n this._element.className = 'default-tab';\n //\n this._content = document.createElement('div');\n this._content.className = 'tab-content';\n //\n this._actionContainer = document.createElement('div');\n this._actionContainer.className = 'action-container';\n //\n this._list = document.createElement('ul');\n this._list.className = 'tab-list';\n //\n this.action = document.createElement('div');\n this.action.className = 'tab-action';\n this.action.appendChild(createCloseButton());\n //\n this._element.appendChild(this._content);\n this._element.appendChild(this._actionContainer);\n this._actionContainer.appendChild(this._list);\n this._list.appendChild(this.action);\n //\n this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {\n ev.preventDefault();\n }));\n this.render();\n }\n update(event) {\n this.params = Object.assign(Object.assign({}, this.params), event.params);\n this.render();\n }\n focus() {\n //noop\n }\n init(params) {\n this.params = params;\n this._content.textContent = params.title;\n addDisposableListener(this.action, 'click', (ev) => {\n ev.preventDefault(); //\n this.params.api.close();\n });\n }\n onGroupChange(_group) {\n this.render();\n }\n onPanelVisibleChange(_isPanelVisible) {\n this.render();\n }\n layout(_width, _height) {\n // noop\n }\n render() {\n if (this._content.textContent !== this.params.title) {\n this._content.textContent = this.params.title;\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nimport { createComponent } from '../panel/componentFactory';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n init(params) {\n this.content.init(params);\n this.tab.init(params);\n }\n updateParentGroup(_group, _isPanelVisible) {\n // noop\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n var _a, _b;\n return createComponent(id, componentName, (_a = this.accessor.options.components) !== null && _a !== void 0 ? _a : {}, this.accessor.options.frameworkComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.content);\n }\n createTabComponent(id, componentName) {\n var _a, _b;\n if (componentName) {\n return createComponent(id, componentName, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_a = this.accessor.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, () => new DefaultTab());\n }\n else if (this.accessor.options.defaultTabComponent) {\n return createComponent(id, this.accessor.options.defaultTabComponent, this.accessor.options.tabComponents, this.accessor.options.frameworkTabComponents, (_b = this.accessor.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());\n }\n else {\n return new DefaultTab();\n }\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { addDisposableListener } from '../../../events';\nimport { toggleClass } from '../../../dom';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { createCloseButton } from '../../../svg';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'watermark';\n const title = document.createElement('div');\n title.className = 'watermark-title';\n const emptySpace = document.createElement('span');\n emptySpace.style.flexGrow = '1';\n const content = document.createElement('div');\n content.className = 'watermark-content';\n this._element.appendChild(title);\n this._element.appendChild(content);\n const actionsContainer = document.createElement('div');\n actionsContainer.className = 'actions-container';\n const closeAnchor = document.createElement('div');\n closeAnchor.className = 'close-action';\n closeAnchor.appendChild(createCloseButton());\n actionsContainer.appendChild(closeAnchor);\n title.appendChild(emptySpace);\n title.appendChild(actionsContainer);\n this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {\n var _a;\n ev.preventDefault();\n if (this._group) {\n (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);\n }\n }));\n }\n update(_event) {\n // noop\n }\n focus() {\n // noop\n }\n layout(_width, _height) {\n // noop\n }\n init(_params) {\n this._api = _params.containerApi;\n this.render();\n }\n updateParentGroup(group, _visible) {\n this._group = group;\n this.render();\n }\n dispose() {\n super.dispose();\n }\n render() {\n const isOneGroup = !!(this._api && this._api.size <= 1);\n toggleClass(this.element, 'has-actions', isOneGroup);\n }\n}\n","import { getElementsByTagName, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, addDisposableWindowListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nconst bringElementToFront = (() => {\n let previous = null;\n function pushToTop(element) {\n if (previous !== element && previous !== null) {\n toggleClass(previous, 'dv-bring-to-front', false);\n }\n toggleClass(element, 'dv-bring-to-front', true);\n previous = element;\n }\n return pushToTop;\n})();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds({\n height: this.options.height,\n width: this.options.width,\n top: this.options.top,\n left: this.options.left,\n });\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if (typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n }\n if (typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = typeof this.options.minimumInViewportHeight === 'number'\n ? Math.max(0, this.getMinimumHeight(overlayRect.height))\n : 0;\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.left = `${left}px`;\n this._element.style.top = `${top}px`;\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n return {\n top: element.top - container.top,\n left: element.left - container.left,\n width: element.width,\n height: element.height,\n };\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n move.value = new CompositeDisposable({\n dispose: () => {\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n },\n }, addDisposableWindowListener(window, 'mousemove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.options.minimumInViewportHeight\n ? this.getMinimumHeight(overlayRect.height)\n : 0);\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this.setBounds({ top, left });\n }), addDisposableWindowListener(window, 'mouseup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'mousedown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'mousedown', () => {\n bringElementToFront(this._element);\n }, true));\n bringElementToFront(this._element);\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = [\n ...getElementsByTagName('iframe'),\n ...getElementsByTagName('webview'),\n ];\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'none';\n }\n move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let height = undefined;\n let left = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n this.setBounds({ height, width, top, left });\n }), {\n dispose: () => {\n for (const iframe of iframes) {\n iframe.style.pointerEvents = 'auto';\n }\n },\n }, addDisposableWindowListener(window, 'mouseup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return height;\n }\n dispose() {\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };\n","import { DragAndDropObserver } from './dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from './dom';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element) {\n super();\n this.element = element;\n this.map = {};\n this._disposed = false;\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n // TODO propagate position to avoid getDomNodePagePosition calls, possible performance bottleneck?\n const box = getDomNodePagePosition(referenceContainer.element);\n const box2 = getDomNodePagePosition(this.element);\n focusContainer.style.left = `${box.left - box2.left}px`;\n focusContainer.style.top = `${box.top - box2.top}px`;\n focusContainer.style.width = `${box.width}px`;\n focusContainer.style.height = `${box.height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const disposable = new CompositeDisposable(\n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange((event) => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (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};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableWindowListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window.value.close();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableWindowListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableWindowListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { createComponent } from '../panel/componentFactory';\nimport { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, WillShowOverlayLocationEvent, } from './dockviewGroupPanelModel';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../dnd/overlay';\nimport { toggleClass, watchElementResize } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nfunction getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nfunction typeValidate3(data, path) {\n if (typeof data.id !== 'string') {\n throw new Error(`${path}.id must be a string`);\n }\n if (typeof data.activeView !== 'string' ||\n typeof data.activeView !== 'undefined') {\n throw new Error(`${path}.activeView must be a string of undefined`);\n }\n}\nfunction typeValidate2(data, path) {\n if (typeof data.size !== 'number' && typeof data.size !== 'undefined') {\n throw new Error(`${path}.size must be a number or undefined`);\n }\n if (typeof data.visible !== 'boolean' &&\n typeof data.visible !== 'undefined') {\n throw new Error(`${path}.visible must be a boolean or undefined`);\n }\n if (data.type === 'leaf') {\n if (typeof data.data !== 'object' ||\n data.data === null ||\n Array.isArray(data.data)) {\n throw new Error('object must be a non-null object');\n }\n typeValidate3(data.data, `${path}.data`);\n }\n else if (data.type === 'branch') {\n if (!Array.isArray(data.data)) {\n throw new Error(`${path}.data must be an array`);\n }\n }\n else {\n throw new Error(`${path}.type must be onew of {'branch', 'leaf'}`);\n }\n}\nfunction typeValidate(data) {\n if (typeof data !== 'object' || data === null) {\n throw new Error('object must be a non-null object');\n }\n const { grid, panels, activeGroup, floatingGroups } = data;\n if (typeof grid !== 'object' || grid === null) {\n throw new Error(\"'.grid' must be a non-null object\");\n }\n if (typeof grid.height !== 'number') {\n throw new Error(\"'.grid.height' must be a number\");\n }\n if (typeof grid.width !== 'number') {\n throw new Error(\"'.grid.width' must be a number\");\n }\n if (typeof grid.root !== 'object' || grid.root === null) {\n throw new Error(\"'.grid.root' must be a non-null object\");\n }\n if (grid.root.type !== 'branch') {\n throw new Error(\".grid.root.type must be of type 'branch'\");\n }\n if (grid.orientation !== Orientation.HORIZONTAL &&\n grid.orientation !== Orientation.VERTICAL) {\n throw new Error(`'.grid.width' must be one of {${Orientation.HORIZONTAL}, ${Orientation.VERTICAL}}`);\n }\n typeValidate2(grid.root, '.grid.root');\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';\n }\n constructor(options) {\n var _a, _b;\n super({\n proportionalLayout: true,\n orientation: (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.HORIZONTAL,\n styles: options.styles,\n parentElement: options.parentElement,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this.watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._ignoreEvents = 0;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n this.gridview.element.appendChild(gready);\n this.overlayRenderContainer = new OverlayRenderContainer(gready);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }));\n this._options = options;\n if (!this.options.components) {\n this.options.components = {};\n }\n if (!this.options.frameworkComponents) {\n this.options.frameworkComponents = {};\n }\n if (!this.options.frameworkTabComponents) {\n this.options.frameworkTabComponents = {};\n }\n if (!this.options.tabComponents) {\n this.options.tabComponents = {};\n }\n if (!this.options.watermarkComponent &&\n !this.options.watermarkFrameworkComponent) {\n this.options.watermarkComponent = Watermark;\n }\n this._rootDropTarget = new Droptarget(this.element, {\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (this.options.showDndOverlay) {\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n return this.options.showDndOverlay({\n nativeEvent: event,\n position: position,\n target: 'edge',\n getData: getPanelData,\n });\n }\n return false;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,\n });\n this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n this._api = new DockviewApi(this);\n this.updateWatermark();\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId(); //item.id;\n if (itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return;\n }\n if (popoutContainer === null) {\n popoutWindowDisposable.dispose();\n return;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready);\n const referenceGroup = itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });\n group.model.renderContainer = overlayRenderContainer;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {\n this._onDidAddGroup.fire(group);\n }\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n this.removeGroup(referenceGroup);\n break;\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n };\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: this.getPanel(referenceGroup.id)\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n popoutWindowDisposable.addDisposables(\n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableWindowListener(_window.window, 'resize', () => {\n group.layout(window.innerWidth, window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else {\n if (this.getPanel(group.id)) {\n const removedGroup = this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n });\n removedGroup.model.renderContainer =\n this.overlayRenderContainer;\n removedGroup.model.location = { type: 'grid' };\n returnedGroup = removedGroup;\n }\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n })\n .catch((err) => {\n console.error(err);\n });\n }\n addFloatingGroup(item, coord, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n group.model.openPanel(item, { skipSetGroupActive: true });\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: !!popoutReferenceGroup,\n });\n }\n }\n }\n group.model.location = { type: 'floating' };\n const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'\n ? Math.max(coord.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left;\n const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'\n ? Math.max(coord.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top;\n const overlay = new Overlay({\n container: this.gridview.element,\n content: group.element,\n height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,\n width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,\n left: overlayLeft,\n top: overlayTop,\n minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\n minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,\n });\n const el = group.element.querySelector('.void-container');\n if (!el) {\n throw new Error('failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n });\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.height, group.width);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n group.model.location = { type: 'grid' };\n remove(this._floatingGroups, floatingGroupPanel);\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position) {\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0]); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length]); // insert into last position\n default:\n throw new Error(`unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n const changed_orientation = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n const changed_floatingGroupBounds = options.floatingGroupBounds !== undefined &&\n options.floatingGroupBounds !== this.options.floatingGroupBounds;\n const changed_rootOverlayOptions = options.rootOverlayModel !== undefined &&\n options.rootOverlayModel !== this.options.rootOverlayModel;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (changed_orientation) {\n this.gridview.orientation = options.orientation;\n }\n if (changed_floatingGroupBounds) {\n for (const group of this._floatingGroups) {\n switch (this.options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds({});\n }\n }\n if (changed_rootOverlayOptions) {\n this._rootDropTarget.setOverlayModel(options.rootOverlayModel);\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data) {\n var _a, _b, _c;\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n this._onDidAddGroup.fire(group);\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n x: position.left,\n y: position.top,\n height: position.height,\n width: position.width,\n }, { skipRemoveGroup: true, inDragMode: false });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n for (const serializedPopoutGroup of serializedPopoutGroups) {\n const { data, position, gridReferenceGroup } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n this.addPopoutGroup((_c = (gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined)) !== null && _c !== void 0 ? _c : group, {\n skipRemoveGroup: true,\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup\n ? group\n : undefined,\n });\n }\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n const hasActivePanel = !!this.activePanel;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n if (!referencePanel) {\n throw new Error(`referencePanel ${options.position.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`referencePanel ${options.position.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(group);\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const o = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, o, {\n inDragMode: false,\n skipRemoveGroup: true,\n skipActiveGroup: true,\n });\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel);\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(group);\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const o = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, o, {\n inDragMode: false,\n skipRemoveGroup: true,\n skipActiveGroup: true,\n });\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n }\n else {\n const group = this.createGroupAtLocation();\n panel = this.createPanel(options, group);\n group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(group);\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n skipDispose: false,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n var _a;\n return createComponent('watermark-id', 'watermark-name', this.options.watermarkComponent\n ? { 'watermark-name': this.options.watermarkComponent }\n : {}, this.options.watermarkFrameworkComponent\n ? { 'watermark-name': this.options.watermarkFrameworkComponent }\n : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this.watermark) {\n this.watermark = this.createWatermarkComponent();\n this.watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n watermarkContainer.appendChild(this.watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this.watermark) {\n this.watermark.element.parentElement.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n const group = this.createGroup(options);\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction));\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n this.doAddGroup(group, relativeLocation);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n if (sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(destinationGroup);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n this.doSetGroupAndPanelActive(to);\n panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel });\n });\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('failed to find popout group');\n }\n selectedPopoutGroup.disposable.dispose();\n }\n }\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n this.gridview.addView(from, Sizing.Distribute, dropLocation);\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel });\n });\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location = [0]) {\n const group = this.createGroup();\n this.doAddGroup(group, location);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { createComponent } from '../panel/componentFactory';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(options) {\n super({\n parentElement: options.parentElement,\n proportionalLayout: options.proportionalLayout,\n orientation: options.orientation,\n styles: options.styles,\n disableAutoResizing: options.disableAutoResizing,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n if (!this.options.components) {\n this.options.components = {};\n }\n if (!this.options.frameworkComponents) {\n this.options.frameworkComponents = {};\n }\n }\n updateOptions(options) {\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n var _a, _b;\n const { data } = node;\n const view = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkComponentFactory\n ? {\n createComponent: this.options.frameworkComponentFactory\n .createComponent,\n }\n : undefined);\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d, _e, _f;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = createComponent(options.id, options.component, (_d = this.options.components) !== null && _d !== void 0 ? _d : {}, (_e = this.options.frameworkComponents) !== null && _e !== void 0 ? _e : {}, this.options.frameworkComponentFactory\n ? {\n createComponent: this.options.frameworkComponentFactory\n .createComponent,\n }\n : undefined);\n view.init({\n params: (_f = options.params) !== null && _f !== void 0 ? _f : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.registerPanel(view);\n this.doAddGroup(view, relativeLocation, options.size);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { createComponent } from '../panel/componentFactory';\nimport { Resizable } from '../resizable';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(options) {\n super(options.parentElement, options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._options = options;\n if (!options.components) {\n options.components = {};\n }\n if (!options.frameworkComponents) {\n options.frameworkComponents = {};\n }\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.options.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.splitview.orientation = options.orientation;\n }\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a, _b, _c;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = createComponent(options.id, options.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.createComponent,\n }\n : undefined);\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_c = options.params) !== null && _c !== void 0 ? _c : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b;\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper\n .createComponent,\n }\n : undefined);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = { api: null };\n this._element = document.createElement('div');\n this.element.className = 'default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dockview-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { createComponent } from '../panel/componentFactory';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nconst nextLayoutId = sequentialNumberGenerator();\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(options) {\n super(options.parentElement, options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);\n this._options = options;\n if (!options.components) {\n options.components = {};\n }\n if (!options.frameworkComponents) {\n options.frameworkComponents = {};\n }\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n const body = createComponent(options.id, options.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.body.createComponent,\n }\n : undefined);\n let header;\n if (options.headerComponent) {\n header = createComponent(options.id, options.headerComponent, (_c = this.options.headerComponents) !== null && _c !== void 0 ? _c : {}, this.options.headerframeworkComponents, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.header\n .createComponent,\n }\n : undefined);\n }\n else {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c, _d;\n const data = view.data;\n const body = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.body\n .createComponent,\n }\n : undefined);\n let header;\n if (data.headerComponent) {\n header = createComponent(data.id, data.headerComponent, (_c = this.options.headerComponents) !== null && _c !== void 0 ? _c : {}, (_d = this.options.headerframeworkComponents) !== null && _d !== void 0 ? _d : {}, this.options.frameworkWrapper\n ? {\n createComponent: this.options.frameworkWrapper.header\n .createComponent,\n }\n : undefined);\n }\n else {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n });\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n"],"names":["nextLayoutId","this"],"mappings":";;;;;;AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;;ACzBA,MAAM,cAAc,CAAC;AACrB,CAAC;AACM,MAAM,aAAa,SAAS,cAAc,CAAC;AAClD,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AAC1C,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,CAAC;AACM,MAAM,YAAY,SAAS,cAAc,CAAC;AACjD,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AAChC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACO,MAAM,sBAAsB,CAAC;AACpC,IAAI,WAAW,GAAG;AAClB;AACA,KAAK;AACL,IAAI,OAAO,WAAW,GAAG;AACzB,QAAQ,OAAO,sBAAsB,CAAC,QAAQ,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;AAC7C,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjC,YAAY,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACnC,YAAY,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AAClC,SAAS;AACT,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjC,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;AACzB,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC/B,SAAS;AACT,KAAK;AACL,CAAC;AACD,sBAAsB,CAAC,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;AACxD,SAAS,YAAY,GAAG;AAC/B,IAAI,MAAM,aAAa,GAAG,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC/D,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACxE,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AACM,SAAS,WAAW,GAAG;AAC9B,IAAI,MAAM,YAAY,GAAG,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC9D,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D;;ACjEU,IAAC,MAAM;AACjB,CAAC,UAAU,KAAK,EAAE;AAClB,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,KAAK;AACjC,QAAQ,OAAO,CAAC,QAAQ,KAAK;AAC7B,YAAY,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzE,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,MAAM;AAC/B,oBAAoB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAC/C,wBAAwB,CAAC,CAAC,OAAO,EAAE,CAAC;AACpC,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS,CAAC;AACV,KAAK,CAAC;AACN,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AACnB,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC;AACtC,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,KAAK;AACL,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE;AAC3B,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;AACL,CAAC;AACD,MAAM,UAAU,CAAC;AACjB,IAAI,OAAO,MAAM,GAAG;AACpB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,KAAK;AACL,CAAC;AACD,MAAM,QAAQ,CAAC;AACf,IAAI,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE;AACtC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,KAAK;AACL,CAAC;AACD;AACO,MAAM,OAAO,CAAC;AACrB,IAAI,OAAO,wBAAwB,CAAC,SAAS,EAAE;AAC/C,QAAQ,IAAI,SAAS,KAAK,OAAO,CAAC,eAAe,EAAE;AACnD,YAAY,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ,KAAK;AACxC,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AACtH,oBAAoB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,iBAAiB;AACjB,gBAAgB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AACnH,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,gBAAgB,OAAO;AACvB,oBAAoB,OAAO,EAAE,MAAM;AACnC,wBAAwB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxE,wBAAwB,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACxC,4BAA4B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7D,yBAAyB;AACzB,6BAA6B,IAAI,OAAO,CAAC,eAAe,EAAE,CAKjC;AACzB,qBAAqB;AACrB,iBAAiB,CAAC;AAClB,aAAa,CAAC;AACd,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE;AACzC,gBAAgB,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AAClF,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,EAAE;AACZ,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AAChD,YAAY,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjC,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAgB,IAAI,OAAO,CAAC,eAAe,EAAE;AAC7C,oBAAoB,cAAc,CAAC,MAAM;AACzC,wBAAwB,IAAI,EAAE,CAAC;AAC/B;AACA,wBAAwB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AAChE,4BAA4B,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACrH,yBAAyB;AACzB,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrC,aAAa;AACb,YAAY,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,EAAE;AACxD,gBAAgB,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChE,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;AACD,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;AAChC,OAAO,CAAC,mBAAmB,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5C,SAAS,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC9E,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtD,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,MAAM;AACvB,YAAY,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjE,SAAS;AACT,KAAK,CAAC;AACN,CAAC;AACM,SAAS,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;AACxE,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtD,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,MAAM;AACvB,YAAY,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjE,SAAS;AACT,KAAK,CAAC;AACN,CAAC;AACM,MAAM,gBAAgB,CAAC;AAC9B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM;AACtC,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjC,YAAY,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChC,KAAK;AACL;;ACzKO,IAAI,UAAU,CAAC;AACtB,CAAC,UAAU,UAAU,EAAE;AACvB,IAAI,UAAU,CAAC,IAAI,GAAG;AACtB,QAAQ,OAAO,EAAE,MAAM;AACvB;AACA,SAAS;AACT,KAAK,CAAC;AACN,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE;AACxB,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,MAAM;AAC3B,gBAAgB,IAAI,EAAE,CAAC;AACvB,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,IAAI,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC3B,CAAC,EAAE,UAAU,KAAK,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,MAAM,mBAAmB,CAAC;AACjC,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,cAAc,CAAC,GAAG,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,KAAK;AACL,CAAC;AACM,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE;AAC1B,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AACtC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACvC,YAAY,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;AAC/C,SAAS;AACT,KAAK;AACL;;ACpDO,SAAS,eAAe,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,mBAAmB,GAAG,EAAE,EAAE,wBAAwB,EAAE,QAAQ,EAAE;AAClI,IAAI,MAAM,SAAS,GAAG,OAAO,aAAa,KAAK,QAAQ;AACvD,UAAU,UAAU,CAAC,aAAa,CAAC;AACnC,UAAU,SAAS,CAAC;AACpB,IAAI,MAAM,kBAAkB,GAAG,OAAO,aAAa,KAAK,QAAQ;AAChE,UAAU,mBAAmB,CAAC,aAAa,CAAC;AAC5C,UAAU,SAAS,CAAC;AACpB,IAAI,IAAI,SAAS,IAAI,kBAAkB,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,uDAAuD,CAAC,CAAC,CAAC;AACrI,KAAK;AACL,IAAI,IAAI,kBAAkB,EAAE;AAC5B,QAAQ,IAAI,CAAC,wBAAwB,EAAE;AACvC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,2BAA2B,EAAE,aAAa,CAAC,wEAAwE,CAAC,CAAC,CAAC;AACvK,SAAS;AACT,QAAQ,OAAO,wBAAwB,CAAC,eAAe,CAAC,EAAE,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,OAAO,QAAQ,EAAE,CAAC;AAC9B,SAAS;AACT,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AAC5C;;ACrBO,SAAS,kBAAkB,CAAC,OAAO,EAAE,EAAE,EAAE;AAChD,IAAI,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAK;AACrD;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAqB,CAAC,MAAM;AACpC,YAAY,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC;AAC3B,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,MAAM;AACvB,YAAY,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxC,YAAY,QAAQ,CAAC,UAAU,EAAE,CAAC;AAClC,SAAS;AACT,KAAK,CAAC;AACN,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,KAAK;AACtD,IAAI,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE;AACrC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACnD,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACK,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,KAAK;AACnD,IAAI,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE;AACrC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACpD,YAAY,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7C,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACK,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,KAAK;AAC9D,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC3D,IAAI,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAQ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE;AAChC,QAAQ,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5C,KAAK;AACL,CAAC,CAAC;AACK,SAAS,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE;AACpD,IAAI,OAAO,SAAS,EAAE;AACtB,QAAQ,IAAI,SAAS,KAAK,YAAY,EAAE;AACxC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,oBAAoB,CAAC,GAAG,EAAE;AAC1C,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AACM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AACD;AACA;AACA;AACA,MAAM,YAAY,SAAS,mBAAmB,CAAC;AAC/C,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACnE,QAAQ,IAAI,YAAY,GAAG,KAAK,CAAC;AACjC,QAAQ,MAAM,OAAO,GAAG,MAAM;AAC9B,YAAY,YAAY,GAAG,KAAK,CAAC;AACjC,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,QAAQ,GAAG,IAAI,CAAC;AAChC,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACxC,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,YAAY,GAAG,IAAI,CAAC;AACpC,gBAAgB,MAAM,CAAC,UAAU,CAAC,MAAM;AACxC,oBAAoB,IAAI,YAAY,EAAE;AACtC,wBAAwB,YAAY,GAAG,KAAK,CAAC;AAC7C,wBAAwB,QAAQ,GAAG,KAAK,CAAC;AACzC,wBAAwB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/C,qBAAqB;AACrB,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACtB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,oBAAoB,GAAG,MAAM;AAC1C,YAAY,MAAM,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACpF,YAAY,IAAI,mBAAmB,KAAK,QAAQ,EAAE;AAClD,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,MAAM,EAAE,CAAC;AAC7B,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,CAAC;AAC9B,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,OAAO,YAAY,WAAW,EAAE;AAC5C,YAAY,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACxF,YAAY,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACtF,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9F,YAAY,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5F,SAAS;AACT,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,KAAK;AACL,CAAC;AACD;AACA,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAC3D;AACO,SAAS,mBAAmB,CAAC,KAAK,EAAE;AAC3C,IAAI,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;AAC5C,CAAC;AACD;AACO,SAAS,qBAAqB,CAAC,KAAK,EAAE;AAC7C,IAAI,OAAO,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC5C,CAAC;AACM,SAAS,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE;AACpD,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnD,IAAI,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAC1C,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE;AAC7B,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxD,YAAY,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACxC,YAAY,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACxC,YAAY,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;AACpC,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI;AACZ,YAAY,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrC,gBAAgB,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;AACvF,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB;AACA,SAAS;AACT,QAAQ,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;AACrC,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1D,YAAY,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAS;AACT,KAAK;AACL,CAAC;AACM,SAAS,sBAAsB,CAAC,OAAO,EAAE;AAChD,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACzE,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,OAAO;AACnC,QAAQ,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,OAAO;AACjC,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,MAAM,EAAE,MAAM;AACtB,KAAK,CAAC;AACN,CAAC;AACD;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,OAAO,EAAE;AACtC,IAAI,IAAI,cAAc,GAAG,OAAO,CAAC;AACjC,IAAI,OAAO,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC,UAAU,EAAE;AACtG,QAAQ,IAAI,cAAc,CAAC,UAAU,KAAK,QAAQ,EAAE;AACpD,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,aAAa,IAAI,cAAc,CAAC,UAAU,YAAY,gBAAgB,EAAE;AACxE;AACA,YAAY,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;AAC5D,SAAS;AACT,aAAa;AACb,YAAY,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC;AACvD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB;;ACpLO,SAAS,IAAI,CAAC,GAAG,EAAE;AAC1B,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AACM,SAAS,IAAI,CAAC,GAAG,EAAE;AAC1B,IAAI,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC5D,CAAC;AACM,SAAS,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;AAC3C,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACrC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACjC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AACxC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACpB,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACO,SAAS,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACpB,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,KAAK;AACL,CAAC;AACM,SAAS,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE;AACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;AACzB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,CAAC;AACM,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AACtD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACpB,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB;;ACxDO,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK;AAC1C,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AACK,MAAM,yBAAyB,GAAG,MAAM;AAC/C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;AAChD,CAAC,CAAC;AACK,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK;AACnC,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAChC,QAAQ,EAAE,GAAG,IAAI,CAAC;AAClB,QAAQ,IAAI,GAAG,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE;AACpB,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,KAAK;AACL,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;;AC1BM,MAAM,QAAQ,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,OAAO,IAAI,CAAC,kBAAkB,KAAK,WAAW,CAAC;AAC9D,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC;AACnE,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;AACnD,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;AAC5C,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACtC,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC9B,YAAY,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;AAChD,YAAY,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC7D,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE;AAC9B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AACtC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7I,YAAY,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;AAChD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,kBAAkB;AACnC,gBAAgB,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5D,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC1B,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5D,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL;;ACzEA;AACA;AACA;AACA;AAMU,IAAC,YAAY;AACvB,CAAC,UAAU,WAAW,EAAE;AACxB,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAC7C,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACzC,CAAC,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5B,IAAC,UAAU;AACrB,CAAC,UAAU,SAAS,EAAE;AACtB,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AACpD,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AACpD,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACtD,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AACpD,CAAC,EAAE,SAAS,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AACxB,IAAC,eAAe;AAC1B,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAClC,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AACpC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACxC,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAClC,IAAC,OAAO;AAClB,CAAC,UAAU,MAAM,EAAE;AACnB,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC/C,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,IAAI,SAAS,SAAS,CAAC,iBAAiB,EAAE;AAC1C,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AACxD,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACjC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,MAAM,SAAS,CAAC;AACvB,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;AACtE,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;AACxC,QAAQ,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AAClC,QAAQ,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU;AAC7E,cAAc,YAAY;AAC1B,cAAc,UAAU,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;AAChC,cAAc,MAAM,CAAC,iBAAiB;AACtC,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1E,KAAK;AACL,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,oBAAoB,CAAC,oBAAoB,EAAE;AACnD,QAAQ,IAAI,IAAI,CAAC,qBAAqB,KAAK,oBAAoB,EAAE;AACjE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;AAC1D,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,mBAAmB,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,kBAAkB,CAAC,kBAAkB,EAAE;AAC/C,QAAQ,IAAI,IAAI,CAAC,mBAAmB,KAAK,kBAAkB,EAAE;AAC7D,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AACtD,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AACtC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC1C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,EAAE,UAAU,EAAE,SAAS,KAAK;AAC7O,YAAY,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC5D,gBAAgB,OAAO,CAAC,CAAC;AACzB,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxE;AACA,YAAY,IAAI,mBAAmB,EAAE;AACrC,gBAAgB,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE;AACrD,oBAAoB,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,kBAAkB,EAAE;AACpC,gBAAgB,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE;AACpD,oBAAoB,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC5C,oBAAoB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC9C,iBAAiB;AACjB,aAAa;AACb;AACA,YAAY,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,YAAY,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D;AACA,YAAY,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,YAAY,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D;AACA,YAAY,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3G,YAAY,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3G;AACA,YAAY,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;AACzD,kBAAkB,MAAM,CAAC,iBAAiB;AAC1C,kBAAkB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChG,YAAY,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;AACzD,kBAAkB,MAAM,CAAC,iBAAiB;AAC1C,kBAAkB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChG;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAChE,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAChE;AACA,YAAY,IAAI,OAAO,GAAG,KAAK,CAAC;AAChC,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClE,gBAAgB,MAAM,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC;AAC/D,gBAAgB,OAAO,GAAG,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC;AACvD,gBAAgB,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9D,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;AACvC,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjE,gBAAgB,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;AAC7D,gBAAgB,OAAO,GAAG,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC;AACvD,gBAAgB,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,aAAa;AACb,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AACrI,aAAa;AACb;AACA,YAAY,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpE,YAAY,IAAI,WAAW,GAAG,CAAC,CAAC;AAChC;AACA,YAAY,IAAI,OAAO,GAAG,cAAc,CAAC;AACzC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,gBAAgB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7F,gBAAgB,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACpD,gBAAgB,WAAW,IAAI,SAAS,CAAC;AACzC,gBAAgB,OAAO,IAAI,SAAS,CAAC;AACrC,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjC,aAAa;AACb;AACA,YAAY,IAAI,SAAS,GAAG,WAAW,CAAC;AACxC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,gBAAgB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACjG,gBAAgB,MAAM,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,SAAS,IAAI,SAAS,CAAC;AACvC,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjC,aAAa;AACb;AACA,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;AAChD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,kBAAkB;AAC/B,YAAY,OAAO,CAAC,kBAAkB,KAAK,SAAS;AACpD,kBAAkB,IAAI;AACtB,kBAAkB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC/C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC;AACA,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE;AAChC,YAAY,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AACjD,YAAY,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,KAAK;AACxE,gBAAgB,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,KAAK,SAAS;AACnE,oBAAoB,cAAc,CAAC,OAAO;AAC1C,sBAAsB,cAAc,CAAC,IAAI;AACzC,sBAAsB;AACtB,wBAAwB,IAAI,EAAE,WAAW;AACzC,wBAAwB,iBAAiB,EAAE,cAAc,CAAC,IAAI;AAC9D,qBAAqB,CAAC;AACtB,gBAAgB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;AACjD,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI;AACtD;AACA,iBAAiB,CAAC;AAClB,aAAa,CAAC,CAAC;AACf;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/E,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC,SAAS;AACT,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,QAAQ,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,eAAe,MAAM,aAAa,EAAE;AACxG,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC5D,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;AACvE,SAAS;AACT,aAAa;AACb,YAAY,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACzD,YAAY,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,eAAe,EAAE;AACxF,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;AAChG,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzD,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAQ,OAAO,QAAQ,CAAC,OAAO,CAAC;AAChC,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AACnC,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzD,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,QAAQ,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzD,YAAY,OAAO,CAAC,CAAC,CAAC;AACtB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC1C,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE;AAC5B,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AAChF,QAAQ,MAAM,kBAAkB,GAAG;AACnC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,GAAG,CAAC;AACvF,YAAY,KAAK;AACjB,SAAS,CAAC;AACV,QAAQ,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9G,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrF,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnD,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3D,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AAChF,QAAQ,MAAM,kBAAkB,GAAG;AACnC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,GAAG,CAAC;AACvF,YAAY,KAAK;AACjB,SAAS,CAAC;AACV,QAAQ,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9G;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,kBAAkB,EAAE,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE;AAC5F,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxD,QAAQ,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC;AACrC,QAAQ,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAQ,IAAI,QAAQ,CAAC;AACrB,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACtC,YAAY,QAAQ,GAAG,IAAI,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACxC,YAAY,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AAC5C,YAAY,QAAQ,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrE,SAAS;AACT,aAAa;AACb,YAAY,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AACxC,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACnG,QAAQ,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;AACjE,YAAY,OAAO,EAAE,MAAM;AAC3B,gBAAgB,UAAU,CAAC,OAAO,EAAE,CAAC;AACrC,gBAAgB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC1D,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7C,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACtD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAChG,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClD,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC;AACA,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;AACpC,YAAY,MAAM,cAAc,GAAG,CAAC,KAAK,KAAK;AAC9C,gBAAgB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACnD,oBAAoB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC,iBAAiB;AACjB,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACrD,oBAAoB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACtD,iBAAiB,CAAC;AAClB,gBAAgB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC9C,oBAAoB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACxD,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,UAAU;AAC1E,sBAAsB,KAAK,CAAC,OAAO;AACnC,sBAAsB,KAAK,CAAC,OAAO,CAAC;AACpC,gBAAgB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AACvF;AACA,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE;AACA,gBAAgB,IAAI,UAAU,CAAC;AAC/B,gBAAgB,IAAI,SAAS,CAAC;AAC9B,gBAAgB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChF,gBAAgB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjH,gBAAgB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrH,gBAAgB,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;AAC7D,sBAAsB,MAAM,CAAC,iBAAiB;AAC9C,sBAAsB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACpD,yBAAyB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,gBAAgB,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;AAC7D,sBAAsB,MAAM,CAAC,iBAAiB;AAC9C,sBAAsB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACpD,yBAAyB,KAAK,CAAC,CAAC,CAAC;AACjC,4BAA4B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACpE,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACpE,gBAAgB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3E,gBAAgB,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAC5E,gBAAgB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AACzD,oBAAoB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC5E,oBAAoB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AACrF,oBAAoB,UAAU,GAAG;AACjC,wBAAwB,KAAK,EAAE,eAAe;AAC9C,wBAAwB,UAAU,EAAE,eAAe,CAAC,OAAO;AAC3D,8BAA8B,QAAQ,GAAG,QAAQ;AACjD,8BAA8B,QAAQ,GAAG,QAAQ;AACjD,wBAAwB,IAAI,EAAE,eAAe,CAAC,IAAI;AAClD,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,gBAAgB,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;AACxD,oBAAoB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAC3E,oBAAoB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AACrF,oBAAoB,SAAS,GAAG;AAChC,wBAAwB,KAAK,EAAE,cAAc;AAC7C,wBAAwB,UAAU,EAAE,eAAe,CAAC,OAAO;AAC3D,8BAA8B,QAAQ,GAAG,QAAQ;AACjD,8BAA8B,QAAQ,GAAG,QAAQ;AACjD,wBAAwB,IAAI,EAAE,eAAe,CAAC,IAAI;AAClD,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,gBAAgB,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;AACjD,oBAAoB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,UAAU;AAChF,0BAA0B,KAAK,CAAC,OAAO;AACvC,0BAA0B,KAAK,CAAC,OAAO,CAAC;AACxC,oBAAoB,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;AAClD,oBAAoB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC1H,oBAAoB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChD,oBAAoB,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,GAAG,GAAG,MAAM;AAClC,oBAAoB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACvD,wBAAwB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5C,qBAAqB;AACrB,oBAAoB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClD,wBAAwB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AAC5D,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3C,oBAAoB,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC/E,oBAAoB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACnE,oBAAoB,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AACvE,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD,iBAAiB,CAAC;AAClB,gBAAgB,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACxE,gBAAgB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC5D,gBAAgB,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAChE,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACjE,YAAY,MAAM,QAAQ,GAAG;AAC7B,gBAAgB,SAAS,EAAE,IAAI;AAC/B,gBAAgB,UAAU,EAAE,MAAM;AAClC,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAC5E,oBAAoB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACzD,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjD,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU;AACvB,YAAY,OAAO,IAAI,KAAK,QAAQ;AACpC,YAAY,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;AACxC,YAAY,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACrC,QAAQ,IAAI,YAAY,GAAG,CAAC,CAAC;AAC7B,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AAC3C,YAAY,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACzD,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,gBAAgB,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC;AAC1C,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzE,QAAQ,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE;AAC9C,YAAY,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5G,QAAQ,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9G,QAAQ,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE;AAClD;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC3B;AACA,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AACxC,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,YAAY,QAAQ,CAAC,UAAU,EAAE,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE;AACpD,YAAY,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClD,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC7B,KAAK;AACL,IAAI,wBAAwB,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzD,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAQ,OAAO,QAAQ,CAAC,iBAAiB,CAAC;AAC1C,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE;AACvB,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACtE,QAAQ,MAAM,MAAM,GAAG,OAAO,iBAAiB,KAAK,WAAW;AAC/D,cAAc,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpC,cAAc,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;AAClD,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE;AACjC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACpE,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAY,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,YAAY,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;AAChH,YAAY,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAClH,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AAC5H,SAAS;AACT,aAAa;AACb,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC;AAC1B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5D,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACpD,oBAAoB,KAAK,IAAI,UAAU,CAAC;AACxC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;AACtC,iBAAiB;AACjB,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5D,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACjE,oBAAoB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACnH,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,EAAE;AACtD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AAC7H,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,oBAAoB,CAAC,gBAAgB,EAAE;AAC3C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AACjD,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,QAAQ,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5G,QAAQ,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9G,QAAQ,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE;AACjD,YAAY,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE;AAChD,YAAY,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;AAClD,YAAY,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrE,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3F,YAAY,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/C,YAAY,UAAU,IAAI,SAAS,CAAC;AACpC,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,SAAS;AACT,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AAC9D,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;AAC9G,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;AACpB,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5D,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACzE,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,UAAU,EAAE;AAC9D,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACpE,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3D,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,QAAQ,EAAE;AAC5D,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5D,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACnE,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC5C,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,UAAU,EAAE;AAC9D,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9D,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7E,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AAC9C,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACjD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,QAAQ,EAAE;AAC5D,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5E,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAChD,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;AAC/C,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9D,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,kBAAkB,CAAC,OAAO,EAAE;AAChC;AACA,QAAQ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACrC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACnC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC/B,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT;AACA,QAAQ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACrC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnD,YAAY,IAAI,QAAQ,CAAC,OAAO;AAChC,gBAAgB,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;AACjE,gBAAgB,OAAO,SAAS,CAAC;AACjC,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;AACpD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC7B,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;AAC7G,QAAQ,QAAQ,GAAG,KAAK,CAAC;AACzB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;AAC3G,QAAQ,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3D,QAAQ,QAAQ,GAAG,KAAK,CAAC;AACzB,QAAQ,MAAM,WAAW,GAAG,YAAY;AACxC,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC;AAC5E,aAAa,OAAO,EAAE,CAAC;AACvB,QAAQ,QAAQ,GAAG,KAAK,CAAC;AACzB,QAAQ,MAAM,SAAS,GAAG,YAAY;AACtC,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC;AAC5E,aAAa,OAAO,EAAE,CAAC;AACvB,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;AACzB,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjE,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnD,YAAY,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACtC,YAAY,MAAM,GAAG,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,YAAY,MAAM,GAAG,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,YAAY,IAAI,GAAG,IAAI,GAAG,EAAE;AAC5B,gBAAgB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5E,gBAAgB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3E,gBAAgB,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAC5E,gBAAgB,MAAM,aAAa,GAAG,OAAO,eAAe,KAAK,QAAQ;AACzE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;AAC7D,gBAAgB,MAAM,YAAY,GAAG,OAAO,cAAc,KAAK,QAAQ;AACvE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;AAC5D,gBAAgB,IAAI,aAAa;AACjC,oBAAoB,WAAW,CAAC,KAAK,CAAC;AACtC,qBAAqB,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE;AACjE,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7D,iBAAiB;AACjB,qBAAqB,IAAI,YAAY;AACrC,oBAAoB,aAAa,CAAC,KAAK,CAAC;AACxC,qBAAqB,QAAQ,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAC/E,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7D,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC9D,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AAClC,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AACzD,aAAa;AACb,iBAAiB,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE;AAClC,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AACzD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AACzD,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC9E,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5E,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5E,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5E,KAAK;AACL,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAC7C,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAC7C,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,UAAU;AACjF,cAAc,YAAY;AAC1B,cAAc,UAAU,CAAC;AACzB,QAAQ,OAAO,CAAC,SAAS,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC3E,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACxC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;AAChE,gBAAgB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,gBAAgB,MAAM;AACtB,aAAa;AACb,SAAS;AACT,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC/C,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC9B,KAAK;AACL;;ACptBO,MAAM,QAAQ,SAAS,mBAAmB,CAAC;AAClD,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AAC7C,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC;AAC7G,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAClD,QAAQ,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;AACrD,YAAY,WAAW,EAAE,IAAI,CAAC,YAAY;AAC1C,YAAY,kBAAkB,EAAE,KAAK;AACrC,YAAY,UAAU,EAAE,OAAO,CAAC,UAAU;AAC1C,SAAS,CAAC,CAAC;AACX;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1C,YAAY,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM;AAC5F,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtC,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,MAAM,QAAQ,GAAG;AAC7B,gBAAgB,IAAI;AACpB,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,OAAO,EAAE,MAAM;AACnC,wBAAwB,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AAChE,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM;AACjF,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM;AAC9C,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACrC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM;AACjD,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACrC,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AACnC,QAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE;AAC3E,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM;AAChE,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,IAAI;AAChB,YAAY,UAAU,EAAE;AACxB,gBAAgB,OAAO,EAAE,MAAM;AAC/B,oBAAoB,UAAU,CAAC,OAAO,EAAE,CAAC;AACzC,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AAC5D,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;AACxD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAClC,YAAY,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1C,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE;AACvB,QAAQ,IAAI,IAAI,KAAK,EAAE,EAAE;AACzB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAClC,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/D,SAAS;AACT,gBAAgB;AAChB,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE;AACjC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAC5C,SAAS;AACT,QAAQ,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM;AAC/C,YAAY,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAC5C,YAAY,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACpD,SAAS,EAAE,GAAG,CAAC,CAAC;AAChB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAC7C,YAAY,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1C,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC9B,KAAK;AACL;;ACnJA;AACA;AACA;AACA;AAGO,MAAM,QAAQ,CAAC;AACtB,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,aAAa;AAChC,cAAc,IAAI,CAAC,YAAY,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,aAAa;AAChC,cAAc,IAAI,CAAC,YAAY,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,qBAAqB,GAAG;AAChC,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,YAAY;AAC/B,cAAc,IAAI,CAAC,aAAa,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,qBAAqB,GAAG;AAChC,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,YAAY;AAC/B,cAAc,IAAI,CAAC,aAAa,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,cAAc;AACjC,cAAc,IAAI,CAAC,IAAI,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,IAAI;AACvB,cAAc,IAAI,CAAC,cAAc,CAAC;AAClC,KAAK;AACL,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,GAAG,CAAC,EAAE;AAC7D,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC9C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AAC5D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACvC,oBAAoB,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ;AACnE,0BAA0B,KAAK,CAAC,KAAK;AACrC,0BAA0B,KAAK,CAAC,MAAM;AACtC,oBAAoB,cAAc,EAAE,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ;AAC7E,0BAA0B,KAAK,CAAC,MAAM;AACtC,0BAA0B,KAAK,CAAC,KAAK;AACrC,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACnC,KAAK;AACL;;ACrGA;AACA;AACA;AACA;AAKO,MAAM,UAAU,SAAS,mBAAmB,CAAC;AACpD,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,IAAI;AACvB,cAAc,IAAI,CAAC,cAAc,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,cAAc;AACjC,cAAc,IAAI,CAAC,IAAI,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;AACzC,cAAc,CAAC;AACf,cAAc,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7F,kBAAkB,CAAC,CAAC,qBAAqB;AACzC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9F,cAAc,CAAC,CAAC,qBAAqB;AACrC,cAAc,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,qBAAqB,GAAG;AAChC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,qBAAqB,GAAG;AAChC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,qBAAqB;AACxC,cAAc,IAAI,CAAC,WAAW,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,WAAW;AAC9B,cAAc,IAAI,CAAC,qBAAqB,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,qBAAqB;AACxC,cAAc,IAAI,CAAC,WAAW,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC1D,cAAc,IAAI,CAAC,WAAW;AAC9B,cAAc,IAAI,CAAC,qBAAqB,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAY,OAAO,cAAc,CAAC,MAAM,CAAC;AACzC,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,QAAQ,KAAK,WAAW;AACrF,cAAc,cAAc,CAAC,MAAM;AACnC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1B,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,EAAE;AAC/D,YAAY,OAAO,cAAc,CAAC,IAAI,CAAC;AACvC,SAAS;AACT,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE;AACnE,YAAY,OAAO,cAAc,CAAC,GAAG,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,cAAc,CAAC,MAAM,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxC,KAAK;AACL,IAAI,WAAW,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AAC3G,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC;AACnD,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;AACpD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACvE,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC9C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;AACzD,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7C,gBAAgB,kBAAkB;AAClC,gBAAgB,MAAM;AACtB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAClE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,UAAU,GAAG;AAC/B,gBAAgB,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,KAAK;AACjE,oBAAoB,OAAO;AAC3B,wBAAwB,IAAI,EAAE,eAAe,CAAC,IAAI;AAClD,wBAAwB,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI;AACvD,wBAAwB,OAAO,EAAE,eAAe,CAAC,IAAI,YAAY,QAAQ;AACzE,4BAA4B,eAAe,CAAC,OAAO,KAAK,SAAS;AACjE,8BAA8B,eAAe,CAAC,OAAO;AACrD,8BAA8B,IAAI;AAClC,qBAAqB,CAAC;AACtB,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,EAAE,IAAI,CAAC,cAAc;AACzC,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;AACzD,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7C,gBAAgB,UAAU;AAC1B,gBAAgB,kBAAkB;AAClC,gBAAgB,MAAM;AACtB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM;AAC9G,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAY,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACtC,SAAS;AACT,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;AAC7D,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,CAAC;AACvE,QAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtD,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,CAAC;AACtE;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,IAAI,qBAAqB;AAC7C,aAAa,CAAC,OAAO,IAAI,oBAAoB,CAAC,EAAE;AAChD,YAAY,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACxB,QAAQ,IAAI,IAAI,KAAK,EAAE,EAAE;AACzB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtD,YAAY,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,EAAE,EAAE;AACvB,YAAY,EAAE,EAAE,CAAC;AACjB,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;AACpC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACpC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;AAC5C,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACvD,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,yBAAyB,CAAC,KAAK,EAAE;AACrC,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACjD,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACnC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACxH;AACA;AACA;AACA;AACA,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;AAC/D,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC3C,YAAY,IAAI,CAAC,YAAY,UAAU,EAAE;AACzC,gBAAgB,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,OAAO,KAAK;AAC5D,oBAAoB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrD,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,OAAO,UAAU,CAAC,IAAI,CAAC;AACnC,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1D,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;;ACtPA;AACA;AACA;AACA;AAOA,SAAS,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE;AACtC,IAAI,IAAI,YAAY,YAAY,QAAQ,EAAE;AAC1C,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,YAAY,YAAY,UAAU,EAAE;AAC5C,QAAQ,OAAO,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClG,KAAK;AACL,IAAI,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE;AAC9C,IAAI,IAAI,IAAI,YAAY,UAAU,EAAE;AACpC,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/I,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5D,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,MAAM,SAAS,GAAG,KAAK,YAAY,UAAU,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9F,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC;AACzC,kBAAkB,CAAC;AACnB,kBAAkB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAY,SAAS,IAAI,OAAO,CAAC;AACjC;AACA,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE;AACzB,gBAAgB,OAAO,IAAI,IAAI,GAAG,SAAS,CAAC;AAC5C,aAAa;AACb,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;AACrF,KAAK;AACL,CAAC;AACM,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAChD,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,QAAQ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,EAAE,GAAG,aAAa,CAAC,iBAAiB,CAAC;AAC7C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,OAAO,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,aAAa,CAAC,gBAAgB,IAAI,EAAE,EAAE;AAC1E,QAAQ,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC;AACnC,QAAQ,KAAK,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,OAAO,EAAE;AACzC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAChD,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,QAAQ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;AACvD,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAC/C,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC;AAC7E,IAAI,OAAO,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AACM,SAAS,mBAAmB,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE;AAC1E,IAAI,MAAM,WAAW,GAAG,sBAAsB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAC1E,IAAI,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;AACpE,IAAI,IAAI,WAAW,KAAK,oBAAoB,EAAE;AAC9C,QAAQ,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC;AAC3B,QAAQ,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC7D,YAAY,KAAK,IAAI,CAAC,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9E,QAAQ,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,CAAC;AACM,SAAS,uBAAuB,CAAC,SAAS,EAAE;AACnD,IAAI,OAAO,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,QAAQ;AACxD,UAAU,WAAW,CAAC,QAAQ;AAC9B,UAAU,WAAW,CAAC,UAAU,CAAC;AACjC,CAAC;AACM,SAAS,sBAAsB,CAAC,eAAe,EAAE,QAAQ,EAAE;AAClE,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AACpC,UAAU,UAAU,CAAC,eAAe,CAAC;AACrC,UAAU,eAAe,CAAC;AAC1B,CAAC;AACW,MAAC,UAAU,GAAG,CAAC,WAAW,KAAK,WAAW,KAAK,WAAW,CAAC,UAAU;AACjF,MAAM,WAAW,CAAC,QAAQ;AAC1B,MAAM,WAAW,CAAC,WAAW;AACtB,SAAS,gBAAgB,CAAC,IAAI,EAAE;AACvC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,CAAC;AACD,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK;AACnD,IAAI,MAAM,IAAI,GAAG,WAAW,KAAK,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACzF,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AACjC,QAAQ,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,EAAE;AACxD,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,MAAM;AAC5B,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxC,gBAAgB,IAAI,EAAE,IAAI,CAAC,iBAAiB;AAC5C,gBAAgB,OAAO,EAAE,KAAK;AAC9B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC;AAChE,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACvF,QAAQ,IAAI;AACZ,KAAK,CAAC;AACN,CAAC,CAAC;AACK,MAAM,QAAQ,CAAC;AACtB,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,WAAW,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AACnD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;AACnD,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AACtC,YAAY,IAAI,IAAI,YAAY,UAAU,EAAE;AAC5C,gBAAgB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtC,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5F,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;AACjD,KAAK;AACL,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,QAAQ,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjD,QAAQ,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,EAAE;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,IAAI,EAAE;AAChG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACpC,QAAQ,SAAS,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AAClD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7D,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAgB,IAAI,KAAK,YAAY,QAAQ,EAAE;AAC/C,oBAAoB,IAAI,KAAK,KAAK,OAAO,EAAE;AAC3C,wBAAwB,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AACtD,4BAA4B,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7D,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC/D,QAAQ,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AAC9C,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;AACtE,QAAQ,SAAS,uBAAuB,CAAC,MAAM,EAAE;AACjD,YAAY,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAC9E,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrD,gBAAgB,IAAI,KAAK,YAAY,QAAQ,EAAE;AAC/C,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3D,wBAAwB,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5D,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACnD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACxC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AAC9C,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACrC;AACA;AACA;AACA;AACA,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3E,QAAQ,OAAO;AACf,YAAY,IAAI;AAChB,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7B,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;AAC/B,YAAY,WAAW,EAAE,IAAI,CAAC,WAAW;AACzC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACxC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAClD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9I,KAAK;AACL,IAAI,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE;AACpC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAQ,MAAM,MAAM,GAAG,WAAW,KAAK,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AACvF,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE;AAClE,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE;AACtE,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACpC,YAAY,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC;AACjD,YAAY,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,eAAe,KAAK;AACzE,gBAAgB,OAAO;AACvB,oBAAoB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC;AAClH,oBAAoB,OAAO,EAAE,eAAe,CAAC,OAAO;AACpD,iBAAiB,CAAC;AAClB,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI;AAChG,YAAY,cAAc;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpC,SAAS;AACT,aAAa;AACb,YAAY,MAAM,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvG,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;AACnC,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAC5C,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK;AAC9D,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,+BAA+B,GAAG;AACtC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAClC,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAElC;AACT,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD;AACA,YAAY,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAChH,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK;AAC9D,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,QAAQ,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AACtE,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACpD,QAAQ,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/D,QAAQ,IAAI,IAAI,YAAY,QAAQ,EAAE;AACtC,YAAY,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;AAC/D,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;AACjG,SAAS;AACT,QAAQ,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE;AAC/C,QAAQ,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAQ,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,EAAE;AACzC,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,YAAY,MAAM,yBAAyB,GAAG,OAAO;AACrD,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5C,YAAY,IAAI,yBAAyB,EAAE;AAC3C,gBAAgB,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9E,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,WAAW,CAAC,kBAAkB,EAAE,MAAM,EAAE,WAAW,EAAE;AACzD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,OAAO,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAC7E,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAChG,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,QAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAQ,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAQ,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE;AACvC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACxD,QAAQ,IAAI,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAQ,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1D,QAAQ,IAAI,MAAM,YAAY,UAAU,EAAE;AAC1C,YAAY,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACnG,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;AACpE,YAAY,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AAC7D,YAAY,IAAI,cAAc,GAAG,CAAC,CAAC;AACnC,YAAY,MAAM,2BAA2B,GAAG,WAAW,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;AACnG,YAAY,IAAI,OAAO,2BAA2B,KAAK,QAAQ,EAAE;AACjE,gBAAgB,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;AAC/E,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC/D,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,YAAY,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzJ,YAAY,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACtE,YAAY,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/F,YAAY,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAC9D,YAAY,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACnE,gBAAgB,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACnD,aAAa;AACb,YAAY,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAClF,YAAY,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAQ,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1D,QAAQ,IAAI,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpD,QAAQ,IAAI,EAAE,YAAY,YAAY,QAAQ,CAAC,EAAE;AACjD,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,QAAQ,YAAY,CAAC,OAAO,EAAE,CAAC;AAC/B,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,YAAY,OAAO,YAAY,CAAC,IAAI,CAAC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC;AACA,YAAY,IAAI,OAAO,YAAY,QAAQ,EAAE;AAC7C;AACA,gBAAgB,OAAO,YAAY,CAAC,IAAI,CAAC;AACzC,aAAa;AACb;AACA;AACA;AACA,YAAY,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1C;AACA,YAAY,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAChC,YAAY,OAAO,YAAY,CAAC,IAAI,CAAC;AACrC,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;AAChE,QAAQ,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACzD,QAAQ,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1D;AACA,QAAQ,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACtC;AACA,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F;AACA;AACA,QAAQ,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/D,QAAQ,IAAI,OAAO,YAAY,UAAU,EAAE;AAC3C;AACA,YAAY,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9D,gBAAgB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAgB,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;AACzE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChD,gBAAgB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvC,aAAa;AACb,SAAS;AACT,aAAa;AACb;AACA,YAAY,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACzG,YAAY,MAAM,aAAa,GAAG,gBAAgB;AAClD,kBAAkB,OAAO,CAAC,cAAc;AACxC,kBAAkB,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3D,YAAY,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AACzE,SAAS;AACT;AACA,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAY,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,YAAY,CAAC,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AACvF,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;AAC7B,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;AACnD,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAY,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,YAAY,UAAU,CAAC,EAAE;AAC3C,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC1C,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK;AACL;;ACzjBO,MAAM,YAAY,CAAC;AAC1B;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAC9C,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK;AACL;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL,CAAC;AACM,MAAM,WAAW,CAAC;AACzB;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AACtC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;AAC3D,YAAY,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7E,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,CAAC,OAAO,GAAG,MAAM;AAChC,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC;AACjC,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,SAAS,CAAC;AACV,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL,CAAC;AACM,MAAM,WAAW,CAAC;AACzB;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;AACrD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACpD,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACjD,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL,CAAC;AACM,MAAM,WAAW,CAAC;AACzB;AACA;AACA;AACA,IAAI,IAAI,EAAE,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;AACrD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;AACrD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACxC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACpD,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5D,KAAK;AACL;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;AAClD,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,yBAAyB,GAAG;AACpC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC;AACxD,KAAK;AACL;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5D,KAAK;AACL;;ACpqBO,MAAM,mBAAmB,SAAS,mBAAmB,CAAC;AAC7D,IAAI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;AACpC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,WAAW,CAAC,CAAC,EAAE;AACnB,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC/B,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,UAAU,CAAC,CAAC,EAAE;AAClB,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC;AAC3B,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACvC,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,CAAC,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACtC,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC/B,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,CAAC,EAAE;AACjB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,CAAC,CAAC,EAAE;AACd,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK;AACpF,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAChC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK;AACnF,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK;AACpF,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAChC,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK;AAClF,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK;AAC/E,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL;;AC7CO,MAAM,oBAAoB,SAAS,aAAa,CAAC;AACxD,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrC,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,CAAC;AACM,SAAS,mBAAmB,CAAC,SAAS,EAAE;AAC/C,IAAI,QAAQ,SAAS;AACrB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,QAAQ,CAAC;AAC5B,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,MAAM,CAAC;AAC1B,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,QAAQ,CAAC;AAC5B,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,KAAK;AACL,CAAC;AACM,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AAC9C,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,MAAM,CAAC;AAC1B,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,QAAQ,CAAC;AAC5B,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL,CAAC;AACD,MAAM,uBAAuB,GAAG;AAChC,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,IAAI,EAAE,YAAY;AACtB,CAAC,CAAC;AACF,MAAM,YAAY,GAAG;AACrB,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,IAAI,EAAE,YAAY;AACtB,CAAC,CAAC;AACF,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAC3B,MAAM,UAAU,SAAS,mBAAmB,CAAC;AACpD,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAClC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACjF,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE;AACzD,YAAY,WAAW,EAAE,MAAM,SAAS;AACxC,YAAY,UAAU,EAAE,CAAC,CAAC,KAAK;AAC/B,gBAAgB,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,KAAK,CAAC,EAAE;AAC7D,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACvD,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACzD,gBAAgB,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AACjD,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACrE,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAChD,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/C,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3G;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,QAAQ,KAAK,IAAI,EAAE;AAChE;AACA,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC;AACtE,oBAAoB,WAAW,EAAE,CAAC;AAClC,oBAAoB,QAAQ,EAAE,QAAQ;AACtC,iBAAiB,CAAC,CAAC;AACnB;AACA;AACA;AACA;AACA,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACnE,gBAAgB,IAAI,oBAAoB,CAAC,gBAAgB,EAAE;AAC3D,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE;AACzE,oBAAoB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AACzD,wBAAwB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAChD,wBAAwB,OAAO;AAC/B,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;AACvE,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAgB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzC,oBAAoB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvE,oBAAoB,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,sBAAsB,CAAC;AAC1E,oBAAoB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxE,oBAAoB,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,uBAAuB,CAAC;AAC5E,oBAAoB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC3C,oBAAoB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACxE,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC9D,oBAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5D,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,gBAAgB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACvC,aAAa;AACb,YAAY,WAAW,EAAE,MAAM;AAC/B,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxC,aAAa;AACb,YAAY,SAAS,EAAE,MAAM;AAC7B,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxC,aAAa;AACb,YAAY,MAAM,EAAE,CAAC,CAAC,KAAK;AAC3B,gBAAgB,CAAC,CAAC,cAAc,EAAE,CAAC;AACnC,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1C,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxC,gBAAgB,IAAI,KAAK,EAAE;AAC3B;AACA;AACA,oBAAoB,CAAC,CAAC,eAAe,EAAE,CAAC;AACxC,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3E,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,cAAc,CAAC,mBAAmB,EAAE;AACxC,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAChC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;AACA;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACtD,QAAQ,OAAO,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC;AACnD,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;AAC3C,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,KAAK,GAAG,oBAAoB,CAAC;AACtD,QAAQ,MAAM,QAAQ,GAAG,MAAM,GAAG,qBAAqB,CAAC;AACxD,QAAQ,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;AAC3C,QAAQ,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC;AAC7C,QAAQ,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,CAAC;AACzC,QAAQ,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC;AAC/C,QAAQ,MAAM,UAAU,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC;AAChD,QAAQ,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC;AAC9C,QAAQ,MAAM,QAAQ,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC;AAC5C,QAAQ,MAAM,WAAW,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAClD,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;AACrB,QAAQ,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;AAC/J,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/C,YAAY,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAC1D,SAAS;AACT,aAAa;AACb,YAAY,IAAI,UAAU,IAAI,SAAS,EAAE;AACzC,gBAAgB,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAClE,aAAa;AACb,YAAY,IAAI,QAAQ,IAAI,WAAW,EAAE;AACzC,gBAAgB,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AACpE,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa,IAAI,SAAS,EAAE;AAC5B,YAAY,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa,IAAI,QAAQ,EAAE;AAC3B,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,aAAa,IAAI,WAAW,EAAE;AAC9B,YAAY,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAChD,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AAClD,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACpD,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACtD,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,EAAE,QAAQ,CAAC,CAAC;AACpF,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,iCAAiC,EAAE,QAAQ,CAAC,CAAC;AACtF,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACxE,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAC1E,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACtE,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AAC5E,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,uBAAuB,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AACxD,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,MAAM,qBAAqB,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC;AAC9L,QAAQ,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,KAAK,YAAY,CAAC;AACzE,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,OAAO,6BAA6B,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAChH,SAAS;AACT,QAAQ,OAAO,yBAAyB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACxG,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACpC,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACzD,YAAY,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAC3C,YAAY,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAC5C,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACzD,SAAS;AACT,KAAK;AACL,CAAC;AACD,UAAU,CAAC,aAAa,GAAG,uCAAuC,CAAC;AAC5D,SAAS,6BAA6B,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3F,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC;AACjC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC;AAClC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE;AACnD,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,SAAS,EAAE;AAC1D,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE;AAClD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,SAAS,EAAE;AAC3D,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACM,SAAS,yBAAyB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AACvF,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE;AAClD,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,SAAS,EAAE;AAC3D,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE;AACjD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE;AAC7D,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB;;ACjTO,MAAM,gBAAgB,SAAS,mBAAmB,CAAC;AAC1D,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,mBAAmB,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;AACvD,YAAY,mBAAmB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC7E,YAAY,iBAAiB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK;AACpD,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,gBAAgB;AAC1D,qBAAqB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,KAAK,QAAQ,CAAC,EAAE;AAClE,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;AAC5C,gBAAgB,IAAI,CAAC,IAAI;AACzB,oBAAoB,KAAK,CAAC,QAAQ;AAClC,oBAAoB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7D,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9D,oBAAoB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;AACxD,wBAAwB,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACnD;AACA,4BAA4B,OAAO,KAAK,CAAC;AACzC,yBAAyB;AACzB,wBAAwB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACnD;AACA,4BAA4B,OAAO,KAAK,CAAC;AACzC,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,MAAM,sCAAsC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AACjG,wBAAwB,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACvD,oBAAoB,OAAO,CAAC,sCAAsC,CAAC;AACnE,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChF,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;AACrD,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACzC,aAAa,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,QAAQ,IAAI,IAAI,CAAC,KAAK;AACtB,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC7E;AACA;AACA;AACA,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,SAAS,CAAC;AACtB,QAAQ,QAAQ,KAAK,CAAC,GAAG,CAAC,QAAQ;AAClC,YAAY,KAAK,kBAAkB;AACnC,gBAAgB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1D,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,oBAAoB,IAAI,QAAQ,EAAE;AAClC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnF,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1C,gBAAgB,MAAM;AACtB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,EAAE;AAChF,oBAAoB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1E,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9D,oBAAoB,KAAK;AACzB,oBAAoB,kBAAkB,EAAE,IAAI;AAC5C,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,MAAM;AACtB,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AACvD,YAAY,MAAM,UAAU,GAAG,IAAI,mBAAmB,EAAE,CAAC;AACzD,YAAY,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClK,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC;AAC/C,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B;AACA,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,kBAAkB,EAAE;AAChE,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1J,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAClC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;;ACvHO,MAAM,WAAW,SAAS,mBAAmB,CAAC;AACrD,IAAI,WAAW,CAAC,EAAE,EAAE;AACpB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACtD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC/D,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,KAAK;AACtG,YAAY,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AACnE,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,OAAO,GAAG;AAC5B,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACjD,gBAAgB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAClD,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,uBAAuB,CAAC,KAAK,GAAG;AACjD,gBAAgB,OAAO,EAAE,MAAM;AAC/B,oBAAoB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClD,wBAAwB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AAC5D,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1C,gBAAgB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACpD,aAAa;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChD,YAAY,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE;AACpC,gBAAgB,KAAK,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC;AAC1D,gBAAgB,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,gBAAgB,IAAI,CAAC,OAAO,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC;AACjG,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM;AAC5D,YAAY,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;AACnD,YAAY,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC1C,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL;;ACxDA,MAAM,cAAc,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;AACjD,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAClE,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;AACjI,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,MAAM;AAC3B,gBAAgB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACtE,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,CAAC;AACM,MAAM,GAAG,SAAS,mBAAmB,CAAC;AAC7C,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;AACxC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC5C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AACxC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AACvC,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;AACxD,QAAQ,MAAM,WAAW,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACrG,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxD,YAAY,mBAAmB,EAAE,CAAC,QAAQ,CAAC;AAC3C,YAAY,iBAAiB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK;AACpD,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACvC,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;AAC5C,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE;AAC9D,oBAAoB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;AAC7C,wBAAwB,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;AACxD;AACA,wBAAwB,OAAO,KAAK,CAAC;AACrC,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC;AAC1D,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAClF,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;AACnE,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AACpH,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAS,CAAC,EAAE,WAAW,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,KAAK,KAAK;AACtF,YAAY,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACxC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AAC9C,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC1D,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;;ACxFO,SAAS,aAAa,CAAC,YAAY,EAAE,YAAY,EAAE;AAC1D;AACA,IAAI,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC3C,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAC5C,IAAI,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,IAAI,UAAU,CAAC,MAAM;AACrB,QAAQ,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAClD,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;AAC9B,KAAK,EAAE,CAAC,CAAC,CAAC;AACV;;ACLO,MAAM,gBAAgB,SAAS,WAAW,CAAC;AAClD,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC1C,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAClE,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK;AAC/E,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACvC,aAAa;AACb,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAClB,KAAK;AACL,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC7E,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,CAAC,SAAS,EAAE;AACvB,QAAQ,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;AACpD,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;AACxH,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvD,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,oDAAoD,CAAC,CAAC;AACrG,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;AACxF,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/D,YAAY,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC;AACzD,YAAY,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,YAAY,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;AACnD,YAAY,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/C,YAAY,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;AACjD,YAAY,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;AACnD,YAAY,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;AACrD,YAAY,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACrD,YAAY,YAAY,CAAC,WAAW,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,YAAY,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,MAAM;AAC3B,gBAAgB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACtE,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL;;AC/CO,MAAM,aAAa,SAAS,mBAAmB,CAAC;AACvD,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,gBAAgB,CAAC;AACnD,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AACvC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM;AACjH,YAAY,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxD,YAAY,mBAAmB,EAAE,CAAC,QAAQ,CAAC;AAC3C,YAAY,iBAAiB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK;AACpD,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;AAC5C,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE;AAC9D,oBAAoB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;AAC7C,wBAAwB,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;AACxD;AACA,wBAAwB,OAAO,KAAK,CAAC;AACrC,qBAAqB;AACrB;AACA,oBAAoB,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC;AACxH,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACtF,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;AACnE,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AACpE,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AAC9C,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7B,KAAK;AACL;;AC5CO,MAAM,aAAa,SAAS,mBAAmB,CAAC;AACvD,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC;AACzD,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC7C,KAAK;AACL,IAAI,sBAAsB,CAAC,OAAO,EAAE;AACpC,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;AAC3C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AACvC,YAAY,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5D,YAAY,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AACxC,SAAS;AACT,KAAK;AACL,IAAI,qBAAqB,CAAC,OAAO,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AACtC,YAAY,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AACvC,SAAS;AACT,KAAK;AACL,IAAI,uBAAuB,CAAC,OAAO,EAAE;AACrC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACrC,YAAY,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1D,YAAY,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AACtC,SAAS;AACT,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,EAAE;AAClB,QAAQ,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACvC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE;AACzD,KAAK;AACL,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACzD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,4BAA4B,CAAC;AAC/D,QAAQ,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC;AACpH,QAAQ,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,yBAAyB,CAAC;AACzE,QAAQ,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,wBAAwB,CAAC;AACvE,QAAQ,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjE,QAAQ,IAAI,CAAC,mBAAmB,CAAC,SAAS,GAAG,uBAAuB,CAAC;AACrE,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,gBAAgB,CAAC;AACvD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1E,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;AAC/D,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC5C,gBAAgB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC7E,aAAa;AACb,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK;AAClD,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC5C,gBAAgB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC7E,aAAa;AACb,SAAS,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AAC/J,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACxC,gBAAgB,WAAW,EAAE,KAAK;AAClC,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjC,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AACjD,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,gBAAgB,KAAK,EAAE,KAAK,CAAC,WAAW;AACxC,gBAAgB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AACvC,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAC5D,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,KAAK,EAAE;AACjF,gBAAgB,IAAI,EAAE,cAAc;AACpC,aAAa,CAAC,CAAC,CAAC;AAChB,SAAS,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAK,KAAK;AACtF,YAAY,MAAM,uBAAuB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACzF,YAAY,IAAI,uBAAuB;AACvC,gBAAgB,KAAK,CAAC,QAAQ;AAC9B,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7D,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvC,gBAAgB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC3E,gBAAgB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACvG,gBAAgB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE;AAC3D,oBAAoB,CAAC,EAAE,IAAI,GAAG,QAAQ,GAAG,EAAE;AAC3C,oBAAoB,CAAC,EAAE,GAAG,GAAG,OAAO,GAAG,EAAE;AACzC,iBAAiB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,aAAa;AACb,SAAS,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,KAAK,KAAK;AAC7E,YAAY,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACxC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACnD,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,aAAa;AACb,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,SAAS,CAAC,cAAc,EAAE;AAC9B;AACA,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACnD,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,IAAI,GAAG;AACpB,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AACxC,YAAY,GAAG;AACf,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;AACpC,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,EAAE,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9E,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAQ,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;AAClD,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7B,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,QAAQ,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACnC,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAClE,YAAY,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAC/C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/C,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE;AACtE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;AAC9E,YAAY,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,QAAQ,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AAC9E,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACrE,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AACrC,YAAY,MAAM,uBAAuB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACzF,YAAY,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;AACtF,gBAAgB,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;AAChC,YAAY,IAAI,uBAAuB;AACvC,gBAAgB,CAAC,sBAAsB;AACvC,gBAAgB,KAAK,CAAC,QAAQ,EAAE;AAChC,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvC,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxE,gBAAgB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC1E,gBAAgB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACvG,gBAAgB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtD,oBAAoB,CAAC,EAAE,IAAI,GAAG,QAAQ;AACtC,oBAAoB,CAAC,EAAE,GAAG,GAAG,OAAO;AACpC,iBAAiB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACxD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE;AAClD,gBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClD,aAAa;AACb,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AAClC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,gBAAgB,KAAK,EAAE,KAAK,CAAC,WAAW;AACxC,gBAAgB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC;AAClE,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAC7C,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACnG,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,QAAQ,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACvD,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC;AACjC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACvB,KAAK;AACL;;AC5OO,MAAM,oBAAoB,SAAS,aAAa,CAAC;AACxD,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAChC,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACtC,KAAK;AACL,CAAC;AACM,MAAM,qBAAqB,SAAS,oBAAoB,CAAC;AAChE,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,KAAK;AACL,CAAC;AACM,MAAM,4BAA4B,CAAC;AAC1C,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAC3C,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,KAAK;AACL,CAAC;AACM,MAAM,uBAAuB,SAAS,mBAAmB,CAAC;AACjE,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,KAAK,gBAAgB,IAAI,KAAK,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AACrC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;AACpE,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;AAClE,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc,CAAC;AAChE,oBAAoB,KAAK;AACzB,oBAAoB,QAAQ;AAC5B,oBAAoB,MAAM;AAC1B,oBAAoB,OAAO;AAC3B,oBAAoB,QAAQ;AAC5B,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,MAAM;AACtB,YAAY,KAAK,UAAU;AAC3B,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5E,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK;AACrE,sBAAsB,CAAC,QAAQ,CAAC;AAChC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpE,gBAAgB,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC3E,gBAAgB,MAAM;AACtB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5E,gBAAgB,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;AACzE,gBAAgB,MAAM;AACtB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACtD,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACnC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AAC9D,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACzD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;AAC9C,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1E,QAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACpF,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AACnF,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,KAAK,KAAK;AAChJ,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK;AAC3D,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AACjD,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/E,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM;AACnD,YAAY,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5D,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM;AAClD;AACA,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AAC/D,YAAY,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/E,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAC5D,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAC1E,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,KAAK,EAAE;AACjF,gBAAgB,IAAI,EAAE,SAAS;AAC/B,aAAa,CAAC,CAAC,CAAC;AAChB,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAC3J,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACvC,YAAY,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChD,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACvC,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,yBAAyB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE;AAC7H,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjC,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACnD,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACtC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACrD,SAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,+BAA+B,EAAE;AACnE,YAAY,IAAI,CAAC,mBAAmB;AACpC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,+BAA+B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvF,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC1D,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1C,gBAAgB,YAAY,EAAE,IAAI,CAAC,IAAI;AACvC,gBAAgB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACxC,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,8BAA8B,EAAE;AAClE,YAAY,IAAI,CAAC,kBAAkB;AACnC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtF,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzD,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACzC,gBAAgB,YAAY,EAAE,IAAI,CAAC,IAAI;AACvC,gBAAgB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACxC,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACtF,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gCAAgC,EAAE;AACpE,YAAY,IAAI,CAAC,oBAAoB;AACrC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gCAAgC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxF,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3C,gBAAgB,YAAY,EAAE,IAAI,CAAC,IAAI;AACvC,gBAAgB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACxC,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC1F,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AAC5C,YAAY,UAAU,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AAC3F,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE;AACvB,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACnC,YAAY,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChC,YAAY,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,QAAQ,IAAI,eAAe,CAAC;AAC5B,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAY,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC;AACxC,SAAS;AACT,aAAa,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACxC,YAAY,eAAe,GAAG,CAAC,CAAC;AAChC,SAAS;AACT,aAAa;AACb,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzD,QAAQ,IAAI,eAAe,CAAC;AAC5B,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAY,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC;AACxC,SAAS;AACT,aAAa,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACxC,YAAY,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,SAAS;AACT,aAAa;AACb,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB;AACA,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB;AACA,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACjF,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;AAC7C,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChD,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/C,SAAS;AACT,QAAQ,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD;AACA,QAAQ,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE;AACjD,YAAY,aAAa,EAAE,OAAO,CAAC,aAAa;AAChD,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;AAC9C,YAAY,aAAa,EAAE,aAAa;AACxC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACzC,YAAY,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACpC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,aAAa,EAAE,OAAO,GAAG;AACzC,QAAQ,aAAa,EAAE,KAAK;AAC5B,KAAK,EAAE;AACP,QAAQ,MAAM,EAAE,GAAG,OAAO,aAAa,KAAK,QAAQ;AACpD,cAAc,aAAa;AAC3B,cAAc,aAAa,CAAC,EAAE,CAAC;AAC/B,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5E,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC;AACA,YAAY,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,YAAY,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;AAC7C,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpC,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvD,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;AAC3C,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,SAAS,CAAC,aAAa,EAAE,KAAK,GAAG,KAAK,EAAE;AAC5C,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;AACvD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AAC5C,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AACnE,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,aAAa,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1D,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC9B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE;AACrF,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAChE,SAAS;AACT,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;AACjC,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;AAC1D,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AACtC,gBAAgB,aAAa,EAAE,OAAO,CAAC,aAAa;AACpD,gBAAgB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;AAC9D,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3D,YAAY,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACpC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AAC/C,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnD,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE;AACtF,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAQ,MAAM,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACpC,YAAY,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,gBAAgB,EAAE;AAC9B;AACA,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACrD,YAAY,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACpD,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAC9C,gBAAgB,KAAK;AACrB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnD,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1D,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;AACvE,YAAY,SAAS,CAAC,IAAI,CAAC;AAC3B,gBAAgB,YAAY,EAAE,IAAI,CAAC,IAAI;AACvC,gBAAgB,KAAK,EAAE,IAAI,CAAC,UAAU;AACtC,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACvC,YAAY,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM;AACzE,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpE,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AACtC,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9E,YAAY,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5C,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClG,YAAY,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACvC,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AACtC,SAAS;AACT,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC/C;AACA,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE;AAClD,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;AACxD,gBAAgB,WAAW,EAAE,KAAK;AAClC,gBAAgB,MAAM;AACtB,gBAAgB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,gBAAgB,QAAQ;AACxB,gBAAgB,OAAO,EAAE,YAAY;AACrC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;AAClD,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,EAAE;AAC9C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,SAAS,OAAO,GAAG;AAC3B,YAAY,QAAQ,IAAI;AACxB,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,cAAc,CAAC;AAC9E,gBAAgB,KAAK,SAAS;AAC9B,oBAAoB,OAAO,SAAS,CAAC;AACrC,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AACjF,QAAQ,MAAM,aAAa,GAAG,IAAI,qBAAqB,CAAC;AACxD,YAAY,WAAW,EAAE,KAAK;AAC9B,YAAY,QAAQ;AACpB,YAAY,KAAK;AACjB,YAAY,OAAO,EAAE,MAAM,YAAY,EAAE;AACzC,YAAY,IAAI,EAAE,OAAO,EAAE;AAC3B,YAAY,KAAK,EAAE,IAAI,CAAC,UAAU;AAClC,YAAY,GAAG,EAAE,IAAI,CAAC,IAAI;AAC1B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7C,QAAQ,IAAI,aAAa,CAAC,gBAAgB,EAAE;AAC5C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;AACpC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtD,YAAY,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACvC;AACA,gBAAgB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AACzC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAClC,oBAAoB,MAAM,EAAE,QAAQ;AACpC,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,KAAK;AACzB,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAClF,YAAY,IAAI,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;AAChE,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AAC9C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC;AACpD,YAAY,IAAI,WAAW,IAAI,CAAC,QAAQ,EAAE;AAC1C,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrE,gBAAgB,IAAI,QAAQ,KAAK,KAAK,EAAE;AACxC,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,gBAAgB,MAAM,EAAE,QAAQ;AAChC,gBAAgB,OAAO,EAAE,IAAI,CAAC,OAAO;AACrC,gBAAgB,MAAM,EAAE,IAAI,CAAC,OAAO;AACpC,gBAAgB,KAAK;AACrB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC;AAC1D,gBAAgB,WAAW,EAAE,KAAK;AAClC,gBAAgB,QAAQ;AACxB,gBAAgB,KAAK;AACrB,gBAAgB,OAAO,EAAE,MAAM,YAAY,EAAE;AAC7C,gBAAgB,KAAK,EAAE,IAAI,CAAC,UAAU;AACtC,gBAAgB,GAAG,EAAE,IAAI,CAAC,IAAI;AAC9B,aAAa,CAAC,CAAC,CAAC;AAChB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACvF,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtI,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACzC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACxC,KAAK;AACL;;AChmBO,MAAM,SAAS,SAAS,mBAAmB,CAAC;AACnD,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACtC,KAAK;AACL,IAAI,WAAW,CAAC,aAAa,EAAE,eAAe,GAAG,KAAK,EAAE;AACxD,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AACtC,QAAQ,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK;AACzE,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;AACxD,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL;;AChDA,MAAMA,cAAY,GAAG,yBAAyB,EAAE,CAAC;AAC1C,SAAS,QAAQ,CAAC,SAAS,EAAE;AACpC,IAAI,QAAQ,SAAS;AACrB,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,MAAM,CAAC;AAC1B,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,QAAQ,CAAC;AAC5B,QAAQ,KAAK,QAAQ,CAAC;AACtB,QAAQ;AACR,YAAY,OAAO,QAAQ,CAAC;AAC5B,KAAK;AACL,CAAC;AACM,MAAM,QAAQ,SAAS,SAAS,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;AACrC,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC1E,QAAQ,IAAI,CAAC,GAAG,GAAGA,cAAY,CAAC,IAAI,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC7C,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAC/D,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3C,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC1C,QAAQ,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AACxG,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AAChD,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM;AAClD,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChH,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM;AAC5C,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;AACjD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM;AACrF,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;AACjD,SAAS,CAAC,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,MAAM;AACxD,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAC3C,SAAS,CAAC,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9E,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AACvC,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,KAAK,CAAC;AACvD,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;AAC1C,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,yBAAyB,GAAG;AACpC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;AACtD,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;AAC5C,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC5G,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACzC,YAAY,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChD,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACpE,QAAQ,IAAI,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE;AAC9F,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACtC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACjC,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1C,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AACpH,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7D,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AACnF,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AACzF,KAAK;AACL,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/C,SAAS;AACT,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,QAAQ,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AACtG,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,QAAQ,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AAC1G,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;AACvC,QAAQ,MAAM,SAAS,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,GAAG,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1I,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACzD,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAC1C,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACzC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;;AC3MO,MAAM,cAAc,SAAS,aAAa,CAAC;AAClD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE,CAAC;AAChB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACO,MAAM,YAAY,SAAS,mBAAmB,CAAC;AACtD,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE;AACpB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC9D,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,OAAO,EAAE,CAAC;AACnD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACtE,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;AACpD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACvE,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACzD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACjE,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK;AAC7D,YAAY,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;AAC9C,SAAS,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAC9C,YAAY,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC5C,SAAS,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAK,KAAK;AAClD,YAAY,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;AAC9C,SAAS,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAK,KAAK;AAClD,YAAY,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AACtC,YAAY,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;AACxC,SAAS,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACjS,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK;AAC3F,YAAY,KAAK,CAAC,MAAM,CAAC;AACzB,gBAAgB,MAAM,EAAE,UAAU;AAClC,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,UAAU,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,gBAAgB,CAAC,UAAU,EAAE;AACjC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,KAAK;AACL;;AC9EO,MAAM,qBAAqB,SAAS,YAAY,CAAC;AACxD;AACA,IAAI,WAAW,CAAC,EAAE,EAAE;AACpB,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,+BAA+B,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7D,QAAQ,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC;AACzF;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,CAAC;AACnD,YAAY,MAAM,EAAE,IAAI;AACxB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvH,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;;ACtBO,MAAM,oBAAoB,SAAS,qBAAqB,CAAC;AAChE,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE;AACpB,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,OAAO,CAAC;AACjD,YAAY,MAAM,EAAE,IAAI;AACxB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACrE,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAChG,KAAK;AACL,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC1F,KAAK;AACL,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1F,KAAK;AACL;;ACvBO,MAAM,aAAa,SAAS,mBAAmB,CAAC;AACvD,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;AAClF,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;AACpC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC7C,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5C,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC3C,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChD,QAAQ,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM;AACpE,YAAY,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,SAAS,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM;AACzC,YAAY,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACpC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;AACvB,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtD,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;AAClC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtM;AACA;AACA;AACA;AACA,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACrD,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACjD,gBAAgB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChD,aAAa;AACb,SAAS;AACT;AACA,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACzG,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACrI,QAAQ,OAAO;AACf,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE;AACvB,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS;AACrC,YAAY,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS;AACvE,SAAS,CAAC;AACV,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3B,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAC3E,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;;ACrFO,MAAM,aAAa,SAAS,aAAa,CAAC;AACjD,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3C,QAAQ,MAAM,eAAe,GAAG,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACrE,QAAQ,OAAO,UAAU,GAAG,eAAe,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3C,QAAQ,MAAM,eAAe,GAAG,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACrE,QAAQ,OAAO,UAAU,GAAG,eAAe,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,gBAAgB;AAC7B,YAAY,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACzE,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;AACxD,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE;AAC1F,QAAQ,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AAC/C,QAAQ,IAAI,CAAC,0BAA0B,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;AAC/E,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;AACpC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACzD,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AACtC,QAAQ,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;AAC9C,QAAQ,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACxC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,KAAK;AACvE,YAAY,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AACxC,YAAY,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,KAAK;AAChD,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACzD,SAAS,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK;AACtE,YAAY,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,SAAS,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK;AACtE,YAAY,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,eAAe,KAAK;AACjH,YAAY,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAChD,gBAAgB,UAAU,EAAE,eAAe;AAC3C,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK;AAC7C,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,SAAS,EAAE;AAC7B,gBAAgB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACtD,aAAa;AACb,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,UAAU,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC3C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AACpC,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAgB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE;AAC3B,gBAAgB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM;AACnD,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AAClF,aAAa,EAAE,GAAG,CAAC,CAAC;AACpB,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC9C,QAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC3E,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC;AACpC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACrC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC/B,YAAY,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AACtC,SAAS;AACT,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,QAAQ,IAAI,OAAO,UAAU,CAAC,eAAe,KAAK,QAAQ,EAAE;AAC5D,YAAY,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,OAAO,UAAU,CAAC,eAAe,KAAK,QAAQ,EAAE;AAC5D,YAAY,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACpD,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5F,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9F,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/F,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnG,QAAQ,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE;AACxD,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACpC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAChI,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC;AAC9C,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,CAAC,MAAM,KAAK;AAChC,gBAAgB,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3B,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChG,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAClG,aAAa;AACb,YAAY,OAAO,EAAE,MAAM;AAC3B,gBAAgB,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3B,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AACvF,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AACzF,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL;;AC7LO,MAAM,sBAAsB,SAAS,aAAa,CAAC;AAC1D,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;AAC/F,QAAQ,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAC3B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,MAAM,eAAe,SAAS,WAAW,CAAC;AACtE,YAAY,OAAO,GAAG;AACtB,gBAAgB,sBAAsB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACzH,gBAAgB,OAAO;AACvB,oBAAoB,OAAO,EAAE,MAAM;AACnC,wBAAwB,sBAAsB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/F,qBAAqB;AACrB,iBAAiB,CAAC;AAClB,aAAa;AACb,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;AACnD,YAAY,mBAAmB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAClD,YAAY,YAAY,EAAE;AAC1B,gBAAgB,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;AACjE,aAAa;AACb,YAAY,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC1C,gBAAgB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;AAC3C,gBAAgB,IAAI,IAAI,EAAE;AAC1B,oBAAoB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;AAC/C,wBAAwB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1D,wBAAwB,OAAO,IAAI,CAAC;AACpC,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE;AAC1D,oBAAoB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;AAChE,wBAAwB,WAAW,EAAE,KAAK;AAC1C,wBAAwB,OAAO,EAAE,WAAW;AAC5C,wBAAwB,KAAK,EAAE,IAAI;AACnC,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AACtG,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvD;AACA;AACA,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACtJ,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO;AACzC,aAAa,YAAY,CAAC;AAC1B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AACpC,QAAQ,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B;AACA,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtJ,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;AAC9C,QAAQ,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC3D,QAAQ,IAAI,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxD,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE;AACnE,YAAY,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/C,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACvE,YAAY,IAAI,SAAS,GAAG,OAAO,EAAE;AACrC,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa;AACb,YAAY,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,SAAS;AACT,QAAQ,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnD,KAAK;AACL;;ACzFO,MAAM,oBAAoB,SAAS,YAAY,CAAC;AACvD,IAAI,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE;AAC3B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,+BAA+B,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7D,QAAQ,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC;AACzF,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvH,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnC,SAAS;AACT,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;;ACnBO,MAAM,aAAa,SAAS,aAAa,CAAC;AACjD,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;AAC9D,cAAc,IAAI,CAAC,aAAa,EAAE;AAClC,cAAc,IAAI,CAAC,aAAa,CAAC;AACjC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,sBAAsB,EAAE;AACnD,YAAY,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AAChD,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU;AAChE,cAAc,IAAI,CAAC,cAAc,EAAE;AACnC,cAAc,IAAI,CAAC,cAAc,CAAC;AAClC,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,uBAAuB,EAAE;AACrD,YAAY,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC;AAClD,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU;AAChE,cAAc,IAAI,CAAC,cAAc,EAAE;AACnC,cAAc,IAAI,CAAC,cAAc,CAAC;AAClC,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,uBAAuB,EAAE;AACrD,YAAY,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC;AAClD,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;AAC9D,cAAc,IAAI,CAAC,aAAa,EAAE;AAClC,cAAc,IAAI,CAAC,aAAa,CAAC;AACjC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,sBAAsB,EAAE;AACnD,YAAY,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AAChD,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjC,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;AAC7C,QAAQ,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9D,QAAQ,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/D,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrD,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACtD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,QAAQ,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;AAC1G,YAAY,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,QAAQ,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;AAC1G,YAAY,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,QAAQ,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE;AAC3G,YAAY,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,QAAQ,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE;AAC3G,YAAY,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,KAAK;AACvE,YAAY,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AACxC,YAAY,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM;AAC1C,YAAY,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,KAAK;AAC/D,YAAY,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;AACtD,gBAAgB,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU,EAAE;AAC1D,gBAAgB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;AACxD,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ;AACvD,gBAAgB,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,EAAE;AAC3D,gBAAgB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC;AAC1D,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;AACtD,gBAAgB,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU,EAAE;AAC1D,gBAAgB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;AACxD,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ;AACvD,gBAAgB,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,EAAE;AAC3D,gBAAgB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC;AAC1D,aAAa;AACb,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,KAAK;AAChD,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnC,gBAAgB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpC,gBAAgB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClC,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,UAAU,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAI,UAAU,CAAC,aAAa,EAAE;AACtC,YAAY,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC;AAC3D,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,aAAa,EAAE;AACtC,YAAY,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC;AAC3D,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;AACrC,YAAY,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;AACrC,YAAY,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;AAC7C,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,QAAQ,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE;AACvD,YAAY,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAC9C,YAAY,YAAY,EAAE,IAAI,CAAC,sBAAsB;AACrD,YAAY,YAAY,EAAE,IAAI,CAAC,sBAAsB;AACrD,YAAY,aAAa,EAAE,IAAI,CAAC,uBAAuB;AACvD,YAAY,aAAa,EAAE,IAAI,CAAC,uBAAuB;AACvD,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AACrC,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,gBAAgB,GAAG,SAAS,GAAG,KAAK,CAAC;AACzF,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC;AACpE,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjR,KAAK;AACL;;ACnJA;AACA,MAAM,uBAAuB,GAAG,2CAA2C,CAAC;AACrE,MAAM,yBAAyB,SAAS,oBAAoB,CAAC;AACpE,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1C,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC9B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;AAC9C,cAAc,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACvC,cAAc,MAAM,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnG,YAAY,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;AAC5G,YAAY,aAAa,EAAE,IAAI;AAC/B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AACvC,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;AAC7C,YAAY,EAAE,EAAE;AAChB,gBAAgB,KAAK;AACrB,gBAAgB,QAAQ,EAAE,OAAO,CAAC,KAAK;AACvC,sBAAsB,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ;AACvF,sBAAsB,QAAQ;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AAC3C;AACA,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAChC,YAAY,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAC/C,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL;;ACzEA,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAC/C,MAAM,mCAAmC,GAAG,GAAG,CAAC;AACzC,MAAM,kBAAkB,SAAS,aAAa,CAAC;AACtD,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE;AACvC,QAAQ,KAAK,CAAC,EAAE,EAAE,mBAAmB,EAAE;AACvC,YAAY,aAAa,EAAE,mCAAmC;AAC9D,YAAY,YAAY,EAAE,kCAAkC;AAC5D,SAAS,EAAE,IAAI,yBAAyB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAChC,YAAY,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AACjC,SAAS;AACT,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACnC,KAAK;AACL;;AC1DO,SAAS,uBAAuB,CAAC,IAAI,EAAE;AAC9C,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,uBAAuB,CAAC,IAAI,EAAE;AAC9C,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,uBAAuB,CAAC,IAAI,EAAE;AAC9C,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,uBAAuB,CAAC,IAAI,EAAE;AAC9C,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB;;ACpBO,MAAM,oBAAoB,SAAS,oBAAoB,CAAC;AAC/D,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;AACrC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACnC,YAAY,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAChC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,YAAY,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AACpD,YAAY,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3C,gBAAgB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ;AACjD,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;AACxC,QAAQ,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7D,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC5L,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AAC1C,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AACvC,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;AACrE,YAAY,EAAE,EAAE;AAChB,gBAAgB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpC,gBAAgB,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ;AAC3F,gBAAgB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAC5C,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACvC,KAAK;AACL,IAAI,wBAAwB,CAAC,aAAa,EAAE;AAC5C,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,iBAAiB,GAAG,CAAC,EAAE,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AACnK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,KAAK;AACnH,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,aAAa;AACb,iBAAiB,IAAI,KAAK,CAAC,SAAS;AACpC,gBAAgB,CAAC,IAAI,CAAC,SAAS;AAC/B,gBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC5D,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,aAAa;AACb,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,KAAK;AAC1D,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACjD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM;AACnD,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACjD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,iBAAiB,KAAK,IAAI,CAAC,aAAa,EAAE;AAC1D,gBAAgB,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;AACvD,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAClD,oBAAoB,QAAQ,EAAE,IAAI,CAAC,aAAa;AAChD,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL;;AC5GO,MAAM,aAAa,SAAS,mBAAmB,CAAC;AACvD,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7F,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAClE,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC1C,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM;AAC1D,YAAY,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,KAAK;AAChD;AACA;AACA,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,KAAK;AACpD,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACrH,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACpC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAChC,YAAY,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AACjC,SAAS;AACT,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO;AACf,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE;AACvB,YAAY,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;AACxD,YAAY,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;AAChD,YAAY,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;AAC9D,kBAAkB,IAAI,CAAC,OAAO;AAC9B,kBAAkB,SAAS;AAC3B,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7B,YAAY,QAAQ,EAAE,IAAI,CAAC,SAAS;AACpC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,MAAM,cAAc,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;AACpD,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAChC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,gBAAgB,MAAM,EAAE;AACxB,oBAAoB,MAAM,EAAE,IAAI,CAAC,OAAO;AACxC,oBAAoB,KAAK,EAAE,IAAI,CAAC,KAAK;AACrC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,MAAM,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;AACrD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AACtC,YAAY,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/C,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,EAAE,CAAC;AACf;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACjI;AACA;AACA;AACA;AACA,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACrD,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACjD,gBAAgB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzC,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,YAAY,MAAM,EAAE;AACpB,gBAAgB,MAAM,EAAE,IAAI,CAAC,OAAO;AACpC,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACrC,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACrE,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC;AACnE,QAAQ,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE;AACxF,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAChD,gBAAgB,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,oBAAoB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAc;AACvE,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,cAAc,EAAE;AACnD,YAAY,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACjD,gBAAgB,SAAS,EAAE,cAAc;AACzC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACrE,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC;AACnE,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC5C,YAAY,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC7C,gBAAgB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAc;AACnE,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,cAAc,EAAE;AACnD,YAAY,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACjD,gBAAgB,SAAS,EAAE,cAAc;AACzC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC5C,YAAY,KAAK;AACjB,YAAY,MAAM,EAAE,MAAM;AAC1B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5B,KAAK;AACL;;ACtJA,MAAM,wBAAwB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAC9E,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACtD,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACxD,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACnD,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAChF,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACK,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC;AAChE,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,IAAI,EAAE,4HAA4H;AACtI,CAAC,CAAC,CAAC;AACI,MAAM,sBAAsB,GAAG,MAAM,wBAAwB,CAAC;AACrE,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,IAAI,EAAE,iEAAiE;AAC3E,CAAC,CAAC,CAAC;AACI,MAAM,wBAAwB,GAAG,MAAM,wBAAwB,CAAC;AACvE,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,IAAI,EAAE,kEAAkE;AAC5E,CAAC,CAAC;;AC3BK,MAAM,UAAU,SAAS,mBAAmB,CAAC;AACpD,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;AAChD;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;AAChD;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,kBAAkB,CAAC;AAC7D;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;AAC1C;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC;AAC7C,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACrD;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACzD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK;AAC9F,YAAY,EAAE,CAAC,cAAc,EAAE,CAAC;AAChC,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,KAAK,GAAG;AACZ;AACA,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AACjD,QAAQ,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK;AAC5D,YAAY,EAAE,CAAC,cAAc,EAAE,CAAC;AAChC,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACpC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,oBAAoB,CAAC,eAAe,EAAE;AAC1C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B;AACA,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC7D,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1D,SAAS;AACT,KAAK;AACL;;AChEO,MAAM,kBAAkB,CAAC;AAChC,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE;AAC9D,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACjD,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE;AAC/C;AACA,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1G,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAClG,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9F,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5F,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxF,KAAK;AACL,IAAI,sBAAsB,CAAC,EAAE,EAAE,aAAa,EAAE;AAC9C,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,OAAO,eAAe,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAClR,KAAK;AACL,IAAI,kBAAkB,CAAC,EAAE,EAAE,aAAa,EAAE;AAC1C,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,OAAO,eAAe,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;AACrQ,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC5D,YAAY,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;AACjS,SAAS;AACT,aAAa;AACb,YAAY,OAAO,IAAI,UAAU,EAAE,CAAC;AACpC,SAAS;AACT,KAAK;AACL;;ACnDO,MAAM,2BAA2B,CAAC;AACzC,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,KAAK;AACL,IAAI,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC;AACrC,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AACxC,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AACtC,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;AACxC,QAAQ,MAAM,gBAAgB,GAAG,QAAQ;AACzC,cAAc,QAAQ,CAAC,OAAO,CAAC,EAAE;AACjC,cAAc,CAAC,EAAE,GAAG,SAAS,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AAC3F,QAAQ,MAAM,YAAY,GAAG,QAAQ;AACrC,cAAc,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AAC5E,cAAc,SAAS,CAAC,YAAY,CAAC;AACrC,QAAQ,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACpG,QAAQ,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7G,YAAY,QAAQ,EAAE,SAAS,CAAC,QAAQ;AACxC,SAAS,CAAC,CAAC;AACX,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,YAAY,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO;AACvE,YAAY,MAAM,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,GAAG,EAAE;AACtE,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;;ACzBO,MAAM,SAAS,SAAS,mBAAmB,CAAC;AACnD,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,WAAW,CAAC;AAC9C,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,QAAQ,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC;AAC5C,QAAQ,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAQ,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;AACxC,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,OAAO,CAAC,SAAS,GAAG,mBAAmB,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAQ,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAQ,gBAAgB,CAAC,SAAS,GAAG,mBAAmB,CAAC;AACzD,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAQ,WAAW,CAAC,SAAS,GAAG,cAAc,CAAC;AAC/C,QAAQ,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACrD,QAAQ,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAClD,QAAQ,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACtC,QAAQ,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK;AAChF,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,EAAE,CAAC,cAAc,EAAE,CAAC;AAChC,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClG,aAAa;AACb,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB;AACA,KAAK;AACL,IAAI,KAAK,GAAG;AACZ;AACA,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B;AACA,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AAChE,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAC7D,KAAK;AACL;;ACxDA,MAAM,mBAAmB,GAAG,CAAC,MAAM;AACnC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;AACxB,IAAI,SAAS,SAAS,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,IAAI,EAAE;AACvD,YAAY,WAAW,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC9D,SAAS;AACT,QAAQ,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACxD,QAAQ,QAAQ,GAAG,OAAO,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC,GAAG,CAAC;AACE,MAAM,OAAO,SAAS,mBAAmB,CAAC;AACjD,IAAI,IAAI,sBAAsB,CAAC,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,uBAAuB,CAAC,KAAK,EAAE;AACvC,QAAQ,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACrD,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACzD,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,qBAAqB,CAAC;AACxD,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC;AACvB,YAAY,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACvC,YAAY,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACrC,YAAY,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;AACjC,YAAY,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AACnC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE;AAC3B,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC/C,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC9C,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC5C,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC7C,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC7E,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AAClE;AACA;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E;AACA,QAAQ,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,KAAK,QAAQ;AAChF,cAAc,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACpE,cAAc,CAAC,CAAC;AAChB,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5I,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AAC3I,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACzE,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AAC9D,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG;AAC5C,YAAY,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI;AAC/C,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK;AAChC,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,SAAS,CAAC,UAAU,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;AAC3D,QAAQ,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7C,QAAQ,MAAM,KAAK,GAAG,MAAM;AAC5B,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;AAC9B,YAAY,MAAM,OAAO,GAAG;AAC5B,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACjD,gBAAgB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAClD,aAAa,CAAC;AACd,YAAY,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1C,gBAAgB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACpD,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC;AACjD,gBAAgB,OAAO,EAAE,MAAM;AAC/B,oBAAoB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClD,wBAAwB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AAC5D,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,EAAE,2BAA2B,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK;AACvE,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACrF,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC;AACzD,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC;AACxD,gBAAgB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,8BAA8B,EAAE,IAAI,CAAC,CAAC;AACjF,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AAC1E,gBAAgB,IAAI,MAAM,KAAK,IAAI,EAAE;AACrC,oBAAoB,MAAM,GAAG;AAC7B,wBAAwB,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI;AACvD,wBAAwB,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG;AACtD,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACrF,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB;AAChF,sBAAsB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC;AAC/D,sBAAsB,CAAC,CAAC,CAAC;AACzB,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AAC3H,gBAAgB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5H,gBAAgB,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,aAAa,CAAC,EAAE,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM;AACrE,gBAAgB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AAClF,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5C,aAAa,CAAC,CAAC,CAAC;AAChB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,KAAK,KAAK;AAC5F,YAAY,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACxC,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvC,gBAAgB,OAAO;AACvB,aAAa;AACb;AACA;AACA,YAAY,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAC9C,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,KAAK,EAAE,CAAC;AACpB,SAAS,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAK,KAAK;AAChF,YAAY,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACxC,gBAAgB,OAAO;AACvB,aAAa;AACb;AACA;AACA,YAAY,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAC9C,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChC,gBAAgB,KAAK,EAAE,CAAC;AACxB,aAAa;AACb,SAAS,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM;AAC3E,YAAY,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAClB,QAAQ,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE;AAChC,YAAY,KAAK,EAAE,CAAC;AACpB,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClE,QAAQ,mBAAmB,CAAC,SAAS,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;AACvD,QAAQ,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK;AACjG,YAAY,CAAC,CAAC,cAAc,EAAE,CAAC;AAC/B,YAAY,IAAI,aAAa,GAAG,IAAI,CAAC;AACrC,YAAY,MAAM,OAAO,GAAG;AAC5B,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACjD,gBAAgB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAClD,aAAa,CAAC;AACd,YAAY,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1C,gBAAgB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACpD,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC,2BAA2B,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK;AACzG,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACrF,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AAC1E,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC;AACxD,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC;AACzD,gBAAgB,IAAI,aAAa,KAAK,IAAI,EAAE;AAC5C;AACA,oBAAoB,aAAa,GAAG;AACpC,wBAAwB,SAAS,EAAE,CAAC;AACpC,wBAAwB,cAAc,EAAE,WAAW,CAAC,MAAM;AAC1D,wBAAwB,SAAS,EAAE,CAAC;AACpC,wBAAwB,aAAa,EAAE,WAAW,CAAC,KAAK;AACxD,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,GAAG,SAAS,CAAC;AACpC,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAAC;AACvC,gBAAgB,IAAI,IAAI,GAAG,SAAS,CAAC;AACrC,gBAAgB,IAAI,KAAK,GAAG,SAAS,CAAC;AACtC,gBAAgB,MAAM,OAAO,GAAG,MAAM;AACtC,oBAAoB,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS;AAC7E,wBAAwB,aAAa,CAAC,cAAc;AACpD,wBAAwB,aAAa,CAAC,MAAM;AAC5C,0BAA0B,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC;AACrE,0BAA0B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,SAAS;AAC7D,4BAA4B,aAAa,CAAC,cAAc;AACxD,4BAA4B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AACrD,oBAAoB,MAAM;AAC1B,wBAAwB,aAAa,CAAC,SAAS;AAC/C,4BAA4B,aAAa,CAAC,cAAc;AACxD,4BAA4B,GAAG,CAAC;AAChC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,UAAU,GAAG,MAAM;AACzC,oBAAoB,GAAG;AACvB,wBAAwB,aAAa,CAAC,SAAS;AAC/C,4BAA4B,aAAa,CAAC,cAAc,CAAC;AACzD,oBAAoB,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AACnD,wBAAwB,OAAO,IAAI,CAAC,OAAO;AAC3C,6BAA6B,uBAAuB,KAAK,QAAQ;AACjE,0BAA0B,CAAC,GAAG;AAC9B,4BAA4B,IAAI,CAAC,OAAO,CAAC,uBAAuB;AAChE,0BAA0B,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACpE,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,QAAQ,GAAG,MAAM;AACvC,oBAAoB,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS;AAC9E,wBAAwB,aAAa,CAAC,aAAa;AACnD,wBAAwB,aAAa,CAAC,KAAK;AAC3C,0BAA0B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC;AACnE,0BAA0B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,SAAS;AAC7D,4BAA4B,aAAa,CAAC,aAAa;AACvD,4BAA4B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACpD,oBAAoB,KAAK;AACzB,wBAAwB,aAAa,CAAC,SAAS;AAC/C,4BAA4B,aAAa,CAAC,aAAa;AACvD,4BAA4B,IAAI,CAAC;AACjC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,SAAS,GAAG,MAAM;AACxC,oBAAoB,IAAI;AACxB,wBAAwB,aAAa,CAAC,SAAS;AAC/C,4BAA4B,aAAa,CAAC,aAAa,CAAC;AACxD,oBAAoB,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC;AACpD,wBAAwB,OAAO,IAAI,CAAC,OAAO;AAC3C,6BAA6B,sBAAsB,KAAK,QAAQ;AAChE,0BAA0B,CAAC,IAAI;AAC/B,4BAA4B,IAAI,CAAC,OAAO,CAAC,sBAAsB;AAC/D,0BAA0B,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACnE,iBAAiB,CAAC;AAClB,gBAAgB,QAAQ,SAAS;AACjC,oBAAoB,KAAK,KAAK;AAC9B,wBAAwB,OAAO,EAAE,CAAC;AAClC,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,QAAQ;AACjC,wBAAwB,UAAU,EAAE,CAAC;AACrC,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,MAAM;AAC/B,wBAAwB,QAAQ,EAAE,CAAC;AACnC,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,OAAO;AAChC,wBAAwB,SAAS,EAAE,CAAC;AACpC,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,SAAS;AAClC,wBAAwB,OAAO,EAAE,CAAC;AAClC,wBAAwB,QAAQ,EAAE,CAAC;AACnC,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,UAAU;AACnC,wBAAwB,OAAO,EAAE,CAAC;AAClC,wBAAwB,SAAS,EAAE,CAAC;AACpC,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,YAAY;AACrC,wBAAwB,UAAU,EAAE,CAAC;AACrC,wBAAwB,QAAQ,EAAE,CAAC;AACnC,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,aAAa;AACtC,wBAAwB,UAAU,EAAE,CAAC;AACrC,wBAAwB,SAAS,EAAE,CAAC;AACpC,wBAAwB,MAAM;AAC9B,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,aAAa,CAAC,EAAE;AAChB,gBAAgB,OAAO,EAAE,MAAM;AAC/B,oBAAoB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClD,wBAAwB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AAC5D,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,EAAE,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM;AACpE,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5C,aAAa,CAAC,CAAC,CAAC;AAChB,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,KAAK,QAAQ,EAAE;AACrE,YAAY,OAAO,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;AAC/D,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,KAAK,QAAQ,EAAE;AACtE,YAAY,OAAO,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACjE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC/B,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL,CAAC;AACD,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;AAC5B,OAAO,CAAC,aAAa,GAAG,EAAE;;AC9SnB,MAAM,0BAA0B,SAAS,mBAAmB,CAAC;AACpE,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAChC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrB,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACvC,KAAK;AACL;;ACXO,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACjD,MAAM,+BAA+B,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;;ACEtE,SAAS,sBAAsB,GAAG;AAClC,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC1B,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AACM,MAAM,sBAAsB,SAAS,mBAAmB,CAAC;AAChE,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACtB,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM;AAClD,YAAY,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACzD,gBAAgB,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC3C,gBAAgB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACpC,YAAY,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACnE,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC;AACjC,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1C,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;AACtD,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,YAAY,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;AACrD,YAAY,OAAO,CAAC,SAAS,GAAG,mBAAmB,CAAC;AACpD,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AACrC,gBAAgB,KAAK;AACrB,gBAAgB,UAAU,EAAE,UAAU,CAAC,IAAI;AAC3C,gBAAgB,OAAO,EAAE,UAAU,CAAC,IAAI;AACxC,gBAAgB,OAAO;AACvB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;AAC9D,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,KAAK,cAAc,EAAE;AACzE,YAAY,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;AAC3D,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B;AACA,YAAY,MAAM,GAAG,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC3E,YAAY,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,YAAY,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE,YAAY,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjE,YAAY,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1D,YAAY,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5D,YAAY,WAAW,CAAC,cAAc,EAAE,yBAAyB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACjH,SAAS,CAAC;AACV,QAAQ,MAAM,iBAAiB,GAAG,MAAM;AACxC,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE;AACrC,gBAAgB,MAAM,EAAE,CAAC;AACzB,aAAa;AACb,YAAY,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC;AAC7E,SAAS,CAAC;AACV,QAAQ,MAAM,UAAU,GAAG,IAAI,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,mBAAmB,CAAC,cAAc,EAAE;AAChD,YAAY,SAAS,EAAE,CAAC,CAAC,KAAK;AAC9B,gBAAgB,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,WAAW,EAAE,CAAC,CAAC,KAAK;AAChC,gBAAgB,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,WAAW,EAAE,CAAC,CAAC,KAAK;AAChC,gBAAgB,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,MAAM,EAAE,CAAC,CAAC,KAAK;AAC3B,gBAAgB,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,UAAU,EAAE,CAAC,CAAC,KAAK;AAC/B,gBAAgB,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAChE,aAAa;AACb,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,KAAK;AACvD;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB,EAAE,CAAC;AAChC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM;AAClD,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE;AACtC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,EAAE,CAAC;AACrB,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM;AAC/D,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,KAAK,cAAc,EAAE;AAC7E,gBAAgB,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvE,aAAa;AACb,YAAY,CAAC,EAAE,GAAG,cAAc,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACpH,SAAS,CAAC,CAAC;AACX,QAAQ,cAAc,CAAC,MAAM;AAC7B,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAgB,OAAO;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB,EAAE,CAAC;AAChC,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACpD;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AACvD,QAAQ,OAAO,cAAc,CAAC;AAC9B,KAAK;AACL;;AChIA,IAAI,SAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AAIK,MAAM,YAAY,SAAS,mBAAmB,CAAC;AACtD,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9H,KAAK;AACL,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE;AACjE,YAAY,OAAO,EAAE,MAAM;AAC3B,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;AAC7B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAChD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AACpD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACtD,QAAQ,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC5C,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACrC,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;AACpG,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM;AAC/B,gBAAgB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1C,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC9C,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACvC,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAChC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa;AAC5D,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC7E,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC5C,gBAAgB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;AACrC,gBAAgB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AACvC,gBAAgB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzC,gBAAgB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3C,aAAa,CAAC;AACd,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzD,iBAAiB,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA;AACA;AACA,YAAY,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3E,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC;AACA;AACA;AACA,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,YAAY,MAAM,UAAU,GAAG,IAAI,mBAAmB,EAAE,CAAC;AACzD,YAAY,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACjE,YAAY,UAAU,CAAC,cAAc,CAAC,2BAA2B,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;AAC7B,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACjE,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,aAAa;AACb,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;AAClG,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM;AAC/B,gBAAgB,MAAM,EAAE,cAAc;AACtC,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC5C,gBAAgB,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;AACjE;AACA;AACA,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM;AAC9D;AACA;AACA;AACA,oBAAoB,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC;AACrE,oBAAoB,gBAAgB,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC5D,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjE,oBAAoB,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7E;AACA;AACA;AACA;AACA,oBAAoB,2BAA2B,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM;AACtF;AACA;AACA;AACA,wBAAwB,IAAI,CAAC,KAAK,EAAE,CAAC;AACrC,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,OAAO,CAAC,SAAS,CAAC,CAAC;AACvC,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,2BAA2B,GAAG;AAClC,QAAQ,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC7C,QAAQ,EAAE,CAAC,EAAE,GAAG,kBAAkB,CAAC;AACnC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACvC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAChC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACjC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;AAC7B,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAC9B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL;;ACpHA,MAAM,0BAA0B,GAAG;AACnC,IAAI,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;AACjD,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;AACvC,CAAC,CAAC;AACF,SAAS,0BAA0B,CAAC,OAAO,EAAE;AAC7C,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC3D,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnE,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC9B,QAAQ,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;AAC1C,YAAY,aAAa,EAAE,WAAW,KAAK,KAAK;AAChD,YAAY,kBAAkB,EAAE,IAAI;AACpC,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACD,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAI,SAAS,WAAW,CAAC,OAAO,EAAE;AAClC,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC;AAC1B,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC;AACzB,IAAI,OAAO,MAAM,KAAK,IAAI,EAAE;AAC5B,QAAQ,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACrF,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AA6DM,MAAM,iBAAiB,SAAS,QAAQ,CAAC;AAChD,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,WAAW,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC;AACvG,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,KAAK,CAAC;AACd,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,WAAW,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,UAAU;AAC3G,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,YAAY,aAAa,EAAE,OAAO,CAAC,aAAa;AAChD,YAAY,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;AAC5D,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,WAAW,GAAG,yBAAyB,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,QAAQ,MAAM,CAAC,SAAS,GAAG,6BAA6B,CAAC;AACzD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACzE,QAAQ,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AAChE,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;AACnY,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,aAAa;AACb,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AACxC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,aAAa;AACb,SAAS,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAC9C,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,aAAa;AACb,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM;AAC7D,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM;AACpG,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;AACjD,SAAS,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM;AAClC;AACA,YAAY,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE;AAC3D,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC;AAChC,aAAa;AACb;AACA,YAAY,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE;AACzD,gBAAgB,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACtC,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC/C,YAAY,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;AAClD,YAAY,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACzC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB;AAC5C,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE;AACvD,YAAY,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;AAC5D,YAAY,iBAAiB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK;AACpD,gBAAgB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;AAC5C,gBAAgB,IAAI,IAAI,EAAE;AAC1B,oBAAoB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,EAAE;AACjD,wBAAwB,OAAO,KAAK,CAAC;AACrC,qBAAqB;AACrB,oBAAoB,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC/C;AACA;AACA,wBAAwB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1D,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,CAAC;AAChC,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AACjD,oBAAoB,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO,KAAK,CAAC;AACrC,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;AACvD,wBAAwB,WAAW,EAAE,KAAK;AAC1C,wBAAwB,QAAQ,EAAE,QAAQ;AAC1C,wBAAwB,MAAM,EAAE,MAAM;AACtC,wBAAwB,OAAO,EAAE,YAAY;AAC7C,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,mBAAmB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC7E,YAAY,YAAY,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,0BAA0B;AAC1H,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AACpG,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzE;AACA,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,KAAK,EAAE;AACjF,gBAAgB,IAAI,EAAE,MAAM;AAC5B,aAAa,CAAC,CAAC,CAAC;AAChB,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AACnD,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,MAAM,aAAa,GAAG,IAAI,qBAAqB,CAAC;AAC5D,gBAAgB,WAAW,EAAE,KAAK,CAAC,WAAW;AAC9C,gBAAgB,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACxC,gBAAgB,KAAK,EAAE,SAAS;AAChC,gBAAgB,GAAG,EAAE,IAAI,CAAC,IAAI;AAC9B,gBAAgB,KAAK,EAAE,SAAS;AAChC,gBAAgB,OAAO,EAAE,YAAY;AACrC,gBAAgB,IAAI,EAAE,MAAM;AAC5B,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjD,YAAY,IAAI,aAAa,CAAC,gBAAgB,EAAE;AAChD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;AACxC,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,IAAI,CAAC,gBAAgB,CAAC;AACtC,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7C,wBAAwB,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS;AAC/F,qBAAqB;AACrB,oBAAoB,EAAE,EAAE;AACxB,wBAAwB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjE,wBAAwB,QAAQ,EAAE,QAAQ;AAC1C,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC;AAC9D,oBAAoB,WAAW,EAAE,KAAK,CAAC,WAAW;AAClD,oBAAoB,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAC5C,oBAAoB,KAAK,EAAE,SAAS;AACpC,oBAAoB,GAAG,EAAE,IAAI,CAAC,IAAI;AAClC,oBAAoB,KAAK,EAAE,SAAS;AACpC,oBAAoB,OAAO,EAAE,YAAY;AACzC,iBAAiB,CAAC,CAAC,CAAC;AACpB,aAAa;AACb,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE;AAC1C,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,IAAI,YAAY,YAAY,aAAa;AACjD,YAAY,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;AAC3C,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACrC,QAAQ,SAAS,MAAM,GAAG;AAC1B,YAAY,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE;AACpF,gBAAgB,OAAO,OAAO,CAAC,QAAQ,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,YAAY,YAAY,kBAAkB,EAAE;AAC5D,gBAAgB,OAAO,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpE,aAAa;AACb,YAAY,IAAI,YAAY,CAAC,KAAK,EAAE;AACpC,gBAAgB,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC1E,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;AAC7B,QAAQ,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACtN,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AACvD,YAAY,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/C,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAChE,QAAQ,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,EAAE;AACzD,YAAY,GAAG,EAAE,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,cAAc;AAC3I,YAAY,IAAI,EAAE,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI;AAC3C,YAAY,GAAG,EAAE,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG;AACzC,YAAY,KAAK,EAAE,GAAG,CAAC,KAAK;AAC5B,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM;AAC9B,YAAY,SAAS,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS;AAC1F,YAAY,WAAW,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW;AAC9F,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,sBAAsB,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;AACjG,YAAY,sBAAsB,CAAC,OAAO,EAAE,CAAC;AAC7C,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,OAAO,OAAO;AACtB,aAAa,IAAI,EAAE;AACnB,aAAa,IAAI,CAAC,CAAC,eAAe,KAAK;AACvC,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE;AACpC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,eAAe,KAAK,IAAI,EAAE;AAC1C,gBAAgB,sBAAsB,CAAC,OAAO,EAAE,CAAC;AACjD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzD,YAAY,MAAM,CAAC,SAAS,GAAG,6BAA6B,CAAC;AAC7D,YAAY,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC9E,YAAY,MAAM,cAAc,GAAG,YAAY,YAAY,aAAa;AACxE,kBAAkB,YAAY,CAAC,KAAK;AACpC,kBAAkB,YAAY,CAAC;AAC/B,YAAY,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrE,YAAY,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAClL,YAAY,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,sBAAsB,CAAC;AACjE,YAAY,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,EAAE;AAClG,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,IAAI,YAAY,YAAY,aAAa,EAAE;AACvD,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM;AACtC,oBAAoB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACjF,oBAAoB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjD,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACjE,oBAAoB,IAAI,EAAE,cAAc;AACxC,oBAAoB,EAAE,EAAE,KAAK;AAC7B,iBAAiB,CAAC,CAAC,CAAC;AACpB,gBAAgB,QAAQ,iBAAiB;AACzC,oBAAoB,KAAK,MAAM;AAC/B,wBAAwB,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7D,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,UAAU,CAAC;AACpC,oBAAoB,KAAK,QAAQ;AACjC,wBAAwB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACzD,wBAAwB,MAAM;AAC9B,iBAAiB;AACjB,aAAa;AACb,YAAY,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACzD,YAAY,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtD,YAAY,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvD,YAAY,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG;AACnC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM;AAC/C,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACjD,YAAY,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AACzF,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpC,oBAAoB,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AAC1F,iBAAiB;AACjB,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM;AAC5C,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACtF,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,IAAI,aAAa,CAAC;AAC9B,YAAY,MAAM,KAAK,GAAG;AAC1B,gBAAgB,MAAM,EAAE,OAAO;AAC/B,gBAAgB,WAAW,EAAE,KAAK;AAClC,gBAAgB,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;AAChE,sBAAsB,cAAc,CAAC,EAAE;AACvC,sBAAsB,SAAS;AAC/B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,OAAO,EAAE,MAAM;AACnC,wBAAwB,sBAAsB,CAAC,OAAO,EAAE,CAAC;AACzD,wBAAwB,OAAO,aAAa,CAAC;AAC7C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,sBAAsB,CAAC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA,YAAY,2BAA2B,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM;AACxE,gBAAgB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACpE,aAAa,CAAC,EAAE,sBAAsB,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM;AAC9D,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AACtD,oBAAoB,IAAI,CAAC,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACrE,wBAAwB,IAAI,EAAE,KAAK;AACnC,wBAAwB,EAAE,EAAE,cAAc;AAC1C,qBAAqB,CAAC,CAAC,CAAC;AACxB,oBAAoB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;AACvD,wBAAwB,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5D,qBAAqB;AACrB,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACjD,wBAAwB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAClD,4BAA4B,oBAAoB,EAAE,IAAI;AACtD,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACjD,wBAAwB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACvE,4BAA4B,WAAW,EAAE,IAAI;AAC7C,4BAA4B,UAAU,EAAE,IAAI;AAC5C,yBAAyB,CAAC,CAAC;AAC3B,wBAAwB,YAAY,CAAC,KAAK,CAAC,eAAe;AAC1D,4BAA4B,IAAI,CAAC,sBAAsB,CAAC;AACxD,wBAAwB,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,wBAAwB,aAAa,GAAG,YAAY,CAAC;AACrD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC,SAAS,CAAC;AACV,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK;AAC5B,YAAY,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AAC3C,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvC,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,IAAI,IAAI,YAAY,aAAa,EAAE;AAC3C,YAAY,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACzD,gBAAgB,gBAAgB,EAAE,IAAI;AACtC,gBAAgB,WAAW,EAAE,IAAI;AACjC,gBAAgB,kBAAkB,EAAE,IAAI;AACxC,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;AACtE,SAAS;AACT,aAAa;AACb,YAAY,KAAK,GAAG,IAAI,CAAC;AACzB,YAAY,MAAM,sBAAsB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC;AACjK,YAAY,MAAM,oBAAoB,GAAG,sBAAsB;AAC/D,kBAAkB,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;AACvD,kBAAkB,SAAS,CAAC;AAC5B,YAAY,MAAM,IAAI,GAAG,QAAQ,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,SAAS;AACzH,gBAAgB,OAAO,CAAC,eAAe,CAAC;AACxC,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,IAAI,oBAAoB,EAAE;AAC1C,oBAAoB,IAAI,CAAC,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACrE,wBAAwB,IAAI,EAAE,IAAI;AAClC,wBAAwB,EAAE,EAAE,oBAAoB;AAChD,qBAAqB,CAAC,CAAC,CAAC;AACxB,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC7C,wBAAwB,gBAAgB,EAAE,IAAI;AAC9C,wBAAwB,oBAAoB,EAAE,IAAI;AAClD,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;AAC7D,wBAAwB,WAAW,EAAE,IAAI;AACzC,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,KAAK,GAAG,oBAAoB,CAAC;AACjD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC7C,wBAAwB,WAAW,EAAE,IAAI;AACzC,wBAAwB,gBAAgB,EAAE,IAAI;AAC9C,wBAAwB,oBAAoB,EAAE,CAAC,CAAC,oBAAoB;AACpE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACpD,QAAQ,MAAM,WAAW,GAAG,QAAQ,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AACvG,cAAc,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,cAAc,+BAA+B,CAAC,IAAI,CAAC;AACnD,QAAQ,MAAM,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AACtG,cAAc,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,cAAc,+BAA+B,CAAC,GAAG,CAAC;AAClD,QAAQ,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;AACpC,YAAY,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC5C,YAAY,OAAO,EAAE,KAAK,CAAC,OAAO;AAClC,YAAY,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG;AAC1H,YAAY,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG;AACxH,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,GAAG,EAAE,UAAU;AAC3B,YAAY,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,KAAK,uBAAuB;AAChG,kBAAkB,SAAS;AAC3B,kBAAkB,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,0BAA0B,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,oCAAoC;AACzM,YAAY,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,KAAK,uBAAuB;AACjG,kBAAkB,SAAS;AAC3B,kBAAkB,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,2BAA2B,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,oCAAoC;AAC1M,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,EAAE,EAAE;AACjB,YAAY,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE;AAC9B,YAAY,UAAU,EAAE,QAAQ,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS;AACnH,kBAAkB,OAAO,CAAC,UAAU;AACpC,kBAAkB,KAAK;AACvB,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,kBAAkB,GAAG,IAAI,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClF,QAAQ,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK;AACxE,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;AACxD,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,QAAQ,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM;AACpE;AACA;AACA;AACA,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM;AACzC,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;AACjD,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AACzC,YAAY,OAAO,CAAC,SAAS,CAAC;AAC9B,gBAAgB,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;AAClF,gBAAgB,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK;AAChF,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,EAAE;AACZ,YAAY,OAAO,EAAE,MAAM;AAC3B,gBAAgB,UAAU,CAAC,OAAO,EAAE,CAAC;AACrC,gBAAgB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,gBAAgB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AACjE,gBAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACtD,QAAQ,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE;AAC1F,YAAY,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,QAAQ,QAAQ,QAAQ;AACxB,YAAY,KAAK,KAAK,CAAC;AACvB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU,EAAE;AAC1E;AACA;AACA,oBAAoB,IAAI,CAAC,QAAQ,CAAC,+BAA+B,EAAE,CAAC;AACpE,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,YAAY,KAAK,MAAM,CAAC;AACxB,YAAY,KAAK,OAAO;AACxB,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ,EAAE;AACxE;AACA;AACA,oBAAoB,IAAI,CAAC,QAAQ,CAAC,+BAA+B,EAAE,CAAC;AACpE,iBAAiB;AACjB,gBAAgB,MAAM;AAGtB,SAAS;AACT,QAAQ,QAAQ,QAAQ;AACxB,YAAY,KAAK,KAAK,CAAC;AACvB,YAAY,KAAK,MAAM,CAAC;AACxB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,KAAK,QAAQ,CAAC;AAC1B,YAAY,KAAK,OAAO;AACxB,gBAAgB,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1E,YAAY;AACZ,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,MAAM,mBAAmB,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;AAC3E,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC;AAC9D,QAAQ,MAAM,2BAA2B,GAAG,OAAO,CAAC,mBAAmB,KAAK,SAAS;AACrF,YAAY,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAC7E,QAAQ,MAAM,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,KAAK,SAAS;AACjF,YAAY,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvE,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAChF,QAAQ,IAAI,mBAAmB,EAAE;AACjC,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,2BAA2B,EAAE;AACzC,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;AACtD,gBAAgB,QAAQ,IAAI,CAAC,OAAO,CAAC,mBAAmB;AACxD,oBAAoB,KAAK,uBAAuB;AAChD,wBAAwB,KAAK,CAAC,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;AAC1E,wBAAwB,KAAK,CAAC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;AACzE,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,SAAS;AAClC,wBAAwB,KAAK,CAAC,OAAO,CAAC,uBAAuB;AAC7D,4BAA4B,oCAAoC,CAAC;AACjE,wBAAwB,KAAK,CAAC,OAAO,CAAC,sBAAsB;AAC5D,4BAA4B,oCAAoC,CAAC;AACjE,wBAAwB,MAAM;AAC9B,oBAAoB;AACpB,wBAAwB,KAAK,CAAC,OAAO,CAAC,uBAAuB;AAC7D,4BAA4B,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC;AACxI,wBAAwB,KAAK,CAAC,OAAO,CAAC,sBAAsB;AAC5D,4BAA4B,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC;AACvI,iBAAiB;AACjB,gBAAgB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC5C,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,0BAA0B,EAAE;AACxC,YAAY,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3E,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;AACvC,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACjD,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AACzD;AACA,gBAAgB,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AAChF,KAAK;AACL,IAAI,aAAa,CAAC,EAAE,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,GAAG,EAAE,EAAE;AAC7B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;AACnD,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW;AACzC,gBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACvE,gBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,gBAAgB,OAAO;AACvB,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,QAAQ,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AACtG,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,cAAc,CAAC,OAAO,GAAG,EAAE,EAAE;AACjC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;AACnD,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACvE,gBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3E,gBAAgB,OAAO;AACvB,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,QAAQ,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AAC1G,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAChD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;AAC/C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK;AACjE,YAAY,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAClD,YAAY,OAAO,UAAU,CAAC;AAC9B,SAAS,EAAE,EAAE,CAAC,CAAC;AACf,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC3D,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1C,gBAAgB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAChD,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC/D,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;AAChD,gBAAgB,kBAAkB,EAAE,KAAK,CAAC,cAAc;AACxD,gBAAgB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;AACnD,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,MAAM;AAClB,YAAY,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AAC3F,SAAS,CAAC;AACV,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAY,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAY,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;AAC/C,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AACvD,YAAY,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAC3E,SAAS;AACT,QAAQ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;AACnD,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3E,YAAY,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACrC,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACvC,YAAY,MAAM,8BAA8B,GAAG,CAAC,IAAI,KAAK;AAC7D,gBAAgB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;AAC3E,gBAAgB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAC5C,oBAAoB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACvE,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC/C,oBAAoB,EAAE;AACtB,oBAAoB,MAAM,EAAE,CAAC,CAAC,MAAM;AACpC,oBAAoB,UAAU,EAAE,CAAC,CAAC,UAAU;AAC5C,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,MAAM,aAAa,GAAG,EAAE,CAAC;AACzC,gBAAgB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACpF,oBAAoB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,oBAAoB,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACnD,oBAAoB,MAAM,QAAQ,GAAG,OAAO,UAAU,KAAK,QAAQ;AACnE,wBAAwB,UAAU,KAAK,KAAK,CAAC,EAAE,CAAC;AAChD,oBAAoB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;AACjD,wBAAwB,aAAa,EAAE,CAAC,QAAQ;AAChD,wBAAwB,kBAAkB,EAAE,IAAI;AAChD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnE,oBAAoB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACjF,wBAAwB,kBAAkB,EAAE,IAAI;AAChD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;AAC5C,gBAAgB,QAAQ,EAAE,CAAC,IAAI,KAAK;AACpC,oBAAoB,OAAO,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7C,YAAY,MAAM,wBAAwB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAC5G,YAAY,KAAK,MAAM,uBAAuB,IAAI,wBAAwB,EAAE;AAC5E,gBAAgB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,uBAAuB,CAAC;AACnE,gBAAgB,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;AACnE,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7C,oBAAoB,CAAC,EAAE,QAAQ,CAAC,IAAI;AACpC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,GAAG;AACnC,oBAAoB,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC3C,oBAAoB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACzC,iBAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,MAAM,sBAAsB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACxG,YAAY,KAAK,MAAM,qBAAqB,IAAI,sBAAsB,EAAE;AACxE,gBAAgB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,CAAC;AACrF,gBAAgB,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;AACnE,gBAAgB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,kBAAkB;AAC7D,sBAAsB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AACvD,sBAAsB,SAAS,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE;AAC1E,oBAAoB,eAAe,EAAE,IAAI;AACzC,oBAAoB,QAAQ,EAAE,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,QAAQ,GAAG,SAAS;AAC7F,oBAAoB,mBAAmB,EAAE,kBAAkB;AAC3D,0BAA0B,KAAK;AAC/B,0BAA0B,SAAS;AACnC,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9D,gBAAgB,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAClD,aAAa;AACb,YAAY,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACjD,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACzD,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACzD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB;AACA;AACA;AACA,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7C,gBAAgB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AAClD,oBAAoB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AAC5C,wBAAwB,gBAAgB,EAAE,KAAK;AAC/C,wBAAwB,WAAW,EAAE,KAAK;AAC1C,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7C,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC;AAChC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9C,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,aAAa;AACb;AACA,YAAY,KAAK,MAAM,aAAa,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE;AACnE,gBAAgB,aAAa,CAAC,OAAO,EAAE,CAAC;AACxC,aAAa;AACb;AACA,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7E,QAAQ,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAClD,QAA+B,CAAC,CAAC,IAAI,CAAC,YAAY;AAClD,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACpC;AACA,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;AACpD,YAAY,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AACrC,YAAY,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;AAC/C,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE;AAC1D,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1E,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC;AAC3B,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClD,YAAY,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;AAC9G,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC9B,YAAY,IAAI,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3D,gBAAgB,MAAM,cAAc,GAAG,OAAO,OAAO,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ;AAC1F,sBAAsB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;AACzE,sBAAsB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;AACtD,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AACxG,iBAAiB;AACjB,gBAAgB,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAChE,aAAa;AACb,iBAAiB,IAAI,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAChE,gBAAgB,cAAc;AAC9B,oBAAoB,OAAO,OAAO,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ;AACvE,0BAA0B,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK;AAChI,0BAA0B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC1D,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AACxG,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/D,gBAAgB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7C,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACrD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;AAC7H,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClC,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACjD,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,gBAAgB,MAAM,CAAC,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;AAC9D,oBAAoB,OAAO,CAAC,QAAQ,KAAK,IAAI;AAC7C,sBAAsB,OAAO,CAAC,QAAQ;AACtC,sBAAsB,EAAE,CAAC;AACzB,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE;AAChD,oBAAoB,UAAU,EAAE,KAAK;AACrC,oBAAoB,eAAe,EAAE,IAAI;AACzC,oBAAoB,eAAe,EAAE,IAAI;AACzC,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzD,gBAAgB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7C,aAAa;AACb,iBAAiB,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;AACpE,gBAAgB,MAAM,KAAK,QAAQ,EAAE;AACrC,gBAAgB,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAClE,gBAAgB,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtD,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;AAC9D,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzE,gBAAgB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1G,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AAC3E,gBAAgB,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzD,gBAAgB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7C,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACrD,aAAa;AACb,SAAS;AACT,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE;AACnC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC7C,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;AAC1D,gBAAgB,OAAO,CAAC,QAAQ,KAAK,IAAI;AACzC,kBAAkB,OAAO,CAAC,QAAQ;AAClC,kBAAkB,EAAE,CAAC;AACrB,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE;AAC5C,gBAAgB,UAAU,EAAE,KAAK;AACjC,gBAAgB,eAAe,EAAE,IAAI;AACrC,gBAAgB,eAAe,EAAE,IAAI;AACrC,aAAa,CAAC,CAAC;AACf,YAAY,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD,YAAY,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACvD,YAAY,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD,YAAY,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG;AACjC,QAAQ,gBAAgB,EAAE,IAAI;AAC9B,QAAQ,WAAW,EAAE,KAAK;AAC1B,KAAK,EAAE;AACP,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACtF,SAAS;AACT,QAAQ,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;AACvC,YAAY,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;AAC1D,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAClC,YAAY,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7D,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC1D,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAChF,SAAS;AACT,KAAK;AACL,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,eAAe,CAAC,cAAc,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;AAChG,cAAc,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACnE,cAAc,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B;AAC1D,cAAc,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE;AAC5E,cAAc,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AACnH,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACvG,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjC,gBAAgB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjE,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACpC,oBAAoB,YAAY,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;AACvD,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzE,gBAAgB,kBAAkB,CAAC,SAAS,GAAG,wBAAwB,CAAC;AACxE,gBAAgB,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACtE,aAAa;AACb,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE;AACjC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAC1D,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClG,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAChD,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,cAAc,CAAC;AAC/B,YAAY,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE;AAClD,gBAAgB,MAAM,cAAc,GAAG,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;AACjF,sBAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC;AACtF,sBAAsB,OAAO,CAAC,cAAc,CAAC;AAC7C,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AAChG,iBAAiB;AACjB,gBAAgB,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAChE,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,oCAAoC,EAAE,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AACpH,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE;AACvD,gBAAgB,cAAc;AAC9B,oBAAoB,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;AAC9D,0BAA0B,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK;AACvH,0BAA0B,OAAO,CAAC,cAAc,CAAC;AACjD,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AAChG,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACzF,gBAAgB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC5C,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACzD,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC;AACnE,YAAY,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrE,YAAY,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtG,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACrD,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACxC,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACrD,aAAa;AACb,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnC,YAAY,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACjD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;AAClC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE;AACtF,YAAY,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxC,gBAAgB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACxC,oBAAoB,gBAAgB,EAAE,KAAK;AAC3C,oBAAoB,WAAW,EAAE,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK;AACpJ,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;AACpD,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACtF,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE;AAC9F,oBAAoB,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAClD,oBAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClD,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAC5D,gBAAgB,aAAa,CAAC,OAAO,EAAE,CAAC;AACxC,gBAAgB,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AAC5H,oBAAoB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACrE,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AACnG,iBAAiB;AACjB,gBAAgB,OAAO,aAAa,CAAC,KAAK,CAAC;AAC3C,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClD,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;AAC1F,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE;AAC9F,oBAAoB,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAC3G,wBAAwB,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc;AACrE,8BAA8B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC;AACzE,8BAA8B,SAAS,CAAC;AACxC,wBAAwB,IAAI,QAAQ,EAAE;AACtC,4BAA4B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvD,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACxD,oBAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClD,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,iBAAiB;AACjB,gBAAgB,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACxE,gBAAgB,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,YAAY,EAAE;AACnH,oBAAoB,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAChE,iBAAiB;AACjB,gBAAgB,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AAC5H,oBAAoB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACrE,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AACnG,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvC,gBAAgB,OAAO,aAAa,CAAC,WAAW,CAAC;AACjD,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvD,QAAQ,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE;AACrF,YAAY,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAClD,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpE,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAChC,YAAY,OAAO,IAAI,EAAE,CAAC;AAC1B,SAAS;AACT,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;AAClD,QAAQ,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACnD,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,QAAQ,MAAM,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtD,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;AAClD,QAAQ,MAAM,WAAW,GAAG,aAAa;AACzC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK;AAClG,cAAc,SAAS,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,IAAI,YAAY,KAAK,SAAS,EAAE;AACxC;AACA;AACA;AACA,YAAY,IAAI,CAAC,SAAS,CAAC;AAC3B,gBAAgB,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5C,gBAAgB,EAAE,EAAE;AACpB,oBAAoB,KAAK,EAAE,gBAAgB;AAC3C,oBAAoB,QAAQ,EAAE,iBAAiB;AAC/C,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,KAAK,QAAQ,EAAE;AAClE;AACA;AACA;AACA,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE;AACnG,gBAAgB,aAAa,EAAE,KAAK;AACpC,gBAAgB,kBAAkB,EAAE,IAAI;AACxC,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACpE,aAAa;AACb,YAAY,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;AAC9C;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE;AACjF,gBAAgB,KAAK,EAAE,gBAAgB;AACvC,gBAAgB,kBAAkB,EAAE,IAAI;AACxC,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;AAC5D,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtC,gBAAgB,KAAK,EAAE,YAAY;AACnC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,MAAM,iBAAiB,GAAG,eAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChF,YAAY,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AACxH,YAAY,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE;AACtC;AACA;AACA;AACA;AACA,gBAAgB,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACxE,gBAAgB,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AAC9D,oBAAoB,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAChF,oBAAoB,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9E,oBAAoB,IAAI,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,EAAE;AACpF;AACA;AACA;AACA,wBAAwB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC/E,wBAAwB,OAAO;AAC/B,qBAAqB;AACrB,iBAAiB;AACjB;AACA,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAC1F,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,WAAW,EAAE,IAAI;AACrC,iBAAiB,CAAC,CAAC,CAAC;AACpB;AACA,gBAAgB,MAAM,wBAAwB,GAAG,eAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC3F,gBAAgB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,EAAE,iBAAiB,CAAC,CAAC;AAC7H,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9E,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;AAC3D,aAAa;AACb,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE;AACvG,oBAAoB,aAAa,EAAE,KAAK;AACxC,oBAAoB,kBAAkB,EAAE,IAAI;AAC5C,iBAAiB,CAAC,CAAC,CAAC;AACpB,gBAAgB,IAAI,CAAC,YAAY,EAAE;AACnC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACxE,iBAAiB;AACjB,gBAAgB,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AAC1H,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;AACvE,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE;AAC1E,oBAAoB,kBAAkB,EAAE,IAAI;AAC5C,iBAAiB,CAAC,CAAC,CAAC;AACpB,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACrD,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,OAAO,EAAE;AACvB,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;AACpC,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC3C,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACjC,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACjD,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;AAC1G,gBAAgB,aAAa,EAAE,IAAI;AACnC,aAAa,CAAC,CAAC,CAAC,CAAC;AACjB,YAAY,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE;AACrF,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM;AAClC,gBAAgB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC5C,oBAAoB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;AAC9C,wBAAwB,aAAa,EAAE,KAAK,KAAK,WAAW;AAC5D,wBAAwB,kBAAkB,EAAE,IAAI;AAChD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACtC,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,aAAa,CAAC,CAAC;AACf,SAAS;AACT,aAAa;AACb,YAAY,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;AAC1C,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,UAAU,EAAE;AACjC,oBAAoB,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AACrG,oBAAoB,IAAI,CAAC,qBAAqB,EAAE;AAChD,wBAAwB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACzE,qBAAqB;AACrB,oBAAoB,qBAAqB,CAAC,OAAO,EAAE,CAAC;AACpD,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,KAAK,QAAQ,EAAE;AAC/B,oBAAoB,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;AACvG,oBAAoB,IAAI,CAAC,mBAAmB,EAAE;AAC9C,wBAAwB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AACvE,qBAAqB;AACrB,oBAAoB,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7D,iBAAiB;AACjB,aAAa;AACb,YAAY,MAAM,iBAAiB,GAAG,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAClE,YAAY,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC3G,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACzE,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC3C,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;AACzB,YAAY,WAAW,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAChE,YAAY,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3D,SAAS;AACT,KAAK;AACL,IAAI,wBAAwB,CAAC,KAAK,EAAE;AACpC,QAAQ,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,KAAK;AACjB,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;AACzB,YAAY,WAAW,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAChE,YAAY,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3D,SAAS;AACT,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAC9E,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAChD,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC;AACrJ,YAAY,EAAE,GAAG,SAAS,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,CAAC,EAAE,EAAE;AACjB,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACzC,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACzC,gBAAgB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACxC,YAAY,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,KAAK;AAC5F,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK;AACvD,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AACjE,gBAAgB,IAAI,CAAC,gBAAgB,CAAC;AACtC,oBAAoB,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AAC/D,oBAAoB,EAAE,EAAE;AACxB,wBAAwB,KAAK,EAAE,IAAI;AACnC,wBAAwB,QAAQ,EAAE,MAAM;AACxC,wBAAwB,KAAK;AAC7B,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AAChD,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK;AACjD,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AACxD,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC7C,oBAAoB,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,KAAK;AACpD,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;AAClC,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK;AACvD,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;AAClC,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzD,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,KAAK;AAC7D,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;AAClC,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AACtD,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;AACxE,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnE,iBAAiB;AACjB,aAAa,CAAC,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACnE,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;AAChC,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;AACnD,QAAQ,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAC3H,QAAQ,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAC9F,QAAQ,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClH,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,YAAY,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE;AACnF,YAAY,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/H,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,qBAAqB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE;AAC1C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AAC9J,KAAK;AACL;;ACp6CO,MAAM,iBAAiB,SAAS,QAAQ,CAAC;AAChD,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC;AACd,YAAY,aAAa,EAAE,OAAO,CAAC,aAAa;AAChD,YAAY,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;AAC1D,YAAY,WAAW,EAAE,OAAO,CAAC,WAAW;AAC5C,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,YAAY,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;AAC5D,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAChC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;AAChI,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK;AACxC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,SAAS,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,KAAK;AAC9C,YAAY,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACtC,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC/C,YAAY,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,MAAM,qBAAqB,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;AAC7E,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC;AAC9D,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAChF,QAAQ,IAAI,qBAAqB,EAAE;AACnC,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;AAC/C,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AAC3F,SAAS,CAAC;AACV,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;AAC9C,YAAY,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AACzD,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AAChF,KAAK;AACL,IAAI,QAAQ,CAAC,kBAAkB,EAAE;AACjC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,QAAQ,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC;AACzD,QAAQ,IAAI;AACZ,YAAY,MAAM,KAAK,GAAG,EAAE,CAAC;AAC7B;AACA,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACrC,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACvC,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;AAC5C,gBAAgB,QAAQ,EAAE,CAAC,IAAI,KAAK;AACpC,oBAAoB,IAAI,EAAE,EAAE,EAAE,CAAC;AAC/B,oBAAoB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAC1C,oBAAoB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB;AACjQ,0BAA0B;AAC1B,4BAA4B,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB;AACnF,iCAAiC,eAAe;AAChD,yBAAyB;AACzB,0BAA0B,SAAS,CAAC,CAAC;AACrC,oBAAoB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC;AAC/C,wBAAwB,MAAM,EAAE,IAAI,CAAC,MAAM;AAC3C,wBAAwB,YAAY,EAAE,IAAI,CAAC,YAAY;AACvD,wBAAwB,YAAY,EAAE,IAAI,CAAC,YAAY;AACvD,wBAAwB,aAAa,EAAE,IAAI,CAAC,aAAa;AACzD,wBAAwB,aAAa,EAAE,IAAI,CAAC,aAAa;AACzD,wBAAwB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC/C,wBAAwB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;AACzC,wBAAwB,QAAQ,EAAE,IAAI;AACtC,wBAAwB,SAAS,EAAE,IAAI,CAAC,OAAO;AAC/C,qBAAqB,CAAC,CAAC,CAAC;AACxB,oBAAoB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7C,oBAAoB,OAAO,IAAI,CAAC;AAChC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7C,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtC,YAAY,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACjD,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACzD,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB;AACA;AACA;AACA;AACA,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7C,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC;AAChC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9C,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,aAAa;AACb;AACA,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAChD,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACzD,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACpC,YAAY,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACvC,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,gBAAgB,CAAC;AAC7B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,QAAQ,MAAM,cAAc,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AACxH,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;AACnF,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACnD,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACjC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrE,YAAY,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChG,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACnC,QAAQ,IAAI,gBAAgB,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5F,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE;AAC5F,YAAY,MAAM,cAAc,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AAC1I,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AACrG,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAChE,YAAY,IAAI,MAAM,KAAK,QAAQ,EAAE;AACrC,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACxE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzE,gBAAgB,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpG,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB;AAC3P,cAAc;AACd,gBAAgB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB;AACvE,qBAAqB,eAAe;AACpC,aAAa;AACb,cAAc,SAAS,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC7E,YAAY,YAAY,EAAE,OAAO,CAAC,YAAY;AAC9C,YAAY,YAAY,EAAE,OAAO,CAAC,YAAY;AAC9C,YAAY,aAAa,EAAE,OAAO,CAAC,aAAa;AAChD,YAAY,aAAa,EAAE,OAAO,CAAC,aAAa;AAChD,YAAY,QAAQ,EAAE,OAAO,CAAC,QAAQ;AACtC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;AAChC,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,SAAS,EAAE,IAAI;AAC3B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK;AACzF,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAClC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAChD,gBAAgB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC9C,gBAAgB,IAAI,KAAK,KAAK,KAAK,EAAE;AACrC,oBAAoB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;AACnC,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,UAAU;AACtB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE;AAC/C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,MAAM,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1E,QAAQ,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AACzG,QAAQ,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAChE,QAAQ,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAClE,QAAQ,IAAI,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,EAAE;AACxE;AACA;AACA;AACA,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACnE,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAC5D,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,WAAW,EAAE,IAAI;AAC7B,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,MAAM,wBAAwB,GAAG,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjF,QAAQ,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;AAC5C,KAAK;AACL;;AChRA;AACA;AACA;AACO,MAAM,kBAAkB,SAAS,SAAS,CAAC;AAClD,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,0BAA0B,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM;AAC3G,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpJ,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AACpE,cAAc,IAAI,CAAC,SAAS,CAAC,cAAc;AAC3C,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AACpE,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI;AACjC,cAAc,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AAC5C,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClE,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAChC,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACjC,YAAY,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;AACpC,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC1C,YAAY,OAAO,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC3H,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,MAAM,qBAAqB,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;AAC7E,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAChF,QAAQ,IAAI,qBAAqB,EAAE;AACnC,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACjF,KAAK;AACL,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,MAAM;AACnB,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACvC,aAAa,OAAO,CAAC,CAAC,CAAC,KAAK;AAC5B,YAAY,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AAChE,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrE,QAAQ,WAAW,CAAC,OAAO,EAAE,CAAC;AAC9B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACtD,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC1C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAClP,cAAc;AACd,gBAAgB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe;AAC9E,aAAa;AACb,cAAc,SAAS,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACtD,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC7E,YAAY,WAAW,EAAE,OAAO,CAAC,WAAW;AAC5C,YAAY,WAAW,EAAE,OAAO,CAAC,WAAW;AAC5C,YAAY,IAAI,EAAE,OAAO,CAAC,IAAI;AAC9B,YAAY,QAAQ,EAAE,OAAO,CAAC,QAAQ;AACtC,YAAY,QAAQ,EAAE,IAAI;AAC1B,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzF,QAAQ,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;AACpF,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC5F,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;AAC7B,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK;AAChE,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAClC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;AACpC,aAAa,QAAQ,EAAE;AACvB,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,OAAO;AACnB,gBAAgB,IAAI;AACpB,gBAAgB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;AACnC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;AACjC,gBAAgB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvC,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,YAAY,KAAK;AACjB,YAAY,UAAU,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AAC3F,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AACrC,YAAY,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;AACnD,SAAS,CAAC;AACV,KAAK;AACL,IAAI,QAAQ,CAAC,mBAAmB,EAAE;AAClC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,QAAQ,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC;AAC7E,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACjC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;AACrD,YAAY,WAAW;AACvB,YAAY,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;AAC/D,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI;AACpB,gBAAgB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC3C,oBAAoB,IAAI,EAAE,EAAE,EAAE,CAAC;AAC/B,oBAAoB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3C,oBAAoB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACnD,wBAAwB,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3E,qBAAqB;AACrB,oBAAoB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACzP,0BAA0B;AAC1B,4BAA4B,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAC1E,iCAAiC,eAAe;AAChD,yBAAyB;AACzB,0BAA0B,SAAS,CAAC,CAAC;AACrC,oBAAoB,KAAK,CAAC,IAAI,CAAC,MAAM;AACrC,wBAAwB,IAAI,EAAE,CAAC;AAC/B,wBAAwB,KAAK,CAAC,IAAI,CAAC;AACnC,4BAA4B,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC1F,4BAA4B,WAAW,EAAE,IAAI,CAAC,WAAW;AACzD,4BAA4B,WAAW,EAAE,IAAI,CAAC,WAAW;AACzD,4BAA4B,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3C,4BAA4B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACnD,4BAA4B,QAAQ,EAAE,IAAI;AAC1C,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AACpD,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1C,oBAAoB,UAAU,CAAC,MAAM;AACrC;AACA,wBAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAC1B,oBAAoB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC5D,iBAAiB,CAAC;AAClB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnC,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAC5C,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACpD,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACxD,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/E,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACxD,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC7B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACjC,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAS;AACT,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;;AChQO,MAAM,aAAa,SAAS,mBAAmB,CAAC;AACvD,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,aAAa,GAAG,sBAAsB,EAAE,CAAC;AACtD,QAAQ,IAAI,CAAC,cAAc,GAAG,wBAAwB,EAAE,CAAC;AACzD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,2BAA2B,CAAC;AAC/D,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM;AAChF,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACpH,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACrC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM;AACtE,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;AACzG,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;AAC9D,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC9D,gBAAgB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AAC7C,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC9D,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/D,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC7D,gBAAgB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC/D,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAChE,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB;AACA,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAClC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,KAAK;AACL;;ACpDA,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;AAC1C,MAAM,aAAa,SAAS,sBAAsB,CAAC;AAC1D,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AACrJ,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACnC,KAAK;AACL,CAAC;AACM,MAAM,iBAAiB,SAAS,SAAS,CAAC;AACjD,IAAI,IAAI,EAAE,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM;AAC1F,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClJ,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AACnE,cAAc,IAAI,CAAC,QAAQ,CAAC,cAAc;AAC1C,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AACnE,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI;AAChC,cAAc,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACnD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnE,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/D,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5I,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAChC,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACjC,YAAY,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;AACpC,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC1C,YAAY,OAAO,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;AACnD;AACA,YAAY,WAAW,EAAE,WAAW,CAAC,QAAQ;AAC7C,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,KAAK,GAAG;AACZ;AACA,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,QAAQ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAClP,cAAc;AACd,gBAAgB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe;AACnF,aAAa;AACb,cAAc,SAAS,CAAC,CAAC;AACzB,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE;AACrC,YAAY,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACzN,kBAAkB;AAClB,oBAAoB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM;AACzE,yBAAyB,eAAe;AACxC,iBAAiB;AACjB,kBAAkB,SAAS,CAAC,CAAC;AAC7B,SAAS;AACT,aAAa;AACb,YAAY,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;AACvC,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE;AAC1B,YAAY,SAAS,EAAE,OAAO,CAAC,SAAS;AACxC,YAAY,eAAe,EAAE,OAAO,CAAC,eAAe;AACpD,YAAY,MAAM;AAClB,YAAY,IAAI;AAChB,YAAY,WAAW,EAAE,WAAW,CAAC,QAAQ;AAC7C,YAAY,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU;AAC5C,YAAY,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;AACjD,YAAY,QAAQ,EAAE,IAAI;AAC1B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAQ,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzF,QAAQ,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;AACpF,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC7E,YAAY,eAAe,EAAE,OAAO,CAAC,eAAe;AACpD,YAAY,eAAe,EAAE,OAAO,CAAC,eAAe;AACpD,YAAY,UAAU,EAAE,OAAO,CAAC,UAAU;AAC1C,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK;AAChC,YAAY,YAAY,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;AAC/C,YAAY,QAAQ,EAAE,IAAI;AAC1B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACrD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACxB,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,QAAQ,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC3F,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;AAC7B,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,gBAAgB;AACpE,YAAY,KAAK,KAAK,MAAM,CAAC,iBAAiB;AAC9C,cAAc,SAAS;AACvB,cAAc,KAAK,CAAC;AACpB,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC;AACpE,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ;AACnC,aAAa,QAAQ,EAAE;AACvB,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,OAAO;AACnB,gBAAgB,IAAI;AACpB,gBAAgB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;AACnC,gBAAgB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AAC1D,gBAAgB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AAC1D,gBAAgB,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;AAC3C,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,YAAY,KAAK;AACjB,YAAY,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AACpC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,QAAQ,CAAC,kBAAkB,EAAE;AACjC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,QAAQ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC;AACnD,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACjC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;AACnD,YAAY,WAAW,EAAE,WAAW,CAAC,QAAQ;AAC7C,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI;AACpB,gBAAgB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC3C,oBAAoB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvC,oBAAoB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3C,oBAAoB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACxP,0BAA0B;AAC1B,4BAA4B,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI;AAC/E,iCAAiC,eAAe;AAChD,yBAAyB;AACzB,0BAA0B,SAAS,CAAC,CAAC;AACrC,oBAAoB,IAAI,MAAM,CAAC;AAC/B,oBAAoB,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9C,wBAAwB,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAC1Q,8BAA8B;AAC9B,gCAAgC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM;AACrF,qCAAqC,eAAe;AACpD,6BAA6B;AAC7B,8BAA8B,SAAS,CAAC,CAAC;AACzC,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AACrD,qBAAqB;AACrB,oBAAoB,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC;AACpD,wBAAwB,EAAE,EAAE,IAAI,CAAC,EAAE;AACnC,wBAAwB,SAAS,EAAE,IAAI,CAAC,SAAS;AACjD,wBAAwB,eAAe,EAAE,IAAI,CAAC,eAAe;AAC7D,wBAAwB,MAAM;AAC9B,wBAAwB,IAAI;AAC5B,wBAAwB,WAAW,EAAE,WAAW,CAAC,QAAQ;AACzD,wBAAwB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;AACnD,wBAAwB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;AAC7D,wBAAwB,QAAQ,EAAE,IAAI;AACtC,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,oBAAoB,KAAK,CAAC,IAAI,CAAC,MAAM;AACrC,wBAAwB,IAAI,EAAE,CAAC;AAC/B,wBAAwB,KAAK,CAAC,IAAI,CAAC;AACnC,4BAA4B,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC1F,4BAA4B,eAAe,EAAE,IAAI,CAAC,WAAW;AAC7D,4BAA4B,eAAe,EAAE,IAAI,CAAC,WAAW;AAC7D,4BAA4B,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7C,4BAA4B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;AACvD,4BAA4B,YAAY,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;AAC/D,4BAA4B,QAAQ,EAAE,IAAI;AAC1C,yBAAyB,CAAC,CAAC;AAC3B,wBAAwB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACtE,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,UAAU,CAAC,MAAM;AACrC;AACA,wBAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAC1B,oBAAoB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC5D,iBAAiB,CAAC;AAClB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnC,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE;AAClE,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AACtD,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/D,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC;AACjC,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,QAAQ,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE;AAClE,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChC,KAAK;AACL;;ACrRO,MAAM,cAAc,SAAS,aAAa,CAAC;AAClD,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;AAC5D,cAAc,IAAI,CAAC,YAAY,EAAE;AACjC,cAAc,IAAI,CAAC,YAAY,CAAC;AAChC,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,qBAAqB,EAAE;AACjD,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC9C,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;AAC5D,cAAc,IAAI,CAAC,YAAY,EAAE;AACjC,cAAc,IAAI,CAAC,YAAY,CAAC;AAChC,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,qBAAqB,EAAE;AACjD,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC9C,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,WAAW,CAAC,EAAE,EAAE,aAAa,EAAE;AACnC,QAAQ,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC9D,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACrD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,KAAK;AAC1F,YAAY,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AACxC,YAAY,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM;AAC1C,YAAY,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrC,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,KAAK;AAC/D,YAAY,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;AACrD,gBAAgB,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;AACzD,gBAAgB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;AACtD,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;AACrD,gBAAgB,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;AACzD,gBAAgB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;AACtD,aAAa;AACb,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,KAAK;AAChD,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACzD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,UAAU,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE;AACjC,QAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;AAC3E,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC;AACpC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACrC,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;AAC7C,QAAQ,IAAI,UAAU,CAAC,WAAW,EAAE;AACpC,YAAY,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,WAAW,EAAE;AACpC,YAAY,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE;AAC7B,YAAY,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;AACzC,SAAS;AACT,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,gBAAgB;AACpE,YAAY,KAAK,KAAK,MAAM,CAAC,iBAAiB;AAC9C,cAAc,SAAS;AACvB,cAAc,KAAK,CAAC;AACpB,QAAQ,MAAM,OAAO,GAAG,CAAC,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC;AACpE,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACpJ,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAC9C,YAAY,WAAW,EAAE,IAAI,CAAC,qBAAqB;AACnD,YAAY,WAAW,EAAE,IAAI,CAAC,qBAAqB;AACnD,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;;;","x_google_ignoreList":[0]}
|