@textbus/collaborate 5.3.2 → 5.3.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/base/sub-model-loader.ts","../src/base/collaborate.ts","../src/base/collab-history.ts","../src/base/message-bus.ts","../src/base/multiple-doc-collab-history.ts","../src/base/sync-connector.ts","../src/connectors/hocuspocus-connector.ts","../src/connectors/local-connector.ts","../src/connectors/y-websocket-connector.ts","../src/collaborate-module.ts","../src/multiple-document-collaborate-module.ts"],"sourcesContent":["import { Doc, Doc as YDoc } from 'yjs'\nimport { Injectable } from '@viewfly/core'\nimport { AsyncComponent, AsyncSlot, makeError } from '@textbus/core'\n\nconst subModelLoaderErrorFn = makeError('subModelLoaderError')\n\n/**\n * 子文档加载器\n */\nexport abstract class SubModelLoader {\n /**\n * 通过插槽获取已加载的文档\n * @param slot\n */\n abstract getLoadedModelBySlot(slot: AsyncSlot): YDoc | null\n\n /**\n * 通过组件获取已加载的文档\n * @param component\n */\n abstract getLoadedModelByComponent(component: AsyncComponent): YDoc | null\n\n /**\n * 当本地新增异步子插槽时调用\n * @param slot\n */\n abstract createSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当本地新增异步子组件时调用\n * @param component\n */\n abstract createSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n\n /**\n * 当远程异步子插槽同步到本地时调用\n * @param slot\n */\n abstract loadSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当远程异步子组件同步到本地时调用\n * @param component\n */\n abstract loadSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n}\n\n@Injectable()\nexport class NonSubModelLoader extends SubModelLoader {\n createSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n createSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelBySlot(): Doc {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelByComponent(): Doc {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n}\n","import { Injectable } from '@viewfly/core'\nimport { filter, map, Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n ChangeOrigin,\n Component,\n Registry,\n Formats,\n makeError,\n Scheduler,\n Selection,\n Slot,\n AsyncSlot,\n AsyncComponent,\n AbstractSelection,\n observe,\n ProxyModel,\n toRaw,\n} from '@textbus/core'\nimport {\n AbstractType,\n Array as YArray, createAbsolutePositionFromRelativePosition, createRelativePositionFromTypeIndex,\n Doc as YDoc,\n Map as YMap,\n RelativePosition,\n Text as YText,\n Transaction,\n UndoManager,\n YArrayEvent,\n YMapEvent,\n YTextEvent,\n XmlElement,\n} from 'yjs'\n\nimport { SubModelLoader } from './sub-model-loader'\n\n/** 与本地稀疏数组「空洞」对应的 YXmlElement,仅放入 YArray,不作通用 XML 节点使用 */\nconst ARRAY_HOLE_ELEMENT_NODE = 'tb-array-hole'\n\nexport interface RelativePositionRecord {\n doc: YDoc,\n position: RelativePosition\n}\n\nexport interface CursorPosition {\n anchor: RelativePositionRecord\n focus: RelativePositionRecord\n}\n\nexport interface CollaborateHistorySelectionPosition {\n before: CursorPosition | null\n after: CursorPosition | null\n}\n\nconst collaborateErrorFn = makeError('Collaborate')\n\nclass SlotMap {\n private slotAndYTextMap = new WeakMap<Slot, YText>()\n private yTextAndSlotMap = new WeakMap<YText, Slot>()\n\n set(key: Slot, value: YText): void\n set(key: YText, value: Slot): void\n set(key: any, value: any) {\n if (key instanceof Slot) {\n this.slotAndYTextMap.set(key, value)\n this.yTextAndSlotMap.set(value, key)\n } else {\n this.slotAndYTextMap.set(value, key)\n this.yTextAndSlotMap.set(key, value)\n }\n }\n\n get(key: Slot): YText | null\n get(key: YText): Slot | null\n get(key: any) {\n if (key instanceof Slot) {\n return this.slotAndYTextMap.get(key) || null\n }\n return this.yTextAndSlotMap.get(key) || null\n }\n\n delete(key: Slot | YText) {\n if (key instanceof Slot) {\n const v = this.slotAndYTextMap.get(key)\n this.slotAndYTextMap.delete(key)\n if (v) {\n this.yTextAndSlotMap.delete(v)\n }\n } else {\n const v = this.yTextAndSlotMap.get(key)\n this.yTextAndSlotMap.delete(key)\n if (v) {\n this.slotAndYTextMap.delete(v)\n }\n }\n }\n}\n\ninterface Update {\n record: boolean\n actions: Array<() => void>\n}\n\ninterface UpdateItem {\n record: boolean\n\n action(): void\n}\n\nexport interface SubModelLoaded {\n yType: AbstractType<any>\n yDoc: YDoc\n}\n\n@Injectable()\nexport class Collaborate {\n yDoc = new YDoc()\n slotMap = new SlotMap()\n onAddSubModel: Observable<SubModelLoaded>\n\n private subscriptions: Subscription[] = []\n private updateFromRemote = false\n private addSubModelEvent = new Subject<SubModelLoaded>()\n\n private updateRemoteActions = new WeakMap<YDoc, UpdateItem[]>()\n private noRecord = {}\n\n constructor(private scheduler: Scheduler,\n private registry: Registry,\n private selection: Selection,\n private subModelLoader: SubModelLoader) {\n this.onAddSubModel = this.addSubModelEvent.asObservable()\n }\n\n syncRootComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n this.initSyncEvent(yDoc)\n this.syncComponent(yDoc, sharedComponent, localComponent)\n }\n\n syncRootSlot(yDoc: YDoc, sharedSlot: YText, localSlot: Slot) {\n if (sharedSlot.length) {\n localSlot.retain(0)\n localSlot.delete(localSlot.length)\n localSlot.cleanAttributes()\n localSlot.cleanFormats()\n this.initLocalSlotBySharedSlot(sharedSlot, localSlot)\n } else {\n yDoc.transact(() => {\n this.initSharedSlotByLocalSlot(sharedSlot, localSlot)\n })\n }\n this.initSyncEvent(yDoc)\n this.syncSlot(sharedSlot, localSlot)\n }\n\n getAbstractSelection(position: CursorPosition): AbstractSelection | null {\n const anchorPosition = createAbsolutePositionFromRelativePosition(position.anchor.position, position.anchor.doc)\n const focusPosition = createAbsolutePositionFromRelativePosition(position.focus.position, position.focus.doc)\n if (anchorPosition && focusPosition) {\n const focusSlot = this.slotMap.get(focusPosition.type as YText)\n const anchorSlot = this.slotMap.get(anchorPosition.type as YText)\n if (focusSlot && anchorSlot) {\n return {\n anchorSlot,\n anchorOffset: anchorPosition.index,\n focusSlot,\n focusOffset: focusPosition.index\n }\n }\n }\n return null\n }\n\n getRelativeCursorLocation(): CursorPosition | null {\n const { anchorSlot, anchorOffset, focusSlot, focusOffset } = this.selection\n if (anchorSlot) {\n const anchorYText = this.slotMap.get(anchorSlot)\n if (anchorYText) {\n const anchorPosition = createRelativePositionFromTypeIndex(anchorYText, anchorOffset!)\n if (focusSlot) {\n const focusYText = this.slotMap.get(focusSlot)\n if (focusYText) {\n const focusPosition = createRelativePositionFromTypeIndex(focusYText, focusOffset!)\n return {\n focus: {\n doc: focusYText.doc!,\n position: focusPosition\n },\n anchor: {\n doc: anchorYText.doc!,\n position: anchorPosition\n }\n }\n }\n }\n }\n }\n return null\n }\n\n restoreCursorPosition(position: CursorPosition | null) {\n if (!position) {\n this.selection.unSelect()\n return\n }\n const selection = this.getAbstractSelection(position)\n if (selection) {\n this.selection.setBaseAndExtent(\n selection.anchorSlot,\n selection.anchorOffset,\n selection.focusSlot,\n selection.focusOffset)\n }\n }\n\n private initSyncEvent(yDoc: YDoc) {\n this.subscriptions.push(\n this.scheduler.onDocChanged.pipe(\n map(item => {\n return item.filter(i => {\n return i.from !== ChangeOrigin.Remote\n })\n }),\n filter(item => {\n return item.length\n })\n ).subscribe(() => {\n const updates: Update[] = []\n\n let update: Update | null = null\n\n const updateRemoteActions = this.updateRemoteActions.get(yDoc) || []\n\n for (const item of updateRemoteActions) {\n if (!update) {\n update = {\n record: item.record,\n actions: []\n }\n updates.push(update)\n }\n if (update.record === item.record) {\n update.actions.push(item.action)\n } else {\n update = {\n record: item.record,\n actions: [item.action]\n }\n updates.push(update)\n }\n }\n\n this.updateRemoteActions.delete(yDoc)\n\n for (const item of updates) {\n yDoc.transact(() => {\n item.actions.forEach(fn => {\n fn()\n })\n }, item.record ? yDoc : this.noRecord)\n }\n })\n )\n }\n\n private syncComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n let state = sharedComponent.get('state') as YMap<any>\n if (!state) {\n state = new YMap<any>()\n this.syncLocalMapToSharedMap(localComponent.state as ProxyModel<Record<string, any>>, state)\n yDoc.transact(() => {\n sharedComponent.set('state', state)\n })\n } else {\n Object.keys(localComponent.state).forEach(key => {\n Reflect.deleteProperty(localComponent.state, key)\n })\n this.syncSharedMapToLocalMap(state, localComponent.state as ProxyModel<Record<string, any>>)\n }\n }\n\n private syncSlot(sharedSlot: YText, localSlot: Slot) {\n const syncRemote = (ev: YTextEvent, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n localSlot.retain(0)\n ev.keysChanged.forEach(key => {\n const change = ev.keys.get(key)\n if (!change) {\n return\n }\n const updateType = change.action\n if (updateType === 'update' || updateType === 'add') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, sharedSlot.getAttribute(key))\n }\n } else if (updateType === 'delete') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.removeAttribute(attribute)\n }\n }\n })\n ev.delta.forEach(action => {\n if (Reflect.has(action, 'retain')) {\n if (action.attributes) {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n if (formats.length) {\n localSlot.retain(action.retain!, formats)\n }\n }\n localSlot.retain(localSlot.index + action.retain!)\n } else if (action.insert) {\n const index = localSlot.index\n let length = 1\n if (typeof action.insert === 'string') {\n length = action.insert.length\n localSlot.insert(action.insert, remoteFormatsToLocal(this.registry, action.attributes))\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component)\n }\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! > index) {\n this.selection.setAnchor(localSlot, this.selection.anchorOffset! + length)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! > index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! + length)\n }\n }\n } else if (action.delete) {\n const index = localSlot.index\n localSlot.delete(action.delete)\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! >= index) {\n this.selection.setAnchor(localSlot, this.selection.startOffset! - action.delete)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! >= index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! - action.delete)\n }\n }\n }\n })\n })\n }\n sharedSlot.observe(syncRemote)\n\n const sub = localSlot.onContentChange.subscribe(actions => {\n this.runLocalUpdate(sharedSlot.doc, true, () => {\n let offset = 0\n let length = 0\n for (const action of actions) {\n if (action.type === 'retain') {\n const formats = action.formats\n if (formats) {\n const keys = Object.keys(formats)\n let length = keys.length\n keys.forEach(key => {\n const formatter = this.registry.getFormatter(key)\n if (!formatter) {\n length--\n Reflect.deleteProperty(formats, key)\n }\n })\n if (length) {\n sharedSlot.format(offset, action.offset, formats)\n }\n } else {\n offset = action.offset\n }\n } else if (action.type === 'contentInsert') {\n const delta = sharedSlot.toDelta()\n const isEmpty = delta.length === 1 && delta[0].insert === Slot.emptyPlaceholder\n if (typeof action.content === 'string') {\n length = action.content.length\n sharedSlot.insert(offset, action.content, action.formats || {})\n } else {\n length = 1\n const sharedComponent = this.createSharedComponentByLocalComponent(action.ref as Component)\n sharedSlot.insertEmbed(offset, sharedComponent, action.formats || {})\n }\n\n if (isEmpty && offset === 0) {\n sharedSlot.delete(sharedSlot.length - 1, 1)\n }\n offset += length\n } else if (action.type === 'delete') {\n const delta = sharedSlot.toDelta()\n if (sharedSlot.length) {\n sharedSlot.delete(offset, action.count)\n }\n if (sharedSlot.length === 0) {\n sharedSlot.insert(0, '\\n', delta[0]?.attributes)\n }\n } else if (action.type === 'attrSet') {\n sharedSlot.setAttribute(action.name, action.value)\n } else if (action.type === 'attrDelete') {\n sharedSlot.removeAttribute(action.name)\n }\n }\n })\n })\n\n this.slotMap.set(localSlot, sharedSlot)\n\n localSlot.__changeMarker__.addDetachCallback(() => {\n this.slotMap.delete(localSlot)\n sharedSlot.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n\n destroy() {\n this.subscriptions.forEach(i => i.unsubscribe())\n this.subscriptions = []\n }\n\n private syncSharedMapToLocalMap(sharedMap: YMap<any>, localMap: ProxyModel<Record<string, any>>) {\n sharedMap.forEach((value, key) => {\n localMap[key] = this.createLocalModelBySharedByModel(value)\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createLocalMapBySharedMap(sharedMap: YMap<any>): ProxyModel<Record<string, any>> {\n const localMap = observe({}) as ProxyModel<Record<string, any>>\n this.syncSharedMapToLocalMap(sharedMap, localMap)\n return localMap\n }\n\n private createLocalArrayBySharedArray(sharedArray: YArray<any>): ProxyModel<any[]> {\n const raw: any[] = []\n for (let i = 0; i < sharedArray.length; i++) {\n const item = sharedArray.get(i)\n if (!this.isArrayHoleElement(item)) {\n raw[i] = this.createLocalModelBySharedByModel(item)\n }\n }\n raw.length = sharedArray.length\n const localArray = observe(raw) as ProxyModel<any[]>\n this.syncArray(sharedArray, localArray)\n return localArray\n }\n\n private syncLocalMapToSharedMap(localMap: ProxyModel<Record<string, any>>, sharedMap: YMap<any>) {\n Object.entries(localMap).forEach(([key, value]) => {\n sharedMap.set(key, this.createSharedModelByLocalModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createSharedMapByLocalMap(localMap: ProxyModel<Record<string, any>>): YMap<any> {\n const sharedMap = new YMap<any>()\n this.syncLocalMapToSharedMap(localMap, sharedMap)\n return sharedMap\n }\n\n private createSharedArrayByLocalArray(localArray: ProxyModel<any[]>): YArray<any> {\n const sharedArray = new YArray<any>()\n const raw = toRaw(localArray) as any[]\n for (let i = 0; i < raw.length; i++) {\n if (i in raw) {\n sharedArray.push([this.sharedModelForArraySlot(raw[i])])\n } else {\n sharedArray.push([this.createArrayHoleXmlElement()])\n }\n }\n this.syncArray(sharedArray, localArray)\n return sharedArray\n }\n\n private createSharedSlotByLocalSlot(localSlot: Slot): YText {\n const sharedSlot = new YText()\n const isAsyncSlot = localSlot instanceof AsyncSlot\n sharedSlot.setAttribute('schema', [...localSlot.schema])\n sharedSlot.setAttribute('type', isAsyncSlot ? 'async' : 'sync')\n\n if (isAsyncSlot) {\n let isDestroyed = false\n const sharedMetadata = this.createSharedMapByLocalMap(localSlot.metadata)\n sharedSlot.setAttribute('metadata', sharedMetadata)\n this.subModelLoader.createSubModelBySlot(localSlot).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const content = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncLocalMapToSharedMap(localSlot.state, state)\n this.initSharedSlotByLocalSlot(content, localSlot)\n this.syncSlot(content, localSlot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: content\n })\n this.initSyncEvent(subDocument)\n localSlot.loader.markAsLoaded()\n })\n localSlot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return sharedSlot\n }\n\n const sharedSlotState = new YMap()\n this.syncLocalMapToSharedMap(localSlot.state as ProxyModel<Record<string, any>>, sharedSlotState)\n sharedSlot.setAttribute('state', sharedSlotState)\n\n const sharedContent = new YText()\n this.initSharedSlotByLocalSlot(sharedContent, localSlot)\n sharedSlot.insertEmbed(0, sharedContent)\n this.syncSlot(sharedContent, localSlot)\n return sharedSlot\n }\n\n private initSharedSlotByLocalSlot(sharedContent: YText, localSlot: Slot) {\n let offset = 0\n localSlot.toDelta().forEach(i => {\n let formats: any = {}\n if (i.formats) {\n i.formats.forEach(item => {\n formats[item[0].name] = item[1]\n })\n } else {\n formats = null\n }\n if (typeof i.insert === 'string') {\n sharedContent.insert(offset, i.insert, formats)\n } else {\n const sharedComponent = this.createSharedComponentByLocalComponent(i.insert)\n sharedContent.insertEmbed(offset, sharedComponent, formats)\n }\n offset += i.insert.length\n })\n localSlot.getAttributes().forEach(item => {\n sharedContent.setAttribute(item[0].name, item[1])\n })\n }\n\n private createLocalSlotBySharedSlot(sharedSlot: YText): Slot {\n const type = sharedSlot.getAttribute('type')\n const schema = sharedSlot.getAttribute('schema')\n\n if (type === 'async') {\n const metadata = sharedSlot.getAttribute('metadata') as YMap<any>\n const slot = new AsyncSlot(schema || [], {}, {})\n this.syncSharedMapToLocalMap(metadata, slot.metadata as ProxyModel<Record<string, any>>)\n const loadedSubDocument = this.subModelLoader.getLoadedModelBySlot(slot)\n if (loadedSubDocument) {\n const subContent = loadedSubDocument.getText('content')\n const data = loadedSubDocument.getMap('state')\n this.syncSharedMapToLocalMap(data, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(loadedSubDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: loadedSubDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n return slot\n }\n let isDestroyed = false\n slot.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelBySlot(slot)\n }).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const subContent = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncSharedMapToLocalMap(state, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(subDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n })\n slot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return slot\n }\n\n const contentDelta = sharedSlot.toDelta()\n const content = contentDelta[0]?.insert\n\n if (!(content instanceof YText)) {\n throw collaborateErrorFn('shared slot content type is not `YText`.')\n }\n\n const localSlot = new Slot(schema || [], {})\n\n const sharedSlotState = sharedSlot.getAttribute('state')\n this.syncSharedMapToLocalMap(sharedSlotState, localSlot.state as ProxyModel<Record<string, any>>)\n\n this.initLocalSlotBySharedSlot(content, localSlot)\n\n this.syncSlot(content, localSlot)\n return localSlot\n }\n\n private initLocalSlotBySharedSlot(content: YText, localSlot: Slot) {\n const delta = content.toDelta()\n\n const attrs = content.getAttributes()\n Object.keys(attrs).forEach(key => {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, attrs[key])\n }\n })\n for (const action of delta) {\n if (action.insert) {\n if (typeof action.insert === 'string') {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n localSlot.insert(action.insert, formats)\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component, remoteFormatsToLocal(this.registry, action.attributes))\n }\n } else {\n throw collaborateErrorFn('unexpected delta action.')\n }\n }\n }\n\n private createSharedModelByLocalModel(localModel: any) {\n if (localModel instanceof Slot) {\n return this.createSharedSlotByLocalSlot(localModel)\n }\n if (Array.isArray(localModel)) {\n return this.createSharedArrayByLocalArray(localModel as ProxyModel<any[]>)\n }\n if (typeof localModel === 'object' && localModel !== null) {\n return this.createSharedMapByLocalMap(localModel)\n }\n return localModel\n }\n\n private createLocalModelBySharedByModel(sharedModel: any) {\n if (sharedModel instanceof YMap) {\n return this.createLocalMapBySharedMap(sharedModel)\n }\n if (sharedModel instanceof YArray) {\n return this.createLocalArrayBySharedArray(sharedModel)\n }\n if (sharedModel instanceof YText) {\n return this.createLocalSlotBySharedSlot(sharedModel)\n }\n return sharedModel\n }\n\n\n private createSharedComponentByLocalComponent(component: Component | AsyncComponent): YMap<any> {\n const sharedComponent = new YMap()\n sharedComponent.set('name', component.name)\n\n if (component instanceof AsyncComponent) {\n sharedComponent.set('type', 'async')\n const sharedMetadata = this.createSharedMapByLocalMap(component.metadata)\n sharedComponent.set('metadata', sharedMetadata)\n const state = component.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n this.subModelLoader.createSubModelByComponent(component).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, component)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n this.initSyncEvent(subDocument)\n component.loader.markAsLoaded()\n })\n return sharedComponent\n }\n\n const sharedState = this.createSharedMapByLocalMap(component.state as ProxyModel<Record<string, any>>)\n sharedComponent.set('state', sharedState)\n sharedComponent.set('type', 'sync')\n return sharedComponent\n }\n\n private createLocalComponentBySharedComponent(yMap: YMap<any>): Component {\n const componentName = yMap.get('name') as string\n const type = yMap.get('type') as string\n\n let instance: Component<any> | null\n if (type === 'async') {\n instance = this.registry.createComponentByData(componentName, {}, {})\n if (instance instanceof AsyncComponent) {\n const sharedMetadata = yMap.get('metadata') as YMap<any>\n this.syncSharedMapToLocalMap(sharedMetadata, instance.metadata)\n const loadedSubDocument = this.subModelLoader.getLoadedModelByComponent(instance)\n if (loadedSubDocument) {\n const state = loadedSubDocument.getMap('state')\n this.syncComponent(loadedSubDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: loadedSubDocument\n })\n instance.loader.markAsLoaded()\n return instance\n }\n\n const state = instance.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n instance.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelByComponent(instance as AsyncComponent)\n })\n .then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n ;(instance as AsyncComponent).loader.markAsLoaded()\n })\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n } else if (instance instanceof Component) {\n throw collaborateErrorFn(`component name \\`${componentName}\\` is not a async component.`)\n }\n } else {\n const sharedState = yMap.get('state') as YMap<any>\n const state = this.createLocalMapBySharedMap(sharedState)\n instance = this.registry.createComponentByData(componentName, state)\n }\n if (instance) {\n return instance\n }\n\n throw collaborateErrorFn(`cannot find component factory \\`${componentName}\\`.`)\n }\n\n private createArrayHoleXmlElement() {\n return new XmlElement(ARRAY_HOLE_ELEMENT_NODE)\n }\n\n private isArrayHoleElement(sharedModel: any): boolean {\n return sharedModel instanceof XmlElement && sharedModel.nodeName === ARRAY_HOLE_ELEMENT_NODE\n }\n\n /**\n * 仅用于 YArray ↔ 可观察数组:本地 `undefined` 槽位用 XmlElement 占位同步到 Yjs(不与对象字面量同步混用)。\n */\n private sharedModelForArraySlot(localItem: any) {\n if (localItem === undefined) {\n return this.createArrayHoleXmlElement()\n }\n return this.createSharedModelByLocalModel(localItem)\n }\n\n /**\n * 在可观察数组中插入稀疏空洞(与 YArray 中 XmlElement 占位对齐)。\n * 仅在远端同步路径调用;直接操作 raw,避免走插入 undefined 的可观察路径。\n */\n private insertSparseHole(localArray: ProxyModel<any[]>, atIndex: number) {\n const raw = toRaw(localArray) as any[]\n const len = raw.length\n if (atIndex >= len) {\n raw.length = atIndex + 1\n return\n }\n for (let i = len; i > atIndex; i--) {\n if ((i - 1) in raw) {\n raw[i] = raw[i - 1]\n } else {\n delete raw[i]\n }\n }\n delete raw[atIndex]\n }\n\n /**\n * 双向同步数组\n * @param sharedArray\n * @param localArray\n * @private\n */\n private syncArray(sharedArray: YArray<any>, localArray: ProxyModel<any[]>) {\n function logError(type: string) {\n console.error(collaborateErrorFn(`${type} error, length exceeded, path in ${localArray.__changeMarker__.getPaths().join('/')}`))\n }\n\n const sub = localArray.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedArray.doc, !localArray.__changeMarker__.irrevocableUpdate, () => {\n let index = 0\n for (const action of actions) {\n switch (action.type) {\n case 'retain':\n index = action.offset\n break\n case 'insert': {\n const ref = action.ref\n if (!Array.isArray(ref)) {\n throw collaborateErrorFn('The insertion action must have a reference value.')\n }\n const data = ref.map(item => {\n return this.sharedModelForArraySlot(item)\n })\n if (index <= sharedArray.length) {\n sharedArray.insert(index, data)\n } else {\n sharedArray.insert(sharedArray.length, data)\n logError('insert')\n }\n }\n break\n case 'delete':\n if (action.count <= 0) {\n break\n }\n if (index < sharedArray.length) {\n sharedArray.delete(index, action.count)\n } else {\n logError('delete')\n }\n break\n case 'setIndex':\n if (action.index < sharedArray.length) {\n sharedArray.delete(action.index, 1)\n sharedArray.insert(action.index, [this.sharedModelForArraySlot(action.ref)])\n } else {\n sharedArray.insert(sharedArray.length, [this.sharedModelForArraySlot(action.ref)])\n logError('setIndex')\n }\n break\n }\n }\n })\n })\n\n const syncRemote = (ev: YArrayEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n let index = 0\n ev.delta.forEach((action) => {\n if (Reflect.has(action, 'retain')) {\n index += action.retain as number\n } else if (action.insert) {\n let at = index\n for (const item of action.insert as Array<any>) {\n if (this.isArrayHoleElement(item)) {\n this.insertSparseHole(localArray, at)\n } else {\n localArray.splice(at, 0, this.createLocalModelBySharedByModel(item))\n }\n at++\n }\n index = at\n } else if (action.delete) {\n localArray.splice(index, action.delete)\n }\n })\n })\n }\n\n sharedArray.observe(syncRemote)\n localArray.__changeMarker__.addDetachCallback(() => {\n sub.unsubscribe()\n sharedArray.unobserve(syncRemote)\n })\n }\n\n /**\n * 双向同步对象\n * @param sharedObject\n * @param localObject\n * @private\n */\n private syncObject(sharedObject: YMap<any>, localObject: ProxyModel<Record<string, any>>) {\n const syncRemote = (ev: YMapEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n ev.changes.keys.forEach((item, key) => {\n if (item.action === 'add' || item.action === 'update') {\n const value = sharedObject.get(key)\n localObject[key] = this.createLocalModelBySharedByModel(value)\n } else {\n Reflect.deleteProperty(localObject, key)\n }\n })\n })\n }\n\n sharedObject.observe(syncRemote)\n\n const sub = localObject.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedObject.doc, !localObject.__changeMarker__.irrevocableUpdate, () => {\n for (const action of actions) {\n switch (action.type) {\n case 'propSet': {\n const subModel = this.createSharedModelByLocalModel(action.ref)\n sharedObject.set(action.key, subModel)\n if (sharedObject.size === 0) {\n // 奇怪的 bug,设置了子模型,但子模型会标记为 deleted,导致设置后无效\n console.error(collaborateErrorFn(`prop set error, key is ${action.key}`))\n }\n }\n break\n case 'propDelete':\n sharedObject.delete(action.key)\n break\n }\n }\n })\n })\n\n localObject.__changeMarker__.addDetachCallback(function () {\n sharedObject.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n private runLocalUpdate(yDoc: YDoc | null, record: boolean, fn: () => void) {\n if (this.updateFromRemote || !yDoc) {\n return\n }\n let changeList = this.updateRemoteActions.get(yDoc)\n if (!changeList) {\n changeList = []\n this.updateRemoteActions.set(yDoc, changeList)\n }\n changeList.push({\n record,\n action: fn\n })\n }\n\n private runRemoteUpdate(tr: Transaction, fn: () => void) {\n if (tr.origin === tr.doc) {\n return\n }\n this.updateFromRemote = true\n if (tr.origin instanceof UndoManager) {\n this.scheduler.historyApplyTransact(fn)\n } else {\n this.scheduler.remoteUpdateTransact(fn)\n }\n this.updateFromRemote = false\n }\n}\n\nfunction remoteFormatsToLocal(registry: Registry, attrs?: any,) {\n const formats: Formats = []\n if (attrs) {\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (formatter) {\n formats.push([formatter, attrs[key]])\n }\n })\n }\n return formats\n}\n","import { Inject, Injectable, Optional } from '@viewfly/core'\nimport { History, HISTORY_STACK_SIZE, makeError, RootComponentRef, Scheduler } from '@textbus/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n Item,\n Transaction,\n UndoManager\n} from 'yjs'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\n\nexport abstract class CustomUndoManagerConfig {\n abstract captureTimeout?: number\n\n abstract captureTransaction?(arg0: Transaction): boolean\n\n abstract deleteFilter?(arg0: Item): boolean\n}\n\nconst collabHistoryErrorFn = makeError('CollabHistory')\n\n@Injectable()\nexport class CollabHistory implements History {\n onBack: Observable<void>\n onForward: Observable<void>\n onChange: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.manager?.canUndo() || false\n }\n\n get canForward() {\n return this.manager?.canRedo() || false\n }\n\n private manager: UndoManager | null = null\n\n private historyItems: Array<CollaborateHistorySelectionPosition> = []\n private index = 0\n private subscriptions: Subscription[] = []\n\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private changeEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n\n constructor(private rootComponentRef: RootComponentRef,\n private collaborate: Collaborate,\n private scheduler: Scheduler,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onChange = this.changeEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n\n }\n\n listen() {\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n const undoManagerConfig = this.undoManagerConfig || {}\n const manager = new UndoManager(root, {\n captureTimeout: typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500,\n trackedOrigins: new Set<any>([this.collaborate.yDoc]),\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n this.manager = manager\n\n let beforePosition: CursorPosition | null = null\n this.subscriptions.push(\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n beforePosition = this.collaborate.getRelativeCursorLocation()\n }),\n this.collaborate.onAddSubModel.subscribe(() => {\n throw collabHistoryErrorFn('single document does not support submodels.')\n })\n )\n\n manager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo') {\n if (event.origin === manager) {\n this.index++\n } else {\n this.historyItems.length = this.index\n this.historyItems.push({\n before: beforePosition,\n after: this.collaborate.getRelativeCursorLocation()\n })\n this.index++\n }\n } else {\n this.index--\n }\n if (manager.undoStack.length > this.stackSize) {\n this.historyItems.shift()\n manager.undoStack.shift()\n }\n if (event.origin === this.collaborate.yDoc) {\n this.pushEvent.next()\n }\n this.changeEvent.next()\n })\n manager.on('stack-item-popped', (ev: any) => {\n const index = ev.type === 'undo' ? this.index : this.index - 1\n const position = this.historyItems[index] || null\n const p = ev.type === 'undo' ? position?.before : position?.after\n this.collaborate.restoreCursorPosition(p)\n })\n }\n\n\n back() {\n if (this.canBack) {\n this.manager?.undo()\n this.backEvent.next()\n }\n }\n\n forward() {\n if (this.canForward) {\n this.manager?.redo()\n this.forwardEvent.next()\n }\n }\n\n clear() {\n const last = this.historyItems.pop()\n this.historyItems = last ? [last] : []\n this.index = last ? 1 : 0\n this.manager?.clear()\n this.changeEvent.next()\n }\n\n destroy() {\n this.index = 0\n this.historyItems = []\n this.subscriptions.forEach(i => i.unsubscribe())\n if (this.manager) {\n this.manager.destroy()\n this.manager.captureTransaction = () => true\n this.manager.deleteFilter = () => true\n this.manager.trackedOrigins = new Set([null])\n }\n\n this.manager = null\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\nimport { Textbus } from '@textbus/core'\n\nexport interface Message<T> {\n clientId: number\n message: T\n}\n\n/**\n * 协作消息总线,用于同步各终端消息\n */\nexport abstract class MessageBus<T> {\n onSync: Observable<void>\n protected syncEvent = new Subject<void>()\n\n constructor() {\n this.onSync = this.syncEvent.asObservable()\n }\n\n /**\n * 立即同步消息\n */\n sync() {\n this.syncEvent.next()\n }\n\n /**\n * 当需要同步协作消息是,Textbus 会自动调用,并把返回数据同步到其它终端\n */\n abstract get(textbus: Textbus): T\n\n /**\n * 当远程消息更新时,Textbus 会自动调用\n * @param message\n * @param textbus\n */\n abstract consume(message: Message<T>[], textbus: Textbus): void\n}\n","import { AbstractType, Item, UndoManager, Doc as YDoc } from 'yjs'\nimport { Inject, Injectable, Optional } from '@viewfly/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport { History, HISTORY_STACK_SIZE, RootComponentRef, Scheduler } from '@textbus/core'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\nimport { CustomUndoManagerConfig } from './collab-history'\n\ninterface HistoryStackItem extends CollaborateHistorySelectionPosition {\n undoManagers: UndoManager[]\n}\n\n@Injectable()\nexport class MultipleDocCollabHistory implements History {\n onChange: Observable<void>\n onBack: Observable<void>\n onForward: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.actionStack.length > 0 && this.index > 0\n }\n\n get canForward() {\n return this.actionStack.length > 0 && this.index < this.actionStack.length\n }\n\n isListen = false\n\n private changeEvent = new Subject<void>()\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n private actionStack: HistoryStackItem[] = []\n\n private index = 0\n\n private stackItem: HistoryStackItem | null = null\n private timer: any = null\n private beforePosition: CursorPosition | null = null\n\n private subscription = new Subscription()\n\n private subDocs = new Set<AbstractType<any>>()\n\n private listenerCaches = new Set<UndoManager>()\n\n constructor(private collaborate: Collaborate,\n private scheduler: Scheduler,\n private rootComponentRef: RootComponentRef,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onChange = this.changeEvent.asObservable()\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n }\n\n listen() {\n this.isListen = true\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n this.listenItem(root, this.collaborate.yDoc)\n\n this.subscription.add(\n this.collaborate.onAddSubModel.subscribe(({yType, yDoc}) => {\n if (this.subDocs.has(yType)) {\n return\n }\n this.subDocs.add(yType)\n if (this.isListen) {\n this.listenItem(yType, yDoc)\n }\n }),\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n this.beforePosition = this.collaborate.getRelativeCursorLocation()\n })\n )\n }\n\n forward() {\n if (!this.canForward) {\n return\n }\n clearTimeout(this.timer as any)\n const item = this.actionStack[this.index]\n if (item) {\n for (const i of item.undoManagers) {\n i.redo()\n }\n this.collaborate.restoreCursorPosition(item.after)\n }\n this.index++\n this.forwardEvent.next()\n this.changeEvent.next()\n }\n\n back() {\n if (!this.canBack) {\n return\n }\n clearTimeout(this.timer as any)\n let historyStackItem: HistoryStackItem\n if (this.stackItem) {\n historyStackItem = this.stackItem\n this.stackItem = null\n } else {\n this.index--\n historyStackItem = this.actionStack[this.index]\n }\n let len = historyStackItem.undoManagers.length\n while (len > 0) {\n len--\n historyStackItem.undoManagers[len].undo()\n }\n if (historyStackItem) {\n const beforePosition = historyStackItem.before\n this.collaborate.restoreCursorPosition(beforePosition)\n this.backEvent.next()\n this.changeEvent.next()\n }\n }\n\n clear() {\n this.actionStack = []\n this.stackItem = null\n this.index = 0\n this.beforePosition = null\n clearTimeout(this.timer as any)\n this.listenerCaches.forEach((undoManager) => {\n undoManager.clear()\n })\n this.changeEvent.next()\n }\n\n destroy() {\n this.clear()\n this.beforePosition = this.stackItem = null\n this.subscription.unsubscribe()\n this.listenerCaches.forEach((undoManager) => {\n undoManager.destroy()\n })\n this.subDocs.clear()\n this.listenerCaches.clear()\n }\n\n private listenItem(yType: AbstractType<any>, yDoc: YDoc) {\n const undoManagerConfig = this.undoManagerConfig || {}\n const undoManager = new UndoManager(yType, {\n trackedOrigins: new Set([yDoc]),\n captureTimeout: 0,\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n\n undoManager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo' && !(event.origin instanceof UndoManager)) {\n if (this.index != this.actionStack.length) {\n const redoStack = this.actionStack.slice(this.index)\n redoStack.forEach(item => {\n item.undoManagers.forEach(i => {\n i.clear(false, true)\n })\n })\n this.actionStack.length = this.index\n this.changeEvent.next()\n }\n if (this.stackItem === null) {\n this.stackItem = {\n before: this.beforePosition,\n after: null,\n undoManagers: []\n }\n this.timer = setTimeout(() => {\n if (this.actionStack.length >= this.stackSize) {\n this.actionStack.shift()\n } else {\n this.index++\n }\n // this.beforePosition = this.collaborate.getRelativeCursorLocation()\n this.stackItem!.after = this.beforePosition\n this.actionStack.push(this.stackItem!)\n this.stackItem = null\n this.pushEvent.next()\n this.changeEvent.next()\n }, typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500)\n }\n\n this.stackItem.undoManagers.push(undoManager)\n }\n })\n\n this.listenerCaches.add(undoManager)\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\n\n/**\n * 协作通信通用接口\n */\nexport abstract class SyncConnector {\n /**\n * 当文档加载完成时触发的观察者\n */\n onLoad: Observable<void>\n /**\n * 当文档 awareness 状态变更时触发的观察者\n */\n onStateChange: Observable<any[]>\n\n protected loadEvent = new Subject<void>()\n protected stateChangeEvent = new Subject<any[]>()\n\n protected constructor() {\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n }\n\n /**\n * 设置 awareness 状态\n * @param key 状态的 key\n * @param data 状态值\n */\n abstract setLocalStateField(key: string, data: Record<string, any>): void\n\n /**\n * 当文档销毁时调用\n */\n abstract onDestroy(): void\n}\n","import { HocuspocusProvider } from '@hocuspocus/provider'\nimport { HocuspocusProviderConfiguration } from '@hocuspocus/provider'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class HocuspocusConnector extends SyncConnector {\n provide: HocuspocusProvider\n\n constructor(config: HocuspocusProviderConfiguration) {\n super()\n this.provide = new HocuspocusProvider({\n ...config,\n onSynced: (data) => {\n config.onSynced?.(data)\n this.loadEvent.next()\n },\n onAwarenessUpdate: (data) => {\n config.onAwarenessUpdate?.(data)\n const states: Message<any>[] = data.states.map(state => {\n return {\n clientId: state.clientId,\n message: state.message as any\n }\n })\n this.stateChangeEvent.next(states)\n },\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.setAwarenessField(key, data)\n }\n\n onDestroy() {\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { Doc as YDoc } from 'yjs'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport interface LocalConnectorOptions {\n /**\n * 与其它连接器一致,会出现在 `onStateChange` 的 `clientId` 中。\n * 多实例场景可传入不同值以模拟多客户端。\n */\n clientId?: number\n}\n\n/**\n * 不经网络的协作连接器,实现与 {@link SyncConnector} 相同的对外行为,\n * 便于在单元测试中配合 {@link CollaborateModule} 使用,无需 WebSocket / Provider。\n *\n * - `onLoad`:在微任务中触发一次,对应远端「已同步可编辑」的时机。\n * - `onStateChange`:在每次 {@link LocalConnector.setLocalStateField} 后发出当前客户端状态,\n * 载荷形状与 `YWebsocketConnector` 一致(`{ clientId, message }`,其中 `message` 为 awareness 上的 `message` 字段)。\n *\n * 第一个参数与 `createConnector(yDoc)` 对齐,便于直接传入 `Collaborate` 的文档;当前实现不读写该 `YDoc`。\n */\nexport class LocalConnector extends SyncConnector {\n readonly clientId: number\n\n private destroyed = false\n private fields: Record<string, any> = {}\n\n constructor(_yDoc?: YDoc, options?: LocalConnectorOptions) {\n super()\n this.clientId = options?.clientId ?? 0\n Promise.resolve().then(() => {\n if (!this.destroyed) {\n this.loadEvent.next()\n }\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n if (this.destroyed) {\n return\n }\n this.fields[key] = data\n this.emitAwarenessStates()\n }\n\n onDestroy() {\n this.destroyed = true\n }\n\n /**\n * 读取当前本地 awareness 字段快照,仅用于测试断言。\n */\n getLocalAwarenessSnapshot(): Readonly<Record<string, any>> {\n return { ...this.fields }\n }\n\n private emitAwarenessStates() {\n const states: Message<any>[] = []\n states.push({\n clientId: this.clientId,\n message: this.fields.message\n })\n this.stateChangeEvent.next(states)\n }\n}\n","import { Doc as YDoc } from 'yjs'\nimport { WebsocketProvider } from 'y-websocket'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class YWebsocketConnector extends SyncConnector {\n provide: WebsocketProvider\n\n private onSync = (is: boolean) => {\n if (is) {\n this.loadEvent.next()\n }\n }\n\n private onUpdate = () => {\n const syncStates: Message<any>[] = []\n this.provide.awareness.getStates().forEach((state, id) => {\n syncStates.push({\n clientId: id,\n message: state.message,\n })\n })\n this.stateChangeEvent.next(syncStates)\n }\n\n constructor(url: string, roomName: string, yDoc: YDoc) {\n super()\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n this.provide = new WebsocketProvider(url, roomName, yDoc)\n\n this.provide.once('sync', this.onSync)\n this.provide.awareness.on('update', this.onUpdate)\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.awareness.setLocalStateField(key, data)\n }\n\n onDestroy() {\n this.provide.awareness.off('update', this.onUpdate)\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Subscription } from '@tanbo/stream'\nimport { Provider } from '@viewfly/core'\nimport { Doc as YDoc } from 'yjs'\n\nimport { CollabHistory, Collaborate, MessageBus, NonSubModelLoader, SubModelLoader, SyncConnector } from './base/_api'\n\nexport interface CollaborateConfig {\n createConnector(yDoc: YDoc): SyncConnector\n\n onlyLoad?: boolean\n}\n\nexport class CollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n CollabHistory,\n {\n provide: History,\n useExisting: CollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useClass: NonSubModelLoader\n }\n ]\n\n private timer: any = null\n\n constructor(public config: CollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Provider } from '@viewfly/core'\nimport { Subscription } from '@tanbo/stream'\n\nimport { Collaborate, SyncConnector, MultipleDocCollabHistory, SubModelLoader, MessageBus } from './base/_api'\nimport { CollaborateConfig } from './collaborate-module'\n\nexport interface MultipleDocCollaborateConfig extends CollaborateConfig {\n subModelLoader: SubModelLoader\n}\n\nexport class MultipleDocumentCollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n MultipleDocCollabHistory,\n {\n provide: History,\n useExisting: MultipleDocCollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useFactory: () => {\n return this.config.subModelLoader\n }\n }\n ]\n\n private timer: any = null\n\n constructor(public config: MultipleDocCollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n"],"names":["subModelLoaderErrorFn","makeError","SubModelLoader","NonSubModelLoader","_call_super","createSubModelBySlot","createSubModelByComponent","loadSubModelByComponent","loadSubModelBySlot","getLoadedModelBySlot","getLoadedModelByComponent","ARRAY_HOLE_ELEMENT_NODE","collaborateErrorFn","SlotMap","_define_property","slotAndYTextMap","WeakMap","yTextAndSlotMap","set","key","value","_instanceof","Slot","get","delete","v","Collaborate","scheduler","subModelLoader","yDoc","slotMap","onAddSubModel","subscriptions","updateFromRemote","addSubModelEvent","updateRemoteActions","noRecord","registry","selection","YDoc","Subject","asObservable","syncRootComponent","sharedComponent","localComponent","initSyncEvent","syncComponent","syncRootSlot","sharedSlot","localSlot","length","retain","cleanAttributes","cleanFormats","initLocalSlotBySharedSlot","transact","initSharedSlotByLocalSlot","syncSlot","getAbstractSelection","position","anchorPosition","createAbsolutePositionFromRelativePosition","anchor","doc","focusPosition","focus","focusSlot","type","anchorSlot","anchorOffset","index","focusOffset","getRelativeCursorLocation","anchorYText","createRelativePositionFromTypeIndex","focusYText","restoreCursorPosition","unSelect","setBaseAndExtent","push","onDocChanged","pipe","map","item","filter","i","from","ChangeOrigin","Remote","subscribe","updates","update","record","actions","action","forEach","fn","state","YMap","syncLocalMapToSharedMap","Object","keys","Reflect","deleteProperty","syncSharedMapToLocalMap","syncRemote","ev","tr","runRemoteUpdate","keysChanged","change","updateType","attribute","getAttribute","setAttribute","removeAttribute","delta","has","attributes","formats","remoteFormatsToLocal","insert","component","createLocalComponentBySharedComponent","isSelected","origin","UndoManager","setAnchor","setFocus","startOffset","observe","sub","onContentChange","runLocalUpdate","offset","formatter","getFormatter","format","toDelta","isEmpty","emptyPlaceholder","content","createSharedComponentByLocalComponent","ref","insertEmbed","count","name","__changeMarker__","addDetachCallback","unobserve","unsubscribe","destroy","sharedMap","localMap","createLocalModelBySharedByModel","syncObject","createLocalMapBySharedMap","createLocalArrayBySharedArray","sharedArray","raw","isArrayHoleElement","localArray","syncArray","entries","createSharedModelByLocalModel","createSharedMapByLocalMap","createSharedArrayByLocalArray","YArray","toRaw","sharedModelForArraySlot","createArrayHoleXmlElement","createSharedSlotByLocalSlot","YText","isAsyncSlot","AsyncSlot","schema","isDestroyed","sharedMetadata","metadata","then","subDocument","getText","getMap","next","yType","loader","markAsLoaded","sharedSlotState","sharedContent","getAttributes","createLocalSlotBySharedSlot","contentDelta","slot","loadedSubDocument","subContent","data","onRequestLoad","toPromise","attrs","localModel","Array","isArray","_type_of","sharedModel","AsyncComponent","sharedState","yMap","componentName","instance","createComponentByData","Component","XmlElement","nodeName","localItem","undefined","insertSparseHole","atIndex","len","logError","console","error","getPaths","join","onSelfChange","irrevocableUpdate","at","splice","sharedObject","localObject","changes","subModel","size","changeList","historyApplyTransact","remoteUpdateTransact","CustomUndoManagerConfig","collabHistoryErrorFn","CollabHistory","collaborate","stackSize","onBack","onForward","onChange","onPush","manager","historyItems","backEvent","forwardEvent","changeEvent","pushEvent","rootComponentRef","undoManagerConfig","canBack","canUndo","canForward","canRedo","listen","root","rootComponent","captureTimeout","trackedOrigins","Set","captureTransaction","arg","deleteFilter","beforePosition","onLocalChangeBefore","on","event","before","after","undoStack","shift","p","back","undo","forward","redo","clear","last","pop","MessageBus","onSync","syncEvent","sync","MultipleDocCollabHistory","isListen","actionStack","stackItem","timer","subscription","subDocs","listenerCaches","Subscription","listenItem","add","clearTimeout","undoManagers","historyStackItem","undoManager","redoStack","slice","setTimeout","SyncConnector","onLoad","onStateChange","loadEvent","stateChangeEvent","HocuspocusConnector","config","provide","HocuspocusProvider","_object_spread","onSynced","onAwarenessUpdate","states","clientId","message","setLocalStateField","setAwarenessField","onDestroy","disconnect","LocalConnector","_yDoc","options","destroyed","fields","Promise","resolve","emitAwarenessStates","getLocalAwarenessSnapshot","YWebsocketConnector","url","roomName","is","onUpdate","syncStates","awareness","getStates","id","WebsocketProvider","once","off","CollaborateModule","providers","History","useExisting","useFactory","collab","createConnector","deps","useClass","setup","textbus","messageBus","connector","Selection","consume","onlyLoad","testing","MultipleDocumentCollaborateModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,wBAAwBC,SAAAA,CAAU,qBAAA,CAAA;AAExC;;AAEC,IACM,IAAA,cAAeC,GAAf,SAAeA,cAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,cAAAA,CAAAA;AAoCrB;AAGM,IAAA,iBAAMC,iBAAN,SAAA,cAAA,EAAA;AAAMA,IAAAA,WAAAA,CAAAA,iBAAAA,EAAAA,cAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,CAAAA;AAAN,QAAA,OAAAC,aAAA,CAAA,IAAA,EAAMD,iBAAAA,EAAAA,SAAAA,CAAAA;;AAAAA,IAAAA,eAAAA,CAAAA,iBAAAA,EAAAA;;YACXE,GAAAA,EAAAA,sBAAAA;mBAAAA,SAAAA,oBAAAA,GAAAA;AACE,gBAAA,MAAML,qBAAAA,CAAsB,8CAAA,CAAA;AAC9B,YAAA;;;YAEAM,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;AACE,gBAAA,MAAMN,qBAAAA,CAAsB,mDAAA,CAAA;AAC9B,YAAA;;;YAEAO,GAAAA,EAAAA,yBAAAA;mBAAAA,SAAAA,uBAAAA,GAAAA;AACE,gBAAA,MAAMP,qBAAAA,CAAsB,mDAAA,CAAA;AAC9B,YAAA;;;YAEAQ,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,GAAAA;AACE,gBAAA,MAAMR,qBAAAA,CAAsB,8CAAA,CAAA;AAC9B,YAAA;;;YAEAS,GAAAA,EAAAA,sBAAAA;mBAAAA,SAAAA,oBAAAA,GAAAA;AACE,gBAAA,MAAMT,qBAAAA,CAAsB,8CAAA,CAAA;AAC9B,YAAA;;;YAEAU,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;AACE,gBAAA,MAAMV,qBAAAA,CAAsB,mDAAA,CAAA;AAC9B,YAAA;;;AAvBWG,IAAAA,OAAAA,iBAAAA;EAA0BD,cAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbvC,2DACA,IAAMS,uBAAAA,GAA0B,eAAA;AAiBhC,IAAMC,qBAAqBX,SAAAA,CAAU,aAAA,CAAA;AAErC,IAAA,OAAMY,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,OAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA;AACJ,QAAAC,kBAAA,CAAA,IAAA,EAAQC,mBAAkB,IAAIC,OAAAA,EAAAA,CAAAA;AAC9B,QAAAF,kBAAA,CAAA,IAAA,EAAQG,mBAAkB,IAAID,OAAAA,EAAAA,CAAAA;;AAF1BH,IAAAA,eAAAA,CAAAA,OAAAA,EAAAA;;YAMJK,GAAAA,EAAAA,KAAAA;mBAAAA,SAAAA,GAAAA,CAAIC,GAAQ,EAAEC,KAAU,EAAA;gBACtB,IAAOC,aAAA,CAAHF,GAAAA,EAAeG,IAAAA,CAAAA,EAAM;AACvB,oBAAA,IAAI,CAACP,eAAe,CAACG,GAAG,CAACC,GAAAA,EAAKC,KAAAA,CAAAA;AAC9B,oBAAA,IAAI,CAACH,eAAe,CAACC,GAAG,CAACE,KAAAA,EAAOD,GAAAA,CAAAA;gBAClC,CAAA,MAAO;AACL,oBAAA,IAAI,CAACJ,eAAe,CAACG,GAAG,CAACE,KAAAA,EAAOD,GAAAA,CAAAA;AAChC,oBAAA,IAAI,CAACF,eAAe,CAACC,GAAG,CAACC,GAAAA,EAAKC,KAAAA,CAAAA;AAChC,gBAAA;AACF,YAAA;;;YAIAG,GAAAA,EAAAA,KAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,IAAIJ,GAAQ,EAAA;gBACV,IAAOE,aAAA,CAAHF,GAAAA,EAAeG,IAAAA,CAAAA,EAAM;AACvB,oBAAA,OAAO,IAAI,CAACP,eAAe,CAACQ,GAAG,CAACJ,GAAAA,CAAAA,IAAQ,IAAA;AAC1C,gBAAA;AACA,gBAAA,OAAO,IAAI,CAACF,eAAe,CAACM,GAAG,CAACJ,GAAAA,CAAAA,IAAQ,IAAA;AAC1C,YAAA;;;YAEAK,GAAAA,EAAAA,QAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,QAAOL,GAAiB,EAAA;gBACtB,IAAOE,aAAA,CAAHF,GAAAA,EAAeG,IAAAA,CAAAA,EAAM;AACvB,oBAAA,IAAMG,IAAI,IAAI,CAACV,eAAe,CAACQ,GAAG,CAACJ,GAAAA,CAAAA;AACnC,oBAAA,IAAI,CAACJ,eAAe,CAACS,MAAM,CAACL,GAAAA,CAAAA;AAC5B,oBAAA,IAAIM,CAAAA,EAAG;AACL,wBAAA,IAAI,CAACR,eAAe,CAACO,MAAM,CAACC,CAAAA,CAAAA;AAC9B,oBAAA;gBACF,CAAA,MAAO;AACL,oBAAA,IAAMA,KAAI,IAAI,CAACR,eAAe,CAACM,GAAG,CAACJ,GAAAA,CAAAA;AACnC,oBAAA,IAAI,CAACF,eAAe,CAACO,MAAM,CAACL,GAAAA,CAAAA;AAC5B,oBAAA,IAAIM,EAAAA,EAAG;AACL,wBAAA,IAAI,CAACV,eAAe,CAACS,MAAM,CAACC,EAAAA,CAAAA;AAC9B,oBAAA;AACF,gBAAA;AACF,YAAA;;;AAvCIZ,IAAAA,OAAAA,OAAAA;;AA2DC,IAAA,WAAMa,iBAAN,WAAA;aAAMA,WAAAA,CAYSC,SAAoB,EAC5B,QAA0B,EAC1B,SAA4B,EACpBC,cAA8B,EAAA;AAfvCF,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,WAAAA,CAAAA;;;;;AACXG,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,QAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,WAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,MAAAA,CAAAA;AAEA,QAAAjB,kBAAA,CAAA,IAAA,EAAQkB,iBAAR,MAAA,CAAA;AACA,QAAAlB,kBAAA,CAAA,IAAA,EAAQmB,oBAAR,MAAA,CAAA;AACA,QAAAnB,kBAAA,CAAA,IAAA,EAAQoB,oBAAR,MAAA,CAAA;AAEA,QAAApB,kBAAA,CAAA,IAAA,EAAQqB,uBAAR,MAAA,CAAA;AACA,QAAArB,kBAAA,CAAA,IAAA,EAAQsB,YAAR,MAAA,CAAA;aAEoBT,SAAAA,GAAAA,SAAAA;aACAU,QAAAA,GAAAA,QAAAA;aACAC,SAAAA,GAAAA,SAAAA;aACAV,cAAAA,GAAAA,cAAAA;AAdpBC,QAAAA,IAAAA,CAAAA,IAAAA,GAAO,IAAIU,GAAAA,EAAAA;AACXT,QAAAA,IAAAA,CAAAA,OAAAA,GAAU,IAAIjB,OAAAA,EAAAA;AAGNmB,QAAAA,IAAAA,CAAAA,aAAAA,GAAgC,EAAE;aAClCC,gBAAAA,GAAmB,KAAA;AACnBC,QAAAA,IAAAA,CAAAA,gBAAAA,GAAmB,IAAIM,OAAAA,EAAAA;AAEvBL,QAAAA,IAAAA,CAAAA,mBAAAA,GAAsB,IAAInB,OAAAA,EAAAA;AAC1BoB,QAAAA,IAAAA,CAAAA,QAAAA,GAAW,EAAC;AAMlB,QAAA,IAAI,CAACL,aAAa,GAAG,IAAI,CAACG,gBAAgB,CAACO,YAAY,EAAA;;AAhB9Cf,IAAAA,eAAAA,CAAAA,WAAAA,EAAAA;;YAmBXgB,GAAAA,EAAAA,mBAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,iBAAAA,CAAkBb,IAAU,EAAEc,eAA0B,EAAEC,cAA8B,EAAA;gBACtF,IAAI,CAACC,aAAa,CAAChB,IAAAA,CAAAA;AACnB,gBAAA,IAAI,CAACiB,aAAa,CAACjB,IAAAA,EAAMc,eAAAA,EAAiBC,cAAAA,CAAAA;AAC5C,YAAA;;;YAEAG,GAAAA,EAAAA,cAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,YAAAA,CAAalB,IAAU,EAAEmB,UAAiB,EAAEC,SAAe,EAAA;;gBACzD,IAAID,UAAAA,CAAWE,MAAM,EAAE;AACrBD,oBAAAA,SAAAA,CAAUE,MAAM,CAAC,CAAA,CAAA;oBACjBF,SAAAA,CAAUzB,MAAM,CAACyB,SAAAA,CAAUC,MAAM,CAAA;AACjCD,oBAAAA,SAAAA,CAAUG,eAAe,EAAA;AACzBH,oBAAAA,SAAAA,CAAUI,YAAY,EAAA;oBACtB,IAAI,CAACC,yBAAyB,CAACN,UAAAA,EAAYC,SAAAA,CAAAA;gBAC7C,CAAA,MAAO;AACLpB,oBAAAA,IAAAA,CAAK0B,QAAQ,CAAC,WAAA;wBACZ,KAAA,CAAKC,yBAAyB,CAACR,UAAAA,EAAYC,SAAAA,CAAAA;AAC7C,oBAAA,CAAA,CAAA;AACF,gBAAA;gBACA,IAAI,CAACJ,aAAa,CAAChB,IAAAA,CAAAA;gBACnB,IAAI,CAAC4B,QAAQ,CAACT,UAAAA,EAAYC,SAAAA,CAAAA;AAC5B,YAAA;;;YAEAS,GAAAA,EAAAA,sBAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,qBAAqBC,QAAwB,EAAA;gBAC3C,IAAMC,cAAAA,GAAiBC,0CAAAA,CAA2CF,QAAAA,CAASG,MAAM,CAACH,QAAQ,EAAEA,QAAAA,CAASG,MAAM,CAACC,GAAG,CAAA;gBAC/G,IAAMC,aAAAA,GAAgBH,0CAAAA,CAA2CF,QAAAA,CAASM,KAAK,CAACN,QAAQ,EAAEA,QAAAA,CAASM,KAAK,CAACF,GAAG,CAAA;AAC5G,gBAAA,IAAIH,kBAAkBI,aAAAA,EAAe;oBACnC,IAAME,SAAAA,GAAY,IAAI,CAACpC,OAAO,CAACP,GAAG,CAACyC,cAAcG,IAAI,CAAA;oBACrD,IAAMC,UAAAA,GAAa,IAAI,CAACtC,OAAO,CAACP,GAAG,CAACqC,eAAeO,IAAI,CAAA;AACvD,oBAAA,IAAID,aAAaE,UAAAA,EAAY;wBAC3B,OAAO;4BACLA,UAAAA,EAAAA,UAAAA;AACAC,4BAAAA,YAAAA,EAAcT,eAAeU,KAAK;4BAClCJ,SAAAA,EAAAA,SAAAA;AACAK,4BAAAA,WAAAA,EAAaP,cAAcM;AAC7B,yBAAA;AACF,oBAAA;AACF,gBAAA;gBACA,OAAO,IAAA;AACT,YAAA;;;YAEAE,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;AACE,gBAAA,IAA6D,eAAA,GAAA,IAAI,CAAClC,SAAS,EAAnE8B,UAAAA,GAAqD,eAAA,CAArDA,UAAAA,EAAYC,YAAAA,GAAyC,gBAAzCA,YAAAA,EAAcH,SAAAA,GAA2B,eAAA,CAA3BA,SAAAA,EAAWK,cAAgB,eAAA,CAAhBA,WAAAA;AAC7C,gBAAA,IAAIH,UAAAA,EAAY;AACd,oBAAA,IAAMK,cAAc,IAAI,CAAC3C,OAAO,CAACP,GAAG,CAAC6C,UAAAA,CAAAA;AACrC,oBAAA,IAAIK,WAAAA,EAAa;wBACf,IAAMb,cAAAA,GAAiBc,oCAAoCD,WAAAA,EAAaJ,YAAAA,CAAAA;AACxE,wBAAA,IAAIH,SAAAA,EAAW;AACb,4BAAA,IAAMS,aAAa,IAAI,CAAC7C,OAAO,CAACP,GAAG,CAAC2C,SAAAA,CAAAA;AACpC,4BAAA,IAAIS,UAAAA,EAAY;gCACd,IAAMX,aAAAA,GAAgBU,oCAAoCC,UAAAA,EAAYJ,WAAAA,CAAAA;gCACtE,OAAO;oCACLN,KAAAA,EAAO;AACLF,wCAAAA,GAAAA,EAAKY,WAAWZ,GAAG;wCACnBJ,QAAAA,EAAUK;AACZ,qCAAA;oCACAF,MAAAA,EAAQ;AACNC,wCAAAA,GAAAA,EAAKU,YAAYV,GAAG;wCACpBJ,QAAAA,EAAUC;AACZ;AACF,iCAAA;AACF,4BAAA;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;gBACA,OAAO,IAAA;AACT,YAAA;;;YAEAgB,GAAAA,EAAAA,uBAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,sBAAsBjB,QAA+B,EAAA;AACnD,gBAAA,IAAI,CAACA,QAAAA,EAAU;oBACb,IAAI,CAACrB,SAAS,CAACuC,QAAQ,EAAA;AACvB,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAMvC,SAAAA,GAAY,IAAI,CAACoB,oBAAoB,CAACC,QAAAA,CAAAA;AAC5C,gBAAA,IAAIrB,SAAAA,EAAW;AACb,oBAAA,IAAI,CAACA,SAAS,CAACwC,gBAAgB,CAC7BxC,SAAAA,CAAU8B,UAAU,EACpB9B,SAAAA,CAAU+B,YAAY,EACtB/B,SAAAA,CAAU4B,SAAS,EACnB5B,UAAUiC,WAAW,CAAA;AACzB,gBAAA;AACF,YAAA;;;YAEQ1B,GAAAA,EAAAA,eAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,cAAchB,IAAU,EAAA;;AAC9B,gBAAA,IAAI,CAACG,aAAa,CAAC+C,IAAI,CACrB,IAAI,CAACpD,SAAS,CAACqD,YAAY,CAACC,IAAI,CAC9BC,IAAIC,SAAAA,IAAAA,EAAAA;oBACF,OAAOA,IAAAA,CAAKC,MAAM,CAACC,SAAAA,CAAAA,EAAAA;AACjB,wBAAA,OAAOA,CAAAA,CAAEC,IAAI,KAAKC,YAAAA,CAAaC,MAAM;AACvC,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA,EACAJ,OAAOD,SAAAA,IAAAA,EAAAA;AACL,oBAAA,OAAOA,KAAKjC,MAAM;AACpB,gBAAA,CAAA,CAAA,CAAA,CACAuC,SAAS,CAAC,WAAA;AACV,oBAAA,IAAMC,UAAoB,EAAE;AAE5B,oBAAA,IAAIC,MAAAA,GAAwB,IAAA;AAE5B,oBAAA,IAAMxD,sBAAsB,KAAA,CAAKA,mBAAmB,CAACZ,GAAG,CAACM,SAAS,EAAE;AAE/D,oBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,wBAAA,IAAA,IAAK,YAAcM,mBAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAd,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAmC;AAAnC,4BAAA,IAAMgD,IAAAA,GAAN,KAAA,CAAA,KAAA;AACH,4BAAA,IAAI,CAACQ,MAAAA,EAAQ;gCACXA,MAAAA,GAAS;AACPC,oCAAAA,MAAAA,EAAQT,KAAKS,MAAM;AACnBC,oCAAAA,OAAAA,EAAS;AACX,iCAAA;AACAH,gCAAAA,OAAAA,CAAQX,IAAI,CAACY,MAAAA,CAAAA;AACf,4BAAA;AACA,4BAAA,IAAIA,MAAAA,CAAOC,MAAM,KAAKT,IAAAA,CAAKS,MAAM,EAAE;AACjCD,gCAAAA,MAAAA,CAAOE,OAAO,CAACd,IAAI,CAACI,KAAKW,MAAM,CAAA;4BACjC,CAAA,MAAO;gCACLH,MAAAA,GAAS;AACPC,oCAAAA,MAAAA,EAAQT,KAAKS,MAAM;oCACnBC,OAAAA,EAAS;AAACV,wCAAAA,IAAAA,CAAKW;AAAO;AACxB,iCAAA;AACAJ,gCAAAA,OAAAA,CAAQX,IAAI,CAACY,MAAAA,CAAAA;AACf,4BAAA;AACF,wBAAA;;AAjBK,wBAAA,iBAAA,GAAA,IAAA;AAAA,wBAAA,cAAA,GAAA,GAAA;;;iCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,gCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,4BAAA,IAAA,iBAAA,EAAA;AAAA,gCAAA,MAAA,cAAA;;;;oBAmBL,KAAA,CAAKxD,mBAAmB,CAACX,MAAM,CAACK,IAAAA,CAAAA;AAE3B,oBAAA,IAAA,0BAAA,GAAA,IAAA,EAAA,kBAAA,GAAA,KAAA,EAAA,eAAA,GAAA,SAAA;;;AAAA,4BAAA,IAAMsD,IAAAA,GAAN,MAAA,CAAA,KAAA;AACHtD,4BAAAA,IAAAA,CAAK0B,QAAQ,CAAC,WAAA;AACZ4B,gCAAAA,IAAAA,CAAKU,OAAO,CAACE,OAAO,CAACC,SAAAA,EAAAA,EAAAA;AACnBA,oCAAAA,EAAAA,EAAAA;AACF,gCAAA,CAAA,CAAA;AACF,4BAAA,CAAA,EAAGb,IAAAA,CAAKS,MAAM,GAAG/D,IAAAA,GAAO,MAAKO,QAAQ,CAAA;AACvC,wBAAA,CAAA;AANA,wBAAA,IAAA,IAAK,UAAA,GAAcsD,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAd,MAAA,EAAA,EAAA,0BAAA,GAAA,CAAA,SAAA,UAAA,CAAA,IAAA,EAAA,EAAA,IAAA,CAAA,EAAA,0BAAA,GAAA,IAAA,CAAA,KAAA,EAAA;;AAAA,wBAAA,kBAAA,GAAA,IAAA;AAAA,wBAAA,eAAA,GAAA,GAAA;;;iCAAA,0BAAA,IAAA,UAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,gCAAA,UAAA,CAAA,MAAA,EAAA;;;AAAA,4BAAA,IAAA,kBAAA,EAAA;AAAA,gCAAA,MAAA,eAAA;;;;AAOP,gBAAA,CAAA,CAAA,CAAA;AAEJ,YAAA;;;YAEQ5C,GAAAA,EAAAA,eAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,aAAAA,CAAcjB,IAAU,EAAEc,eAA0B,EAAEC,cAA8B,EAAA;gBAC1F,IAAIqD,KAAAA,GAAQtD,eAAAA,CAAgBpB,GAAG,CAAC,OAAA,CAAA;AAChC,gBAAA,IAAI,CAAC0E,KAAAA,EAAO;AACVA,oBAAAA,KAAAA,GAAQ,IAAIC,GAAAA,EAAAA;AACZ,oBAAA,IAAI,CAACC,uBAAuB,CAACvD,cAAAA,CAAeqD,KAAK,EAAqCA,KAAAA,CAAAA;AACtFpE,oBAAAA,IAAAA,CAAK0B,QAAQ,CAAC,WAAA;wBACZZ,eAAAA,CAAgBzB,GAAG,CAAC,OAAA,EAAS+E,KAAAA,CAAAA;AAC/B,oBAAA,CAAA,CAAA;gBACF,CAAA,MAAO;AACLG,oBAAAA,MAAAA,CAAOC,IAAI,CAACzD,cAAAA,CAAeqD,KAAK,CAAA,CAAEF,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;AACxCmF,wBAAAA,OAAAA,CAAQC,cAAc,CAAC3D,cAAAA,CAAeqD,KAAK,EAAE9E,GAAAA,CAAAA;AAC/C,oBAAA,CAAA,CAAA;AACA,oBAAA,IAAI,CAACqF,uBAAuB,CAACP,KAAAA,EAAOrD,eAAeqD,KAAK,CAAA;AAC1D,gBAAA;AACF,YAAA;;;YAEQxC,GAAAA,EAAAA,UAAAA;mBAAR,SAAQA,QAAAA,CAAST,UAAiB,EAAEC,SAAe,EAAA;;gBACjD,IAAMwD,UAAAA,GAAa,oBAACC,EAAAA,EAAgBC,EAAAA,EAAAA;oBAClC,KAAA,CAAKC,eAAe,CAACD,EAAAA,EAAI,WAAA;AACvB1D,wBAAAA,SAAAA,CAAUE,MAAM,CAAC,CAAA,CAAA;AACjBuD,wBAAAA,EAAAA,CAAGG,WAAW,CAACd,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;AACrB,4BAAA,IAAM2F,MAAAA,GAASJ,EAAAA,CAAGL,IAAI,CAAC9E,GAAG,CAACJ,GAAAA,CAAAA;AAC3B,4BAAA,IAAI,CAAC2F,MAAAA,EAAQ;AACX,gCAAA;AACF,4BAAA;4BACA,IAAMC,UAAAA,GAAaD,OAAOhB,MAAM;4BAChC,IAAIiB,UAAAA,KAAe,QAAA,IAAYA,UAAAA,KAAe,KAAA,EAAO;AACnD,gCAAA,IAAMC,SAAAA,GAAY,KAAA,CAAK3E,QAAQ,CAAC4E,YAAY,CAAC9F,GAAAA,CAAAA;AAC7C,gCAAA,IAAI6F,SAAAA,EAAW;AACb/D,oCAAAA,SAAAA,CAAUiE,YAAY,CAACF,SAAAA,EAAWhE,UAAAA,CAAWiE,YAAY,CAAC9F,GAAAA,CAAAA,CAAAA;AAC5D,gCAAA;4BACF,CAAA,MAAO,IAAI4F,eAAe,QAAA,EAAU;AAClC,gCAAA,IAAMC,UAAAA,GAAY,KAAA,CAAK3E,QAAQ,CAAC4E,YAAY,CAAC9F,GAAAA,CAAAA;AAC7C,gCAAA,IAAI6F,UAAAA,EAAW;AACb/D,oCAAAA,SAAAA,CAAUkE,eAAe,CAACH,UAAAA,CAAAA;AAC5B,gCAAA;AACF,4BAAA;AACF,wBAAA,CAAA,CAAA;AACAN,wBAAAA,EAAAA,CAAGU,KAAK,CAACrB,OAAO,CAACD,SAAAA,MAAAA,EAAAA;AACf,4BAAA,IAAIQ,OAAAA,CAAQe,GAAG,CAACvB,MAAAA,EAAQ,QAAA,CAAA,EAAW;gCACjC,IAAIA,MAAAA,CAAOwB,UAAU,EAAE;AACrB,oCAAA,IAAMC,UAAUC,oBAAAA,CAAqB,KAAA,CAAKnF,QAAQ,EAAEyD,OAAOwB,UAAU,CAAA;oCACrE,IAAIC,OAAAA,CAAQrE,MAAM,EAAE;AAClBD,wCAAAA,SAAAA,CAAUE,MAAM,CAAC2C,MAAAA,CAAO3C,MAAM,EAAGoE,OAAAA,CAAAA;AACnC,oCAAA;AACF,gCAAA;AACAtE,gCAAAA,SAAAA,CAAUE,MAAM,CAACF,SAAAA,CAAUqB,KAAK,GAAGwB,OAAO3C,MAAM,CAAA;4BAClD,CAAA,MAAO,IAAI2C,MAAAA,CAAO2B,MAAM,EAAE;gCACxB,IAAMnD,KAAAA,GAAQrB,UAAUqB,KAAK;AAC7B,gCAAA,IAAIpB,MAAAA,GAAS,CAAA;AACb,gCAAA,IAAI,OAAO4C,MAAAA,CAAO2B,MAAM,KAAK,QAAA,EAAU;oCACrCvE,MAAAA,GAAS4C,MAAAA,CAAO2B,MAAM,CAACvE,MAAM;oCAC7BD,SAAAA,CAAUwE,MAAM,CAAC3B,MAAAA,CAAO2B,MAAM,EAAED,qBAAqB,KAAA,CAAKnF,QAAQ,EAAEyD,MAAAA,CAAOwB,UAAU,CAAA,CAAA;gCACvF,CAAA,MAAO;oCACL,IAAM3E,eAAAA,GAAkBmD,OAAO2B,MAAM;oCACrC,IAAMC,SAAAA,GAAY,KAAA,CAAKC,qCAAqC,CAAChF,eAAAA,CAAAA;AAC7DM,oCAAAA,SAAAA,CAAUwE,MAAM,CAACC,SAAAA,CAAAA;AACnB,gCAAA;gCACA,IAAI,KAAA,CAAKpF,SAAS,CAACsF,UAAU,IAAI,CAAWvG,aAAA,CAATsF,EAAAA,CAAGkB,MAAM,EAAYC,WAAAA,CAAAA,EAAc;oCACpE,IAAI7E,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC8B,UAAU,IAAI,KAAA,CAAK9B,SAAS,CAAC+B,YAAY,GAAIC,KAAAA,EAAO;wCACnF,KAAA,CAAKhC,SAAS,CAACyF,SAAS,CAAC9E,WAAW,KAAA,CAAKX,SAAS,CAAC+B,YAAY,GAAInB,MAAAA,CAAAA;AACrE,oCAAA;oCACA,IAAID,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC4B,SAAS,IAAI,KAAA,CAAK5B,SAAS,CAACiC,WAAW,GAAID,KAAAA,EAAO;wCACjF,KAAA,CAAKhC,SAAS,CAAC0F,QAAQ,CAAC/E,WAAW,KAAA,CAAKX,SAAS,CAACiC,WAAW,GAAIrB,MAAAA,CAAAA;AACnE,oCAAA;AACF,gCAAA;4BACF,CAAA,MAAO,IAAI4C,MAAAA,CAAOtE,MAAM,EAAE;gCACxB,IAAM8C,MAAAA,GAAQrB,UAAUqB,KAAK;gCAC7BrB,SAAAA,CAAUzB,MAAM,CAACsE,MAAAA,CAAOtE,MAAM,CAAA;gCAC9B,IAAI,KAAA,CAAKc,SAAS,CAACsF,UAAU,IAAI,CAAWvG,aAAA,CAATsF,EAAAA,CAAGkB,MAAM,EAAYC,WAAAA,CAAAA,EAAc;oCACpE,IAAI7E,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC8B,UAAU,IAAI,KAAA,CAAK9B,SAAS,CAAC+B,YAAY,IAAKC,MAAAA,EAAO;wCACpF,KAAA,CAAKhC,SAAS,CAACyF,SAAS,CAAC9E,SAAAA,EAAW,KAAA,CAAKX,SAAS,CAAC2F,WAAW,GAAInC,MAAAA,CAAOtE,MAAM,CAAA;AACjF,oCAAA;oCACA,IAAIyB,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC4B,SAAS,IAAI,KAAA,CAAK5B,SAAS,CAACiC,WAAW,IAAKD,MAAAA,EAAO;wCAClF,KAAA,CAAKhC,SAAS,CAAC0F,QAAQ,CAAC/E,SAAAA,EAAW,KAAA,CAAKX,SAAS,CAACiC,WAAW,GAAIuB,MAAAA,CAAOtE,MAAM,CAAA;AAChF,oCAAA;AACF,gCAAA;AACF,4BAAA;AACF,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;AACAwB,gBAAAA,UAAAA,CAAWkF,OAAO,CAACzB,UAAAA,CAAAA;AAEnB,gBAAA,IAAM0B,MAAMlF,SAAAA,CAAUmF,eAAe,CAAC3C,SAAS,CAACI,SAAAA,OAAAA,EAAAA;AAC9C,oBAAA,KAAA,CAAKwC,cAAc,CAACrF,UAAAA,CAAWe,GAAG,EAAE,IAAA,EAAM,WAAA;AACxC,wBAAA,IAAIuE,MAAAA,GAAS,CAAA;AACb,wBAAA,IAAIpF,MAAAA,GAAS,CAAA;AACR,wBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;;AAAA,gCAAA,IAAM4C,MAAAA,GAAN,KAAA,CAAA,KAAA;gCACH,IAAIA,MAAAA,CAAO3B,IAAI,KAAK,QAAA,EAAU;oCAC5B,IAAMoD,OAAAA,GAAUzB,OAAOyB,OAAO;AAC9B,oCAAA,IAAIA,OAAAA,EAAS;wCACX,IAAMlB,IAAAA,GAAOD,MAAAA,CAAOC,IAAI,CAACkB,OAAAA,CAAAA;wCACzB,IAAIrE,OAAAA,GAASmD,KAAKnD,MAAM;wCACxBmD,IAAAA,CAAKN,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;AACX,4CAAA,IAAMoH,SAAAA,GAAY,KAAA,CAAKlG,QAAQ,CAACmG,YAAY,CAACrH,GAAAA,CAAAA;AAC7C,4CAAA,IAAI,CAACoH,SAAAA,EAAW;AACdrF,gDAAAA,OAAAA,EAAAA;gDACAoD,OAAAA,CAAQC,cAAc,CAACgB,OAAAA,EAASpG,GAAAA,CAAAA;AAClC,4CAAA;AACF,wCAAA,CAAA,CAAA;AACA,wCAAA,IAAI+B,OAAAA,EAAQ;AACVF,4CAAAA,UAAAA,CAAWyF,MAAM,CAACH,MAAAA,EAAQxC,MAAAA,CAAOwC,MAAM,EAAEf,OAAAA,CAAAA;AAC3C,wCAAA;oCACF,CAAA,MAAO;AACLe,wCAAAA,MAAAA,GAASxC,OAAOwC,MAAM;AACxB,oCAAA;AACF,gCAAA,CAAA,MAAO,IAAIxC,MAAAA,CAAO3B,IAAI,KAAK,eAAA,EAAiB;oCAC1C,IAAMiD,KAAAA,GAAQpE,WAAW0F,OAAO,EAAA;AAChC,oCAAA,IAAMC,OAAAA,GAAUvB,KAAAA,CAAMlE,MAAM,KAAK,CAAA,IAAKkE,KAAK,CAAC,CAAA,CAAE,CAACK,MAAM,KAAKnG,IAAAA,CAAKsH,gBAAgB;AAC/E,oCAAA,IAAI,OAAO9C,MAAAA,CAAO+C,OAAO,KAAK,QAAA,EAAU;wCACtC3F,MAAAA,GAAS4C,MAAAA,CAAO+C,OAAO,CAAC3F,MAAM;wCAC9BF,UAAAA,CAAWyE,MAAM,CAACa,MAAAA,EAAQxC,MAAAA,CAAO+C,OAAO,EAAE/C,MAAAA,CAAOyB,OAAO,IAAI,EAAC,CAAA;oCAC/D,CAAA,MAAO;wCACLrE,MAAAA,GAAS,CAAA;AACT,wCAAA,IAAMP,eAAAA,GAAkB,KAAA,CAAKmG,qCAAqC,CAAChD,OAAOiD,GAAG,CAAA;AAC7E/F,wCAAAA,UAAAA,CAAWgG,WAAW,CAACV,MAAAA,EAAQ3F,iBAAiBmD,MAAAA,CAAOyB,OAAO,IAAI,EAAC,CAAA;AACrE,oCAAA;oCAEA,IAAIoB,OAAAA,IAAWL,WAAW,CAAA,EAAG;AAC3BtF,wCAAAA,UAAAA,CAAWxB,MAAM,CAACwB,UAAAA,CAAWE,MAAM,GAAG,CAAA,EAAG,CAAA,CAAA;AAC3C,oCAAA;oCACAoF,MAAAA,IAAUpF,MAAAA;AACZ,gCAAA,CAAA,MAAO,IAAI4C,MAAAA,CAAO3B,IAAI,KAAK,QAAA,EAAU;oCACnC,IAAMiD,MAAAA,GAAQpE,WAAW0F,OAAO,EAAA;oCAChC,IAAI1F,UAAAA,CAAWE,MAAM,EAAE;AACrBF,wCAAAA,UAAAA,CAAWxB,MAAM,CAAC8G,MAAAA,EAAQxC,MAAAA,CAAOmD,KAAK,CAAA;AACxC,oCAAA;oCACA,IAAIjG,UAAAA,CAAWE,MAAM,KAAK,CAAA,EAAG;AACAkE,wCAAAA,IAAAA,OAAAA;wCAA3BpE,UAAAA,CAAWyE,MAAM,CAAC,CAAA,EAAG,IAAA,EAAA,CAAML,OAAAA,GAAAA,MAAK,CAAC,CAAA,CAAE,MAAA,IAAA,IAARA,OAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAUE,UAAU,CAAA;AACjD,oCAAA;AACF,gCAAA,CAAA,MAAO,IAAIxB,MAAAA,CAAO3B,IAAI,KAAK,SAAA,EAAW;AACpCnB,oCAAAA,UAAAA,CAAWkE,YAAY,CAACpB,MAAAA,CAAOoD,IAAI,EAAEpD,OAAO1E,KAAK,CAAA;AACnD,gCAAA,CAAA,MAAO,IAAI0E,MAAAA,CAAO3B,IAAI,KAAK,YAAA,EAAc;oCACvCnB,UAAAA,CAAWmE,eAAe,CAACrB,MAAAA,CAAOoD,IAAI,CAAA;AACxC,gCAAA;AACF,4BAAA,CAAA;AAhDA,4BAAA,IAAA,IAAK,SAAA,GAAgBrD,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,QAAA,SAAA,CAAA,IAAA,EAAA,EAAA,IAAA,CAAA,EAAA,yBAAA,GAAA,IAAA,CAAA,KAAA,EAAA;;AAAA,4BAAA,iBAAA,GAAA,IAAA;AAAA,4BAAA,cAAA,GAAA,GAAA;;;qCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,oCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,gCAAA,IAAA,iBAAA,EAAA;AAAA,oCAAA,MAAA,cAAA;;;;AAiDP,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AAEA,gBAAA,IAAI,CAAC/D,OAAO,CAACZ,GAAG,CAAC+B,SAAAA,EAAWD,UAAAA,CAAAA;gBAE5BC,SAAAA,CAAUkG,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;oBAC3C,KAAA,CAAKtH,OAAO,CAACN,MAAM,CAACyB,SAAAA,CAAAA;AACpBD,oBAAAA,UAAAA,CAAWqG,SAAS,CAAC5C,UAAAA,CAAAA;AACrB0B,oBAAAA,GAAAA,CAAImB,WAAW,EAAA;AACjB,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAGAC,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;AACE,gBAAA,IAAI,CAACvH,aAAa,CAAC+D,OAAO,CAACV,SAAAA,CAAAA,EAAAA;AAAKA,oBAAAA,OAAAA,CAAAA,CAAEiE,WAAW,EAAA;;gBAC7C,IAAI,CAACtH,aAAa,GAAG,EAAE;AACzB,YAAA;;;YAEQwE,GAAAA,EAAAA,yBAAAA;mBAAR,SAAQA,uBAAAA,CAAwBgD,SAAoB,EAAEC,QAAyC,EAAA;;gBAC7FD,SAAAA,CAAUzD,OAAO,CAAC,SAAC3E,KAAAA,EAAOD,GAAAA,EAAAA;AACxBsI,oBAAAA,QAAQ,CAACtI,GAAAA,CAAI,GAAG,KAAA,CAAKuI,+BAA+B,CAACtI,KAAAA,CAAAA;AACvD,gBAAA,CAAA,CAAA;gBACA,IAAI,CAACuI,UAAU,CAACH,SAAAA,EAAWC,QAAAA,CAAAA;AAC7B,YAAA;;;YAEQG,GAAAA,EAAAA,2BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,0BAA0BJ,SAAoB,EAAA;gBACpD,IAAMC,QAAAA,GAAWvB,QAAQ,EAAC,CAAA;gBAC1B,IAAI,CAAC1B,uBAAuB,CAACgD,SAAAA,EAAWC,QAAAA,CAAAA;gBACxC,OAAOA,QAAAA;AACT,YAAA;;;YAEQI,GAAAA,EAAAA,+BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,8BAA8BC,WAAwB,EAAA;AAC5D,gBAAA,IAAMC,MAAa,EAAE;AACrB,gBAAA,IAAK,IAAI1E,CAAAA,GAAI,CAAA,EAAGA,IAAIyE,WAAAA,CAAY5G,MAAM,EAAEmC,CAAAA,EAAAA,CAAK;oBAC3C,IAAMF,IAAAA,GAAO2E,WAAAA,CAAYvI,GAAG,CAAC8D,CAAAA,CAAAA;AAC7B,oBAAA,IAAI,CAAC,IAAI,CAAC2E,kBAAkB,CAAC7E,IAAAA,CAAAA,EAAO;AAClC4E,wBAAAA,GAAG,CAAC1E,CAAAA,CAAE,GAAG,IAAI,CAACqE,+BAA+B,CAACvE,IAAAA,CAAAA;AAChD,oBAAA;AACF,gBAAA;gBACA4E,GAAAA,CAAI7G,MAAM,GAAG4G,WAAAA,CAAY5G,MAAM;AAC/B,gBAAA,IAAM+G,aAAa/B,OAAAA,CAAQ6B,GAAAA,CAAAA;gBAC3B,IAAI,CAACG,SAAS,CAACJ,WAAAA,EAAaG,UAAAA,CAAAA;gBAC5B,OAAOA,UAAAA;AACT,YAAA;;;YAEQ9D,GAAAA,EAAAA,yBAAAA;mBAAR,SAAQA,uBAAAA,CAAwBsD,QAAyC,EAAED,SAAoB,EAAA;;AAC7FpD,gBAAAA,MAAAA,CAAO+D,OAAO,CAACV,QAAAA,CAAAA,CAAU1D,OAAO,CAAC,SAAA,KAAA,EAAA;6DAAE5E,GAAAA,GAAAA,MAAAA,CAAAA,CAAAA,CAAAA,EAAKC,KAAAA,GAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACtCoI,oBAAAA,SAAAA,CAAUtI,GAAG,CAACC,GAAAA,EAAK,KAAA,CAAKiJ,6BAA6B,CAAChJ,KAAAA,CAAAA,CAAAA;AACxD,gBAAA,CAAA,CAAA;gBACA,IAAI,CAACuI,UAAU,CAACH,SAAAA,EAAWC,QAAAA,CAAAA;AAC7B,YAAA;;;YAEQY,GAAAA,EAAAA,2BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,0BAA0BZ,QAAyC,EAAA;AACzE,gBAAA,IAAMD,YAAY,IAAItD,GAAAA,EAAAA;gBACtB,IAAI,CAACC,uBAAuB,CAACsD,QAAAA,EAAUD,SAAAA,CAAAA;gBACvC,OAAOA,SAAAA;AACT,YAAA;;;YAEQc,GAAAA,EAAAA,+BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,8BAA8BL,UAA6B,EAAA;AACjE,gBAAA,IAAMH,cAAc,IAAIS,OAAAA,EAAAA;AACxB,gBAAA,IAAMR,MAAMS,KAAAA,CAAMP,UAAAA,CAAAA;AAClB,gBAAA,IAAK,IAAI5E,CAAAA,GAAI,CAAA,EAAGA,IAAI0E,GAAAA,CAAI7G,MAAM,EAAEmC,CAAAA,EAAAA,CAAK;AACnC,oBAAA,IAAIA,KAAK0E,GAAAA,EAAK;AACZD,wBAAAA,WAAAA,CAAY/E,IAAI,CAAC;AAAC,4BAAA,IAAI,CAAC0F,uBAAuB,CAACV,GAAG,CAAC1E,CAAAA,CAAE;AAAE,yBAAA,CAAA;oBACzD,CAAA,MAAO;AACLyE,wBAAAA,WAAAA,CAAY/E,IAAI,CAAC;AAAC,4BAAA,IAAI,CAAC2F,yBAAyB;AAAG,yBAAA,CAAA;AACrD,oBAAA;AACF,gBAAA;gBACA,IAAI,CAACR,SAAS,CAACJ,WAAAA,EAAaG,UAAAA,CAAAA;gBAC5B,OAAOH,WAAAA;AACT,YAAA;;;YAEQa,GAAAA,EAAAA,6BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,4BAA4B1H,SAAe,EAAA;;AACjD,gBAAA,IAAMD,aAAa,IAAI4H,IAAAA,EAAAA;gBACvB,IAAMC,WAAAA,GAAc5H,aAAS,CAATA,SAAAA,EAAqB6H,SAAAA,CAAAA;AACzC9H,gBAAAA,UAAAA,CAAWkE,YAAY,CAAC,QAAA,EAAW,oBAAA,CAAGjE,UAAU8H,MAAM,CAAA,CAAA;AACtD/H,gBAAAA,UAAAA,CAAWkE,YAAY,CAAC,MAAA,EAAQ2D,WAAAA,GAAc,OAAA,GAAU,MAAA,CAAA;AAExD,gBAAA,IAAIA,WAAAA,EAAa;AACf,oBAAA,IAAIG,WAAAA,GAAc,KAAA;AAClB,oBAAA,IAAMC,iBAAiB,IAAI,CAACZ,yBAAyB,CAACpH,UAAUiI,QAAQ,CAAA;oBACxElI,UAAAA,CAAWkE,YAAY,CAAC,UAAA,EAAY+D,cAAAA,CAAAA;oBACpC,IAAI,CAACrJ,cAAc,CAACvB,oBAAoB,CAAC4C,SAAAA,CAAAA,CAAWkI,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AACvD,wBAAA,IAAIJ,WAAAA,EAAa;AACf,4BAAA;AACF,wBAAA;wBACA,IAAMnC,OAAAA,GAAUuC,WAAAA,CAAYC,OAAO,CAAC,SAAA,CAAA;wBACpC,IAAMpF,KAAAA,GAAQmF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;AACjC,wBAAA,KAAA,CAAKnF,uBAAuB,CAAClD,SAAAA,CAAUgD,KAAK,EAAEA,KAAAA,CAAAA;wBAC9C,KAAA,CAAKzC,yBAAyB,CAACqF,OAAAA,EAAS5F,SAAAA,CAAAA;wBACxC,KAAA,CAAKQ,QAAQ,CAACoF,OAAAA,EAAS5F,SAAAA,CAAAA;wBACvB,KAAA,CAAKf,gBAAgB,CAACqJ,IAAI,CAAC;4BACzB1J,IAAAA,EAAMuJ,WAAAA;4BACNI,KAAAA,EAAO3C;AACT,yBAAA,CAAA;AACA,wBAAA,KAAA,CAAKhG,aAAa,CAACuI,WAAAA,CAAAA;wBACnBnI,SAAAA,CAAUwI,MAAM,CAACC,YAAY,EAAA;AAC/B,oBAAA,CAAA,CAAA;oBACAzI,SAAAA,CAAUkG,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;wBAC3C4B,WAAAA,GAAc,IAAA;AAChB,oBAAA,CAAA,CAAA;oBACA,OAAOhI,UAAAA;AACT,gBAAA;AAEA,gBAAA,IAAM2I,kBAAkB,IAAIzF,GAAAA,EAAAA;AAC5B,gBAAA,IAAI,CAACC,uBAAuB,CAAClD,SAAAA,CAAUgD,KAAK,EAAqC0F,eAAAA,CAAAA;gBACjF3I,UAAAA,CAAWkE,YAAY,CAAC,OAAA,EAASyE,eAAAA,CAAAA;AAEjC,gBAAA,IAAMC,gBAAgB,IAAIhB,IAAAA,EAAAA;gBAC1B,IAAI,CAACpH,yBAAyB,CAACoI,aAAAA,EAAe3I,SAAAA,CAAAA;gBAC9CD,UAAAA,CAAWgG,WAAW,CAAC,CAAA,EAAG4C,aAAAA,CAAAA;gBAC1B,IAAI,CAACnI,QAAQ,CAACmI,aAAAA,EAAe3I,SAAAA,CAAAA;gBAC7B,OAAOD,UAAAA;AACT,YAAA;;;YAEQQ,GAAAA,EAAAA,2BAAAA;mBAAR,SAAQA,yBAAAA,CAA0BoI,aAAoB,EAAE3I,SAAe,EAAA;;AACrE,gBAAA,IAAIqF,MAAAA,GAAS,CAAA;AACbrF,gBAAAA,SAAAA,CAAUyF,OAAO,EAAA,CAAG3C,OAAO,CAACV,SAAAA,CAAAA,EAAAA;AAC1B,oBAAA,IAAIkC,UAAe,EAAC;oBACpB,IAAIlC,CAAAA,CAAEkC,OAAO,EAAE;AACblC,wBAAAA,CAAAA,CAAEkC,OAAO,CAACxB,OAAO,CAACZ,SAAAA,IAAAA,EAAAA;4BAChBoC,OAAO,CAACpC,IAAI,CAAC,CAAA,CAAE,CAAC+D,IAAI,CAAC,GAAG/D,IAAI,CAAC,CAAA,CAAE;AACjC,wBAAA,CAAA,CAAA;oBACF,CAAA,MAAO;wBACLoC,OAAAA,GAAU,IAAA;AACZ,oBAAA;AACA,oBAAA,IAAI,OAAOlC,CAAAA,CAAEoC,MAAM,KAAK,QAAA,EAAU;AAChCmE,wBAAAA,aAAAA,CAAcnE,MAAM,CAACa,MAAAA,EAAQjD,CAAAA,CAAEoC,MAAM,EAAEF,OAAAA,CAAAA;oBACzC,CAAA,MAAO;AACL,wBAAA,IAAM5E,eAAAA,GAAkB,KAAA,CAAKmG,qCAAqC,CAACzD,EAAEoC,MAAM,CAAA;wBAC3EmE,aAAAA,CAAc5C,WAAW,CAACV,MAAAA,EAAQ3F,eAAAA,EAAiB4E,OAAAA,CAAAA;AACrD,oBAAA;oBACAe,MAAAA,IAAUjD,CAAAA,CAAEoC,MAAM,CAACvE,MAAM;AAC3B,gBAAA,CAAA,CAAA;AACAD,gBAAAA,SAAAA,CAAU4I,aAAa,EAAA,CAAG9F,OAAO,CAACZ,SAAAA,IAAAA,EAAAA;oBAChCyG,aAAAA,CAAc1E,YAAY,CAAC/B,IAAI,CAAC,CAAA,CAAE,CAAC+D,IAAI,EAAE/D,IAAI,CAAC,CAAA,CAAE,CAAA;AAClD,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEQ2G,GAAAA,EAAAA,6BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,4BAA4B9I,UAAiB,EAAA;;AA6CnC+I,gBAAAA,IAAAA,cAAAA;gBA5ChB,IAAM5H,IAAAA,GAAOnB,UAAAA,CAAWiE,YAAY,CAAC,MAAA,CAAA;gBACrC,IAAM8D,MAAAA,GAAS/H,UAAAA,CAAWiE,YAAY,CAAC,QAAA,CAAA;AAEvC,gBAAA,IAAI9C,SAAS,OAAA,EAAS;oBACpB,IAAM+G,QAAAA,GAAWlI,UAAAA,CAAWiE,YAAY,CAAC,UAAA,CAAA;oBACzC,IAAM+E,IAAAA,GAAO,IAAIlB,SAAAA,CAAUC,MAAAA,IAAU,EAAE,EAAE,IAAI,EAAC,CAAA;AAC9C,oBAAA,IAAI,CAACvE,uBAAuB,CAAC0E,QAAAA,EAAUc,KAAKd,QAAQ,CAAA;AACpD,oBAAA,IAAMe,oBAAoB,IAAI,CAACrK,cAAc,CAACnB,oBAAoB,CAACuL,IAAAA,CAAAA;AACnE,oBAAA,IAAIC,iBAAAA,EAAmB;wBACrB,IAAMC,UAAAA,GAAaD,iBAAAA,CAAkBZ,OAAO,CAAC,SAAA,CAAA;wBAC7C,IAAMc,IAAAA,GAAOF,iBAAAA,CAAkBX,MAAM,CAAC,OAAA,CAAA;AACtC,wBAAA,IAAI,CAAC9E,uBAAuB,CAAC2F,IAAAA,EAAMH,KAAK/F,KAAK,CAAA;AAC7C,wBAAA,IAAI,CAAClD,YAAY,CAACkJ,iBAAAA,EAAmBC,UAAAA,EAAYF,IAAAA,CAAAA;AACjD,wBAAA,IAAI,CAAC9J,gBAAgB,CAACqJ,IAAI,CAAC;4BACzB1J,IAAAA,EAAMoK,iBAAAA;4BACNT,KAAAA,EAAOU;AACT,yBAAA,CAAA;wBACAF,IAAAA,CAAKP,MAAM,CAACC,YAAY,EAAA;wBACxB,OAAOM,IAAAA;AACT,oBAAA;AACA,oBAAA,IAAIhB,WAAAA,GAAc,KAAA;AAClBgB,oBAAAA,IAAAA,CAAKP,MAAM,CAACW,aAAa,CAACC,SAAS,EAAA,CAAGlB,IAAI,CAAC,WAAA;AACzC,wBAAA,OAAO,KAAA,CAAKvJ,cAAc,CAACpB,kBAAkB,CAACwL,IAAAA,CAAAA;oBAChD,CAAA,CAAA,CAAGb,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AACN,wBAAA,IAAIJ,WAAAA,EAAa;AACf,4BAAA;AACF,wBAAA;wBACA,IAAMkB,UAAAA,GAAad,WAAAA,CAAYC,OAAO,CAAC,SAAA,CAAA;wBACvC,IAAMpF,KAAAA,GAAQmF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;AACjC,wBAAA,KAAA,CAAK9E,uBAAuB,CAACP,KAAAA,EAAO+F,IAAAA,CAAK/F,KAAK,CAAA;wBAC9C,KAAA,CAAKlD,YAAY,CAACqI,WAAAA,EAAac,UAAAA,EAAYF,IAAAA,CAAAA;wBAC3C,KAAA,CAAK9J,gBAAgB,CAACqJ,IAAI,CAAC;4BACzB1J,IAAAA,EAAMuJ,WAAAA;4BACNI,KAAAA,EAAOU;AACT,yBAAA,CAAA;wBACAF,IAAAA,CAAKP,MAAM,CAACC,YAAY,EAAA;AAC1B,oBAAA,CAAA,CAAA;oBACAM,IAAAA,CAAK7C,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;wBACtC4B,WAAAA,GAAc,IAAA;AAChB,oBAAA,CAAA,CAAA;oBACA,OAAOgB,IAAAA;AACT,gBAAA;gBAEA,IAAMD,YAAAA,GAAe/I,WAAW0F,OAAO,EAAA;gBACvC,IAAMG,OAAAA,GAAAA,CAAUkD,iBAAAA,YAAY,CAAC,EAAE,MAAA,IAAA,IAAfA,cAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAiBtE,MAAM;AAEvC,gBAAA,IAAI,CAASpG,aAAA,CAAPwH,OAAAA,EAAmB+B,IAAAA,CAAAA,EAAQ;AAC/B,oBAAA,MAAMhK,kBAAAA,CAAmB,0CAAA,CAAA;AAC3B,gBAAA;AAEA,gBAAA,IAAMqC,YAAY,IAAI3B,IAAAA,CAAKyJ,MAAAA,IAAU,EAAE,EAAE,EAAC,CAAA;gBAE1C,IAAMY,eAAAA,GAAkB3I,UAAAA,CAAWiE,YAAY,CAAC,OAAA,CAAA;AAChD,gBAAA,IAAI,CAACT,uBAAuB,CAACmF,eAAAA,EAAiB1I,UAAUgD,KAAK,CAAA;gBAE7D,IAAI,CAAC3C,yBAAyB,CAACuF,OAAAA,EAAS5F,SAAAA,CAAAA;gBAExC,IAAI,CAACQ,QAAQ,CAACoF,OAAAA,EAAS5F,SAAAA,CAAAA;gBACvB,OAAOA,SAAAA;AACT,YAAA;;;YAEQK,GAAAA,EAAAA,2BAAAA;mBAAR,SAAQA,yBAAAA,CAA0BuF,OAAc,EAAE5F,SAAe,EAAA;;gBAC/D,IAAMmE,KAAAA,GAAQyB,QAAQH,OAAO,EAAA;gBAE7B,IAAM4D,KAAAA,GAAQzD,QAAQgD,aAAa,EAAA;AACnCzF,gBAAAA,MAAAA,CAAOC,IAAI,CAACiG,KAAAA,CAAAA,CAAOvG,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;AACzB,oBAAA,IAAM6F,SAAAA,GAAY,KAAA,CAAK3E,QAAQ,CAAC4E,YAAY,CAAC9F,GAAAA,CAAAA;AAC7C,oBAAA,IAAI6F,SAAAA,EAAW;AACb/D,wBAAAA,SAAAA,CAAUiE,YAAY,CAACF,SAAAA,EAAWsF,KAAK,CAACnL,GAAAA,CAAI,CAAA;AAC9C,oBAAA;AACF,gBAAA,CAAA,CAAA;AACK,gBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,oBAAA,IAAA,IAAK,YAAgBiG,KAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAuB;AAAvB,wBAAA,IAAMtB,MAAAA,GAAN,KAAA,CAAA,KAAA;wBACH,IAAIA,MAAAA,CAAO2B,MAAM,EAAE;AACjB,4BAAA,IAAI,OAAO3B,MAAAA,CAAO2B,MAAM,KAAK,QAAA,EAAU;AACrC,gCAAA,IAAMF,UAAUC,oBAAAA,CAAqB,IAAI,CAACnF,QAAQ,EAAEyD,OAAOwB,UAAU,CAAA;AACrErE,gCAAAA,SAAAA,CAAUwE,MAAM,CAAC3B,MAAAA,CAAO2B,MAAM,EAAEF,OAAAA,CAAAA;4BAClC,CAAA,MAAO;gCACL,IAAM5E,eAAAA,GAAkBmD,OAAO2B,MAAM;AACrC,gCAAA,IAAMC,SAAAA,GAAY,IAAI,CAACC,qCAAqC,CAAChF,eAAAA,CAAAA;gCAC7DM,SAAAA,CAAUwE,MAAM,CAACC,SAAAA,EAAWF,oBAAAA,CAAqB,IAAI,CAACnF,QAAQ,EAAEyD,MAAAA,CAAOwB,UAAU,CAAA,CAAA;AACnF,4BAAA;wBACF,CAAA,MAAO;AACL,4BAAA,MAAM1G,kBAAAA,CAAmB,0BAAA,CAAA;AAC3B,wBAAA;AACF,oBAAA;;AAbK,oBAAA,iBAAA,GAAA,IAAA;AAAA,oBAAA,cAAA,GAAA,GAAA;;;6BAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,4BAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,wBAAA,IAAA,iBAAA,EAAA;AAAA,4BAAA,MAAA,cAAA;;;;AAcP,YAAA;;;YAEQwJ,GAAAA,EAAAA,+BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,8BAA8BmC,UAAe,EAAA;gBACnD,IAAclL,aAAA,CAAVkL,UAAAA,EAAsBjL,IAAAA,CAAAA,EAAM;oBAC9B,OAAO,IAAI,CAACqJ,2BAA2B,CAAC4B,UAAAA,CAAAA;AAC1C,gBAAA;gBACA,IAAIC,KAAAA,CAAMC,OAAO,CAACF,UAAAA,CAAAA,EAAa;oBAC7B,OAAO,IAAI,CAACjC,6BAA6B,CAACiC,UAAAA,CAAAA;AAC5C,gBAAA;gBACA,IAAI,CAAA,OAAOA,UAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAPG,UAAA,CAAOH,WAAS,MAAM,QAAA,IAAYA,eAAe,IAAA,EAAM;oBACzD,OAAO,IAAI,CAAClC,yBAAyB,CAACkC,UAAAA,CAAAA;AACxC,gBAAA;gBACA,OAAOA,UAAAA;AACT,YAAA;;;YAEQ7C,GAAAA,EAAAA,iCAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,gCAAgCiD,WAAgB,EAAA;gBACtD,IAAetL,aAAA,CAAXsL,WAAAA,EAAuBzG,GAAAA,CAAAA,EAAM;oBAC/B,OAAO,IAAI,CAAC0D,yBAAyB,CAAC+C,WAAAA,CAAAA;AACxC,gBAAA;gBACA,IAAetL,aAAA,CAAXsL,WAAAA,EAAuBpC,OAAAA,CAAAA,EAAQ;oBACjC,OAAO,IAAI,CAACV,6BAA6B,CAAC8C,WAAAA,CAAAA;AAC5C,gBAAA;gBACA,IAAetL,aAAA,CAAXsL,WAAAA,EAAuB/B,IAAAA,CAAAA,EAAO;oBAChC,OAAO,IAAI,CAACkB,2BAA2B,CAACa,WAAAA,CAAAA;AAC1C,gBAAA;gBACA,OAAOA,WAAAA;AACT,YAAA;;;YAGQ7D,GAAAA,EAAAA,uCAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,sCAAsCpB,SAAqC,EAAA;;AACjF,gBAAA,IAAM/E,kBAAkB,IAAIuD,GAAAA,EAAAA;AAC5BvD,gBAAAA,eAAAA,CAAgBzB,GAAG,CAAC,MAAA,EAAQwG,SAAAA,CAAUwB,IAAI,CAAA;gBAE1C,IAAa7H,aAAA,CAATqG,SAAAA,EAAqBkF,cAAAA,CAAAA,EAAgB;oBACvCjK,eAAAA,CAAgBzB,GAAG,CAAC,MAAA,EAAQ,OAAA,CAAA;AAC5B,oBAAA,IAAM+J,iBAAiB,IAAI,CAACZ,yBAAyB,CAAC3C,UAAUwD,QAAQ,CAAA;oBACxEvI,eAAAA,CAAgBzB,GAAG,CAAC,UAAA,EAAY+J,cAAAA,CAAAA;oBAChC,IAAMhF,KAAAA,GAAQyB,UAAUzB,KAAK;AAC7B,oBAAA,IAAI+E,WAAAA,GAAc,KAAA;oBAClB/E,KAAAA,CAAMkD,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;wBACvC4B,WAAAA,GAAc,IAAA;AAChB,oBAAA,CAAA,CAAA;oBACA,IAAI,CAACpJ,cAAc,CAACtB,yBAAyB,CAACoH,SAAAA,CAAAA,CAAWyD,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AAC5D,wBAAA,IAAIJ,WAAAA,EAAa;AACf,4BAAA;AACF,wBAAA;wBACA,IAAM/E,KAAAA,GAAQmF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;wBACjC,KAAA,CAAKxI,aAAa,CAACsI,WAAAA,EAAanF,KAAAA,EAAOyB,SAAAA,CAAAA;wBACvC,KAAA,CAAKxF,gBAAgB,CAACqJ,IAAI,CAAC;4BACzBC,KAAAA,EAAOvF,KAAAA;4BACPpE,IAAAA,EAAMuJ;AACR,yBAAA,CAAA;AACA,wBAAA,KAAA,CAAKvI,aAAa,CAACuI,WAAAA,CAAAA;wBACnB1D,SAAAA,CAAU+D,MAAM,CAACC,YAAY,EAAA;AAC/B,oBAAA,CAAA,CAAA;oBACA,OAAO/I,eAAAA;AACT,gBAAA;AAEA,gBAAA,IAAMkK,cAAc,IAAI,CAACxC,yBAAyB,CAAC3C,UAAUzB,KAAK,CAAA;gBAClEtD,eAAAA,CAAgBzB,GAAG,CAAC,OAAA,EAAS2L,WAAAA,CAAAA;gBAC7BlK,eAAAA,CAAgBzB,GAAG,CAAC,MAAA,EAAQ,MAAA,CAAA;gBAC5B,OAAOyB,eAAAA;AACT,YAAA;;;YAEQgF,GAAAA,EAAAA,uCAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,sCAAsCmF,IAAe,EAAA;;gBAC3D,IAAMC,aAAAA,GAAgBD,IAAAA,CAAKvL,GAAG,CAAC,MAAA,CAAA;gBAC/B,IAAM4C,IAAAA,GAAO2I,IAAAA,CAAKvL,GAAG,CAAC,MAAA,CAAA;gBAEtB,IAAIyL,QAAAA;AACJ,gBAAA,IAAI7I,SAAS,OAAA,EAAS;oBACpB6I,QAAAA,GAAW,IAAI,CAAC3K,QAAQ,CAAC4K,qBAAqB,CAACF,aAAAA,EAAe,EAAC,EAAG,EAAC,CAAA;oBACnE,IAAY1L,aAAA,CAAR2L,QAAAA,EAAoBJ,cAAAA,CAAAA,EAAgB;wBACtC,IAAM3B,cAAAA,GAAiB6B,IAAAA,CAAKvL,GAAG,CAAC,UAAA,CAAA;AAChC,wBAAA,IAAI,CAACiF,uBAAuB,CAACyE,cAAAA,EAAgB+B,SAAS9B,QAAQ,CAAA;AAC9D,wBAAA,IAAMe,oBAAoB,IAAI,CAACrK,cAAc,CAAClB,yBAAyB,CAACsM,QAAAA,CAAAA;AACxE,wBAAA,IAAIf,iBAAAA,EAAmB;4BACrB,IAAMhG,KAAAA,GAAQgG,iBAAAA,CAAkBX,MAAM,CAAC,OAAA,CAAA;AACvC,4BAAA,IAAI,CAACxI,aAAa,CAACmJ,iBAAAA,EAAmBhG,KAAAA,EAAO+G,QAAAA,CAAAA;AAC7C,4BAAA,IAAI,CAAC9K,gBAAgB,CAACqJ,IAAI,CAAC;gCACzBC,KAAAA,EAAOvF,KAAAA;gCACPpE,IAAAA,EAAMoK;AACR,6BAAA,CAAA;4BACAe,QAAAA,CAASvB,MAAM,CAACC,YAAY,EAAA;4BAC5B,OAAOsB,QAAAA;AACT,wBAAA;wBAEA,IAAM/G,MAAAA,GAAQ+G,SAAS/G,KAAK;AAC5B,wBAAA,IAAI+E,WAAAA,GAAc,KAAA;AAClBgC,wBAAAA,QAAAA,CAASvB,MAAM,CAACW,aAAa,CAACC,SAAS,EAAA,CAAGlB,IAAI,CAAC,WAAA;AAC7C,4BAAA,OAAO,KAAA,CAAKvJ,cAAc,CAACrB,uBAAuB,CAACyM,QAAAA,CAAAA;wBACrD,CAAA,CAAA,CACG7B,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AACJ,4BAAA,IAAIJ,WAAAA,EAAa;AACf,gCAAA;AACF,4BAAA;4BACA,IAAM/E,KAAAA,GAAQmF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;4BACjC,KAAA,CAAKxI,aAAa,CAACsI,WAAAA,EAAanF,KAAAA,EAAO+G,QAAAA,CAAAA;4BACvC,KAAA,CAAK9K,gBAAgB,CAACqJ,IAAI,CAAC;gCACzBC,KAAAA,EAAOvF,KAAAA;gCACPpE,IAAAA,EAAMuJ;AACR,6BAAA,CAAA;4BACE4B,QAAAA,CAA4BvB,MAAM,CAACC,YAAY,EAAA;AACnD,wBAAA,CAAA,CAAA;wBACFzF,MAAAA,CAAMkD,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;4BACvC4B,WAAAA,GAAc,IAAA;AAChB,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,MAAO,IAAY3J,aAAA,CAAR2L,QAAAA,EAAoBE,SAAAA,CAAAA,EAAW;AACxC,wBAAA,MAAMtM,kBAAAA,CAAoB,kBAAA,CAAiC,MAAA,CAAdmM,aAAAA,EAAc,6BAAA,CAAA,CAAA;AAC7D,oBAAA;gBACF,CAAA,MAAO;oBACL,IAAMF,WAAAA,GAAcC,IAAAA,CAAKvL,GAAG,CAAC,OAAA,CAAA;AAC7B,oBAAA,IAAM0E,MAAAA,GAAQ,IAAI,CAAC2D,yBAAyB,CAACiD,WAAAA,CAAAA;AAC7CG,oBAAAA,QAAAA,GAAW,IAAI,CAAC3K,QAAQ,CAAC4K,qBAAqB,CAACF,aAAAA,EAAe9G,MAAAA,CAAAA;AAChE,gBAAA;AACA,gBAAA,IAAI+G,QAAAA,EAAU;oBACZ,OAAOA,QAAAA;AACT,gBAAA;AAEA,gBAAA,MAAMpM,kBAAAA,CAAoB,iCAAA,CAAgD,MAAA,CAAdmM,aAAAA,EAAc,IAAA,CAAA,CAAA;AAC5E,YAAA;;;YAEQrC,GAAAA,EAAAA,2BAAAA;mBAAR,SAAQA,yBAAAA,GAAAA;AACN,gBAAA,OAAO,IAAIyC,UAAAA,CAAWxM,uBAAAA,CAAAA;AACxB,YAAA;;;YAEQqJ,GAAAA,EAAAA,oBAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,mBAAmB2C,WAAgB,EAAA;AACzC,gBAAA,OAAOA,aAAW,CAAXA,WAAAA,EAAuBQ,UAAAA,CAAAA,IAAcR,WAAAA,CAAYS,QAAQ,KAAKzM,uBAAAA;AACvE,YAAA;;;YAKQ8J,GAAAA,EAAAA,yBAAAA;;;MAAR,SAAQA,wBAAwB4C,SAAc,EAAA;AAC5C,gBAAA,IAAIA,cAAcC,SAAAA,EAAW;oBAC3B,OAAO,IAAI,CAAC5C,yBAAyB,EAAA;AACvC,gBAAA;gBACA,OAAO,IAAI,CAACN,6BAA6B,CAACiD,SAAAA,CAAAA;AAC5C,YAAA;;;YAMQE,GAAAA,EAAAA,kBAAAA;;;;AADP,MACD,SAAQA,gBAAAA,CAAiBtD,UAA6B,EAAEuD,OAAe,EAAA;AACrE,gBAAA,IAAMzD,MAAMS,KAAAA,CAAMP,UAAAA,CAAAA;gBAClB,IAAMwD,GAAAA,GAAM1D,IAAI7G,MAAM;AACtB,gBAAA,IAAIsK,WAAWC,GAAAA,EAAK;oBAClB1D,GAAAA,CAAI7G,MAAM,GAAGsK,OAAAA,GAAU,CAAA;AACvB,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAK,IAAInI,CAAAA,GAAIoI,GAAAA,EAAKpI,CAAAA,GAAImI,SAASnI,CAAAA,EAAAA,CAAK;oBAClC,IAAKA,CAAAA,GAAI,CAAA,IAAM0E,GAAAA,EAAK;AAClBA,wBAAAA,GAAG,CAAC1E,CAAAA,CAAE,GAAG0E,GAAG,CAAC1E,IAAI,CAAA,CAAE;oBACrB,CAAA,MAAO;wBACL,OAAO0E,GAAG,CAAC1E,CAAAA,CAAE;AACf,oBAAA;AACF,gBAAA;gBACA,OAAO0E,GAAG,CAACyD,OAAAA,CAAQ;AACrB,YAAA;;;YAQQtD,GAAAA,EAAAA,WAAAA;;;;;;AADP,MACD,SAAQA,SAAAA,CAAUJ,WAAwB,EAAEG,UAA6B,EAAA;;AACvE,gBAAA,SAASyD,SAASvJ,IAAY,EAAA;AAC5BwJ,oBAAAA,OAAAA,CAAQC,KAAK,CAAChN,kBAAAA,CAAoB,GAA0CqJ,MAAAA,CAAxC9F,IAAAA,EAAK,mCAAA,CAAA,CAAoF,MAAA,CAAjD8F,WAAWd,gBAAgB,CAAC0E,QAAQ,EAAA,CAAGC,IAAI,CAAC,GAAA,CAAA,CAAA,CAAA,CAAA;AAC1H,gBAAA;gBAEA,IAAM3F,GAAAA,GAAM8B,WAAWd,gBAAgB,CAAC4E,YAAY,CAACtI,SAAS,CAAC,SAACI,OAAAA,EAAAA;oBAC9D,KAAA,CAAKwC,cAAc,CAACyB,WAAAA,CAAY/F,GAAG,EAAE,CAACkG,UAAAA,CAAWd,gBAAgB,CAAC6E,iBAAiB,EAAE,WAAA;AACnF,wBAAA,IAAI1J,KAAAA,GAAQ,CAAA;AACP,wBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,4BAAA,IAAA,IAAK,YAAgBuB,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAyB;AAAzB,gCAAA,IAAMC,MAAAA,GAAN,KAAA,CAAA,KAAA;AACH,gCAAA,OAAQA,OAAO3B,IAAI;oCACjB,KAAK,QAAA;AACHG,wCAAAA,KAAAA,GAAQwB,OAAOwC,MAAM;AACrB,wCAAA;oCACF,KAAK,QAAA;AAAU,wCAAA;4CACb,IAAMS,GAAAA,GAAMjD,OAAOiD,GAAG;AACtB,4CAAA,IAAI,CAACyD,KAAAA,CAAMC,OAAO,CAAC1D,GAAAA,CAAAA,EAAM;AACvB,gDAAA,MAAMnI,kBAAAA,CAAmB,mDAAA,CAAA;AAC3B,4CAAA;AACA,4CAAA,IAAMuL,IAAAA,GAAOpD,GAAAA,CAAI7D,GAAG,CAACC,SAAAA,IAAAA,EAAAA;gDACnB,OAAO,KAAA,CAAKsF,uBAAuB,CAACtF,IAAAA,CAAAA;AACtC,4CAAA,CAAA,CAAA;4CACA,IAAIb,KAAAA,IAASwF,WAAAA,CAAY5G,MAAM,EAAE;gDAC/B4G,WAAAA,CAAYrC,MAAM,CAACnD,KAAAA,EAAO6H,IAAAA,CAAAA;4CAC5B,CAAA,MAAO;AACLrC,gDAAAA,WAAAA,CAAYrC,MAAM,CAACqC,WAAAA,CAAY5G,MAAM,EAAEiJ,IAAAA,CAAAA;gDACvCuB,QAAAA,CAAS,QAAA,CAAA;AACX,4CAAA;AACF,wCAAA;AACE,wCAAA;oCACF,KAAK,QAAA;wCACH,IAAI5H,MAAAA,CAAOmD,KAAK,IAAI,CAAA,EAAG;AACrB,4CAAA;AACF,wCAAA;wCACA,IAAI3E,KAAAA,GAAQwF,WAAAA,CAAY5G,MAAM,EAAE;AAC9B4G,4CAAAA,WAAAA,CAAYtI,MAAM,CAAC8C,KAAAA,EAAOwB,MAAAA,CAAOmD,KAAK,CAAA;wCACxC,CAAA,MAAO;4CACLyE,QAAAA,CAAS,QAAA,CAAA;AACX,wCAAA;AACA,wCAAA;oCACF,KAAK,UAAA;AACH,wCAAA,IAAI5H,MAAAA,CAAOxB,KAAK,GAAGwF,WAAAA,CAAY5G,MAAM,EAAE;AACrC4G,4CAAAA,WAAAA,CAAYtI,MAAM,CAACsE,MAAAA,CAAOxB,KAAK,EAAE,CAAA,CAAA;AACjCwF,4CAAAA,WAAAA,CAAYrC,MAAM,CAAC3B,MAAAA,CAAOxB,KAAK,EAAE;gDAAC,KAAA,CAAKmG,uBAAuB,CAAC3E,MAAAA,CAAOiD,GAAG;AAAE,6CAAA,CAAA;wCAC7E,CAAA,MAAO;AACLe,4CAAAA,WAAAA,CAAYrC,MAAM,CAACqC,WAAAA,CAAY5G,MAAM,EAAE;gDAAC,KAAA,CAAKuH,uBAAuB,CAAC3E,MAAAA,CAAOiD,GAAG;AAAE,6CAAA,CAAA;4CACjF2E,QAAAA,CAAS,UAAA,CAAA;AACX,wCAAA;AACA,wCAAA;AACJ;AACF,4BAAA;;AAzCK,4BAAA,iBAAA,GAAA,IAAA;AAAA,4BAAA,cAAA,GAAA,GAAA;;;qCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,oCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,gCAAA,IAAA,iBAAA,EAAA;AAAA,oCAAA,MAAA,cAAA;;;;AA0CP,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;gBAEA,IAAMjH,UAAAA,GAAa,oBAACC,EAAAA,EAAsBC,EAAAA,EAAAA;oBACxC,KAAA,CAAKC,eAAe,CAACD,EAAAA,EAAI,WAAA;AACvB,wBAAA,IAAIrC,KAAAA,GAAQ,CAAA;AACZoC,wBAAAA,EAAAA,CAAGU,KAAK,CAACrB,OAAO,CAAC,SAACD,MAAAA,EAAAA;AAChB,4BAAA,IAAIQ,OAAAA,CAAQe,GAAG,CAACvB,MAAAA,EAAQ,QAAA,CAAA,EAAW;AACjCxB,gCAAAA,KAAAA,IAASwB,OAAO3C,MAAM;4BACxB,CAAA,MAAO,IAAI2C,MAAAA,CAAO2B,MAAM,EAAE;AACxB,gCAAA,IAAIwG,EAAAA,GAAK3J,KAAAA;AACJ,gCAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;oCAAL,IAAA,IAAK,SAAA,GAAcwB,OAAO2B,MAAM,CAAA,MAAA,CAAA,QAAA,CAAA,EAAA,EAA3B,SAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAA2C;AAA3C,wCAAA,IAAMtC,IAAAA,GAAN,KAAA,CAAA,KAAA;wCACH,IAAI,KAAA,CAAK6E,kBAAkB,CAAC7E,IAAAA,CAAAA,EAAO;4CACjC,KAAA,CAAKoI,gBAAgB,CAACtD,UAAAA,EAAYgE,EAAAA,CAAAA;wCACpC,CAAA,MAAO;AACLhE,4CAAAA,UAAAA,CAAWiE,MAAM,CAACD,EAAAA,EAAI,CAAA,EAAG,KAAA,CAAKvE,+BAA+B,CAACvE,IAAAA,CAAAA,CAAAA;AAChE,wCAAA;AACA8I,wCAAAA,EAAAA,EAAAA;AACF,oCAAA;;AAPK,oCAAA,iBAAA,GAAA,IAAA;AAAA,oCAAA,cAAA,GAAA,GAAA;;;6CAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,4CAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,wCAAA,IAAA,iBAAA,EAAA;AAAA,4CAAA,MAAA,cAAA;;;;gCAQL3J,KAAAA,GAAQ2J,EAAAA;4BACV,CAAA,MAAO,IAAInI,MAAAA,CAAOtE,MAAM,EAAE;AACxByI,gCAAAA,UAAAA,CAAWiE,MAAM,CAAC5J,KAAAA,EAAOwB,MAAAA,CAAOtE,MAAM,CAAA;AACxC,4BAAA;AACF,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;AAEAsI,gBAAAA,WAAAA,CAAY5B,OAAO,CAACzB,UAAAA,CAAAA;gBACpBwD,UAAAA,CAAWd,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;AAC5CjB,oBAAAA,GAAAA,CAAImB,WAAW,EAAA;AACfQ,oBAAAA,WAAAA,CAAYT,SAAS,CAAC5C,UAAAA,CAAAA;AACxB,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAQQkD,GAAAA,EAAAA,YAAAA;;;;;;AADP,MACD,SAAQA,UAAAA,CAAWwE,YAAuB,EAAEC,WAA4C,EAAA;;gBACtF,IAAM3H,UAAAA,GAAa,oBAACC,EAAAA,EAAoBC,EAAAA,EAAAA;oBACtC,KAAA,CAAKC,eAAe,CAACD,EAAAA,EAAI,WAAA;AACvBD,wBAAAA,EAAAA,CAAG2H,OAAO,CAAChI,IAAI,CAACN,OAAO,CAAC,SAACZ,IAAAA,EAAMhE,GAAAA,EAAAA;AAC7B,4BAAA,IAAIgE,KAAKW,MAAM,KAAK,SAASX,IAAAA,CAAKW,MAAM,KAAK,QAAA,EAAU;gCACrD,IAAM1E,KAAAA,GAAQ+M,YAAAA,CAAa5M,GAAG,CAACJ,GAAAA,CAAAA;AAC/BiN,gCAAAA,WAAW,CAACjN,GAAAA,CAAI,GAAG,KAAA,CAAKuI,+BAA+B,CAACtI,KAAAA,CAAAA;4BAC1D,CAAA,MAAO;gCACLkF,OAAAA,CAAQC,cAAc,CAAC6H,WAAAA,EAAajN,GAAAA,CAAAA;AACtC,4BAAA;AACF,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;AAEAgN,gBAAAA,YAAAA,CAAajG,OAAO,CAACzB,UAAAA,CAAAA;gBAErB,IAAM0B,GAAAA,GAAMiG,YAAYjF,gBAAgB,CAAC4E,YAAY,CAACtI,SAAS,CAAC,SAACI,OAAAA,EAAAA;oBAC/D,KAAA,CAAKwC,cAAc,CAAC8F,YAAAA,CAAapK,GAAG,EAAE,CAACqK,WAAAA,CAAYjF,gBAAgB,CAAC6E,iBAAiB,EAAE,WAAA;AAChF,wBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,4BAAA,IAAA,IAAK,YAAgBnI,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAyB;AAAzB,gCAAA,IAAMC,MAAAA,GAAN,KAAA,CAAA,KAAA;AACH,gCAAA,OAAQA,OAAO3B,IAAI;oCACjB,KAAK,SAAA;AAAW,wCAAA;AACd,4CAAA,IAAMmK,QAAAA,GAAW,KAAA,CAAKlE,6BAA6B,CAACtE,OAAOiD,GAAG,CAAA;AAC9DoF,4CAAAA,YAAAA,CAAajN,GAAG,CAAC4E,MAAAA,CAAO3E,GAAG,EAAEmN,QAAAA,CAAAA;4CAC7B,IAAIH,YAAAA,CAAaI,IAAI,KAAK,CAAA,EAAG;;AAE3BZ,gDAAAA,OAAAA,CAAQC,KAAK,CAAChN,kBAAAA,CAAmB,yBAAC,CAAoC,MAAA,CAAXkF,OAAO3E,GAAG,CAAA,CAAA,CAAA;AACvE,4CAAA;AACF,wCAAA;AACE,wCAAA;oCACF,KAAK,YAAA;wCACHgN,YAAAA,CAAa3M,MAAM,CAACsE,MAAAA,CAAO3E,GAAG,CAAA;AAC9B,wCAAA;AACJ;AACF,4BAAA;;AAfK,4BAAA,iBAAA,GAAA,IAAA;AAAA,4BAAA,cAAA,GAAA,GAAA;;;qCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,oCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,gCAAA,IAAA,iBAAA,EAAA;AAAA,oCAAA,MAAA,cAAA;;;;AAgBP,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;gBAEAiN,WAAAA,CAAYjF,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;AAC7C+E,oBAAAA,YAAAA,CAAa9E,SAAS,CAAC5C,UAAAA,CAAAA;AACvB0B,oBAAAA,GAAAA,CAAImB,WAAW,EAAA;AACjB,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEQjB,GAAAA,EAAAA,gBAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,cAAAA,CAAexG,IAAiB,EAAE+D,MAAe,EAAEI,EAAc,EAAA;AACvE,gBAAA,IAAI,IAAI,CAAC/D,gBAAgB,IAAI,CAACJ,IAAAA,EAAM;AAClC,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAI2M,aAAa,IAAI,CAACrM,mBAAmB,CAACZ,GAAG,CAACM,IAAAA,CAAAA;AAC9C,gBAAA,IAAI,CAAC2M,UAAAA,EAAY;AACfA,oBAAAA,UAAAA,GAAa,EAAE;AACf,oBAAA,IAAI,CAACrM,mBAAmB,CAACjB,GAAG,CAACW,IAAAA,EAAM2M,UAAAA,CAAAA;AACrC,gBAAA;AACAA,gBAAAA,UAAAA,CAAWzJ,IAAI,CAAC;oBACda,MAAAA,EAAAA,MAAAA;oBACAE,MAAAA,EAAQE;AACV,iBAAA,CAAA;AACF,YAAA;;;YAEQY,GAAAA,EAAAA,iBAAAA;mBAAR,SAAQA,eAAAA,CAAgBD,EAAe,EAAEX,EAAc,EAAA;AACrD,gBAAA,IAAIW,EAAAA,CAAGkB,MAAM,KAAKlB,EAAAA,CAAG5C,GAAG,EAAE;AACxB,oBAAA;AACF,gBAAA;gBACA,IAAI,CAAC9B,gBAAgB,GAAG,IAAA;AACxB,gBAAA,IAAI0E,aAAS,CAATA,EAAAA,CAAGkB,MAAM,EAAYC,WAAAA,CAAAA,EAAa;AACpC,oBAAA,IAAI,CAACnG,SAAS,CAAC8M,oBAAoB,CAACzI,EAAAA,CAAAA;gBACtC,CAAA,MAAO;AACL,oBAAA,IAAI,CAACrE,SAAS,CAAC+M,oBAAoB,CAAC1I,EAAAA,CAAAA;AACtC,gBAAA;gBACA,IAAI,CAAC/D,gBAAgB,GAAG,KAAA;AAC1B,YAAA;;;AAp0BWP,IAAAA,OAAAA,WAAAA;AAq0BZ,CAAA;;;;;;;;;;;AAED,SAAS8F,oBAAAA,CAAqBnF,QAAkB,EAAEiK,KAAW,EAAA;AAC3D,IAAA,IAAM/E,UAAmB,EAAE;AAC3B,IAAA,IAAI+E,KAAAA,EAAO;AACTlG,QAAAA,MAAAA,CAAOC,IAAI,CAACiG,KAAAA,CAAAA,CAAOvG,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;YACzB,IAAMoH,SAAAA,GAAYlG,QAAAA,CAASmG,YAAY,CAACrH,GAAAA,CAAAA;AACxC,YAAA,IAAIoH,SAAAA,EAAW;AACbhB,gBAAAA,OAAAA,CAAQxC,IAAI,CAAC;AAACwD,oBAAAA,SAAAA;AAAW+D,oBAAAA,KAAK,CAACnL,GAAAA;AAAK,iBAAA,CAAA;AACtC,YAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;IACA,OAAOoG,OAAAA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACz7BO,IAAA,uBAAeoH,GAAf,SAAeA,uBAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,uBAAAA,CAAAA;AAMrB;AAED,IAAMC,uBAAuB3O,SAAAA,CAAU,eAAA,CAAA;AAGhC,IAAA,aAAM4O,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,aAAAA,CAyBC,gBAA0C,EAClCC,WAAwB,EAChC,SAA4B,EACQC,SAAiB,EACrD,iBAA8D,EAAA;AA7B/DF,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA;;;;;;AACXG,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,YAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AAUA,QAAArO,kBAAA,CAAA,IAAA,EAAQsO,WAAR,MAAA,CAAA;AAEA,QAAAtO,kBAAA,CAAA,IAAA,EAAQuO,gBAAR,MAAA,CAAA;AACA,QAAAvO,kBAAA,CAAA,IAAA,EAAQwD,SAAR,MAAA,CAAA;AACA,QAAAxD,kBAAA,CAAA,IAAA,EAAQkB,iBAAR,MAAA,CAAA;AAEA,QAAAlB,kBAAA,CAAA,IAAA,EAAQwO,aAAR,MAAA,CAAA;AACA,QAAAxO,kBAAA,CAAA,IAAA,EAAQyO,gBAAR,MAAA,CAAA;AACA,QAAAzO,kBAAA,CAAA,IAAA,EAAQ0O,eAAR,MAAA,CAAA;AACA,QAAA1O,kBAAA,CAAA,IAAA,EAAQ2O,aAAR,MAAA,CAAA;aAEoBC,gBAAAA,GAAAA,gBAAAA;aACAZ,WAAAA,GAAAA,WAAAA;aACAnN,SAAAA,GAAAA,SAAAA;aAC4BoN,SAAAA,GAAAA,SAAAA;aAChBY,iBAAAA,GAAAA,iBAAAA;aAfxBP,OAAAA,GAA8B,IAAA;AAE9BC,QAAAA,IAAAA,CAAAA,YAAAA,GAA2D,EAAE;aAC7D/K,KAAAA,GAAQ,CAAA;AACRtC,QAAAA,IAAAA,CAAAA,aAAAA,GAAgC,EAAE;AAElCsN,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAI9M,OAAAA,EAAAA;AAChB+M,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAI/M,OAAAA,EAAAA;AACnBgN,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIhN,OAAAA,EAAAA;AAClBiN,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAIjN,OAAAA,EAAAA;AAOtB,QAAA,IAAI,CAACwM,MAAM,GAAG,IAAI,CAACM,SAAS,CAAC7M,YAAY,EAAA;AACzC,QAAA,IAAI,CAACwM,SAAS,GAAG,IAAI,CAACM,YAAY,CAAC9M,YAAY,EAAA;AAC/C,QAAA,IAAI,CAACyM,QAAQ,GAAG,IAAI,CAACM,WAAW,CAAC/M,YAAY,EAAA;AAC7C,QAAA,IAAI,CAAC0M,MAAM,GAAG,IAAI,CAACM,SAAS,CAAChN,YAAY,EAAA;;AAjChCoM,IAAAA,eAAAA,CAAAA,aAAAA,EAAAA;;YAMPe,GAAAA,EAAAA,SAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACS,gBAAA,IAAA,aAAA;gBAAP,OAAO,CAAA,CAAA,gBAAA,IAAI,CAACR,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,aAAA,CAAcS,OAAO,EAAA,KAAM,KAAA;AACpC,YAAA;;;YAEIC,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACS,gBAAA,IAAA,aAAA;gBAAP,OAAO,CAAA,CAAA,gBAAA,IAAI,CAACV,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,aAAA,CAAcW,OAAO,EAAA,KAAM,KAAA;AACpC,YAAA;;;YAyBAC,GAAAA,EAAAA,QAAAA;mBAAAA,SAAAA,MAAAA,GAAAA;;gBACE,IAAMC,IAAAA,GAAO,IAAI,CAACnB,WAAW,CAACjN,IAAI,CAACyJ,MAAM,CAAC,eAAA,CAAA;AAC1C,gBAAA,IAAM4E,aAAAA,GAAgB,IAAI,CAACR,gBAAgB,CAAChI,SAAS;gBACrD,IAAI,CAACoH,WAAW,CAACpM,iBAAiB,CAAC,IAAI,CAACoM,WAAW,CAACjN,IAAI,EAAEoO,IAAAA,EAAMC,aAAAA,CAAAA;AAEhE,gBAAA,IAAMP,iBAAAA,GAAoB,IAAI,CAACA,iBAAiB,IAAI,EAAC;gBACrD,IAAMP,OAAAA,GAAU,IAAItH,WAAAA,CAAYmI,IAAAA,EAAM;AACpCE,oBAAAA,cAAAA,EAAgB,OAAOR,iBAAAA,CAAkBQ,cAAc,KAAK,QAAA,GAAWR,iBAAAA,CAAkBQ,cAAc,GAAG,GAAA;AAC1GC,oBAAAA,cAAAA,EAAgB,IAAIC,GAAAA,CAAS;wBAAC,IAAI,CAACvB,WAAW,CAACjN;AAAK,qBAAA,CAAA;oBACpDyO,kBAAAA,EAAAA,SAAAA,mBAAmBC,GAAG,EAAA;wBACpB,IAAIZ,iBAAAA,CAAkBW,kBAAkB,EAAE;4BACxC,OAAOX,iBAAAA,CAAkBW,kBAAkB,CAACC,GAAAA,CAAAA;AAC9C,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA,CAAA;oBACAC,YAAAA,EAAAA,SAAAA,aAAarL,IAAU,EAAA;wBACrB,IAAIwK,iBAAAA,CAAkBa,YAAY,EAAE;4BAClC,OAAOb,iBAAAA,CAAkBa,YAAY,CAACrL,IAAAA,CAAAA;AACxC,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA;AACF,iBAAA,CAAA;gBACA,IAAI,CAACiK,OAAO,GAAGA,OAAAA;AAEf,gBAAA,IAAIqB,cAAAA,GAAwC,IAAA;AAC5C,gBAAA,IAAI,CAACzO,aAAa,CAAC+C,IAAI,CACrB,IAAI,CAACpD,SAAS,CAAC+O,mBAAmB,CAACjL,SAAS,CAAC,WAAA;oBAC3CgL,cAAAA,GAAiB,KAAA,CAAK3B,WAAW,CAACtK,yBAAyB,EAAA;AAC7D,gBAAA,CAAA,CAAA,EACA,IAAI,CAACsK,WAAW,CAAC/M,aAAa,CAAC0D,SAAS,CAAC,WAAA;AACvC,oBAAA,MAAMmJ,oBAAAA,CAAqB,6CAAA,CAAA;AAC7B,gBAAA,CAAA,CAAA,CAAA;gBAGFQ,OAAAA,CAAQuB,EAAE,CAAC,kBAAA,EAAoB,SAACC,KAAAA,EAAAA;oBAC9B,IAAIA,KAAAA,CAAMzM,IAAI,KAAK,MAAA,EAAQ;wBACzB,IAAIyM,KAAAA,CAAM/I,MAAM,KAAKuH,OAAAA,EAAS;AAC5B,4BAAA,KAAA,CAAK9K,KAAK,EAAA;wBACZ,CAAA,MAAO;AACL,4BAAA,KAAA,CAAK+K,YAAY,CAACnM,MAAM,GAAG,MAAKoB,KAAK;4BACrC,KAAA,CAAK+K,YAAY,CAACtK,IAAI,CAAC;gCACrB8L,MAAAA,EAAQJ,cAAAA;gCACRK,KAAAA,EAAO,KAAA,CAAKhC,WAAW,CAACtK,yBAAyB;AACnD,6BAAA,CAAA;AACA,4BAAA,KAAA,CAAKF,KAAK,EAAA;AACZ,wBAAA;oBACF,CAAA,MAAO;AACL,wBAAA,KAAA,CAAKA,KAAK,EAAA;AACZ,oBAAA;AACA,oBAAA,IAAI8K,QAAQ2B,SAAS,CAAC7N,MAAM,GAAG,KAAA,CAAK6L,SAAS,EAAE;wBAC7C,KAAA,CAAKM,YAAY,CAAC2B,KAAK,EAAA;wBACvB5B,OAAAA,CAAQ2B,SAAS,CAACC,KAAK,EAAA;AACzB,oBAAA;AACA,oBAAA,IAAIJ,MAAM/I,MAAM,KAAK,MAAKiH,WAAW,CAACjN,IAAI,EAAE;wBAC1C,KAAA,CAAK4N,SAAS,CAAClE,IAAI,EAAA;AACrB,oBAAA;oBACA,KAAA,CAAKiE,WAAW,CAACjE,IAAI,EAAA;AACvB,gBAAA,CAAA,CAAA;gBACA6D,OAAAA,CAAQuB,EAAE,CAAC,mBAAA,EAAqB,SAACjK,EAAAA,EAAAA;oBAC/B,IAAMpC,KAAAA,GAAQoC,EAAAA,CAAGvC,IAAI,KAAK,MAAA,GAAS,MAAKG,KAAK,GAAG,KAAA,CAAKA,KAAK,GAAG,CAAA;AAC7D,oBAAA,IAAMX,QAAAA,GAAW,KAAA,CAAK0L,YAAY,CAAC/K,MAAM,IAAI,IAAA;AAC7C,oBAAA,IAAM2M,CAAAA,GAAIvK,EAAAA,CAAGvC,IAAI,KAAK,MAAA,GAASR,QAAAA,KAAAA,IAAAA,IAAAA,QAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,QAAAA,CAAUkN,MAAM,GAAGlN,QAAAA,KAAAA,IAAAA,IAAAA,QAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,SAAUmN,KAAK;oBACjE,KAAA,CAAKhC,WAAW,CAAClK,qBAAqB,CAACqM,CAAAA,CAAAA;AACzC,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAGAC,GAAAA,EAAAA,MAAAA;mBAAAA,SAAAA,IAAAA,GAAAA;gBACE,IAAI,IAAI,CAACtB,OAAO,EAAE;AAChB,oBAAA,IAAA,aAAA;AAAA,oBAAA,CAAA,aAAA,GAAA,IAAI,CAACR,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,cAAc+B,IAAI,EAAA;oBAClB,IAAI,CAAC7B,SAAS,CAAC/D,IAAI,EAAA;AACrB,gBAAA;AACF,YAAA;;;YAEA6F,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;gBACE,IAAI,IAAI,CAACtB,UAAU,EAAE;AACnB,oBAAA,IAAA,aAAA;AAAA,oBAAA,CAAA,aAAA,GAAA,IAAI,CAACV,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,cAAciC,IAAI,EAAA;oBAClB,IAAI,CAAC9B,YAAY,CAAChE,IAAI,EAAA;AACxB,gBAAA;AACF,YAAA;;;YAEA+F,GAAAA,EAAAA,OAAAA;mBAAAA,SAAAA,KAAAA,GAAAA;AAIE,gBAAA,IAAA,aAAA;AAHA,gBAAA,IAAMC,IAAAA,GAAO,IAAI,CAAClC,YAAY,CAACmC,GAAG,EAAA;gBAClC,IAAI,CAACnC,YAAY,GAAGkC,IAAAA,GAAO;AAACA,oBAAAA;AAAK,iBAAA,GAAG,EAAE;AACtC,gBAAA,IAAI,CAACjN,KAAK,GAAGiN,IAAAA,GAAO,CAAA,GAAI,CAAA;AACxB,gBAAA,CAAA,aAAA,GAAA,IAAI,CAACnC,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,cAAckC,KAAK,EAAA;gBACnB,IAAI,CAAC9B,WAAW,CAACjE,IAAI,EAAA;AACvB,YAAA;;;YAEAhC,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;gBACE,IAAI,CAACjF,KAAK,GAAG,CAAA;gBACb,IAAI,CAAC+K,YAAY,GAAG,EAAE;AACtB,gBAAA,IAAI,CAACrN,aAAa,CAAC+D,OAAO,CAACV,SAAAA,CAAAA,EAAAA;AAAKA,oBAAAA,OAAAA,CAAAA,CAAEiE,WAAW,EAAA;;gBAC7C,IAAI,IAAI,CAAC8F,OAAO,EAAE;oBAChB,IAAI,CAACA,OAAO,CAAC7F,OAAO,EAAA;AACpB,oBAAA,IAAI,CAAC6F,OAAO,CAACkB,kBAAkB,GAAG,WAAA;AAAM,wBAAA,OAAA,IAAA;;AACxC,oBAAA,IAAI,CAAClB,OAAO,CAACoB,YAAY,GAAG,WAAA;AAAM,wBAAA,OAAA,IAAA;;AAClC,oBAAA,IAAI,CAACpB,OAAO,CAACgB,cAAc,GAAG,IAAIC,GAAAA,CAAI;AAAC,wBAAA;AAAK,qBAAA,CAAA;AAC9C,gBAAA;gBAEA,IAAI,CAACjB,OAAO,GAAG,IAAA;AACjB,YAAA;;;AA1IWP,IAAAA,OAAAA,aAAAA;AA2IZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzJD;;IAGO,IAAe4C,UAAAA,iBAAf,WAAA;AAAeA,IAAAA,SAAAA,UAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,CAAAA;AACpBC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACA,QAAA5Q,kBAAA,CAAA,IAAA,EAAU6Q,aAAY,IAAInP,OAAAA,EAAAA,CAAAA;AAGxB,QAAA,IAAI,CAACkP,MAAM,GAAG,IAAI,CAACC,SAAS,CAAClP,YAAY,EAAA;;AALvBgP,IAAAA,eAAAA,CAAAA,UAAAA,EAAAA;;AAQpB;;AAEC,MACDG,GAAAA,EAAAA,MAAAA;mBAAAA,SAAAA,IAAAA,GAAAA;gBACE,IAAI,CAACD,SAAS,CAACpG,IAAI,EAAA;AACrB,YAAA;;;AAboBkG,IAAAA,OAAAA,UAAAA;AA0BrB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBM,IAAA,wBAAMI,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,wBAAAA,CAkCC,WAAgC,EACxBlQ,SAAoB,EAC5B,gBAA0C,EACNoN,SAAiB,EACrD,iBAA8D,EAAA;AAtC/D8C,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,wBAAAA,CAAAA;;;;;;AACX3C,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,YAAAA,MAAAA,CAAAA;AACAF,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AACAE,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AAUA2C,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,YAAAA,MAAAA,CAAAA;AAEA,QAAAhR,kBAAA,CAAA,IAAA,EAAQ0O,eAAR,MAAA,CAAA;AACA,QAAA1O,kBAAA,CAAA,IAAA,EAAQwO,aAAR,MAAA,CAAA;AACA,QAAAxO,kBAAA,CAAA,IAAA,EAAQyO,gBAAR,MAAA,CAAA;AACA,QAAAzO,kBAAA,CAAA,IAAA,EAAQ2O,aAAR,MAAA,CAAA;AACA,QAAA3O,kBAAA,CAAA,IAAA,EAAQiR,eAAR,MAAA,CAAA;AAEA,QAAAjR,kBAAA,CAAA,IAAA,EAAQwD,SAAR,MAAA,CAAA;AAEA,QAAAxD,kBAAA,CAAA,IAAA,EAAQkR,aAAR,MAAA,CAAA;AACA,QAAAlR,kBAAA,CAAA,IAAA,EAAQmR,SAAR,MAAA,CAAA;AACA,QAAAnR,kBAAA,CAAA,IAAA,EAAQ2P,kBAAR,MAAA,CAAA;AAEA,QAAA3P,kBAAA,CAAA,IAAA,EAAQoR,gBAAR,MAAA,CAAA;AAEA,QAAApR,kBAAA,CAAA,IAAA,EAAQqR,WAAR,MAAA,CAAA;AAEA,QAAArR,kBAAA,CAAA,IAAA,EAAQsR,kBAAR,MAAA,CAAA;aAEoBtD,WAAAA,GAAAA,WAAAA;aACAnN,SAAAA,GAAAA,SAAAA;aACA+N,gBAAAA,GAAAA,gBAAAA;aAC4BX,SAAAA,GAAAA,SAAAA;aAChBY,iBAAAA,GAAAA,iBAAAA;aAxBhCmC,QAAAA,GAAW,KAAA;AAEHtC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIhN,OAAAA,EAAAA;AAClB8M,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAI9M,OAAAA,EAAAA;AAChB+M,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAI/M,OAAAA,EAAAA;AACnBiN,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAIjN,OAAAA,EAAAA;AAChBuP,QAAAA,IAAAA,CAAAA,WAAAA,GAAkC,EAAE;aAEpCzN,KAAAA,GAAQ,CAAA;aAER0N,SAAAA,GAAqC,IAAA;aACrCC,KAAAA,GAAa,IAAA;aACbxB,cAAAA,GAAwC,IAAA;AAExCyB,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAIG,YAAAA,EAAAA;AAEnBF,QAAAA,IAAAA,CAAAA,OAAAA,GAAU,IAAI9B,GAAAA,EAAAA;AAEd+B,QAAAA,IAAAA,CAAAA,cAAAA,GAAiB,IAAI/B,GAAAA,EAAAA;AAO3B,QAAA,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAACM,WAAW,CAAC/M,YAAY,EAAA;AAC7C,QAAA,IAAI,CAACuM,MAAM,GAAG,IAAI,CAACM,SAAS,CAAC7M,YAAY,EAAA;AACzC,QAAA,IAAI,CAACwM,SAAS,GAAG,IAAI,CAACM,YAAY,CAAC9M,YAAY,EAAA;AAC/C,QAAA,IAAI,CAAC0M,MAAM,GAAG,IAAI,CAACM,SAAS,CAAChN,YAAY,EAAA;;AA1ChCoP,IAAAA,eAAAA,CAAAA,wBAAAA,EAAAA;;YAMPjC,GAAAA,EAAAA,SAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACmC,WAAW,CAAC7O,MAAM,GAAG,CAAA,IAAK,IAAI,CAACoB,KAAK,GAAG,CAAA;AACrD,YAAA;;;YAEIwL,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACiC,WAAW,CAAC7O,MAAM,GAAG,CAAA,IAAK,IAAI,CAACoB,KAAK,GAAG,IAAI,CAACyN,WAAW,CAAC7O,MAAM;AAC5E,YAAA;;;YAiCA8M,GAAAA,EAAAA,QAAAA;mBAAAA,SAAAA,MAAAA,GAAAA;;gBACE,IAAI,CAAC8B,QAAQ,GAAG,IAAA;gBAChB,IAAM7B,IAAAA,GAAO,IAAI,CAACnB,WAAW,CAACjN,IAAI,CAACyJ,MAAM,CAAC,eAAA,CAAA;AAC1C,gBAAA,IAAM4E,aAAAA,GAAgB,IAAI,CAACR,gBAAgB,CAAChI,SAAS;gBACrD,IAAI,CAACoH,WAAW,CAACpM,iBAAiB,CAAC,IAAI,CAACoM,WAAW,CAACjN,IAAI,EAAEoO,IAAAA,EAAMC,aAAAA,CAAAA;gBAEhE,IAAI,CAACoC,UAAU,CAACrC,IAAAA,EAAM,IAAI,CAACnB,WAAW,CAACjN,IAAI,CAAA;AAE3C,gBAAA,IAAI,CAACqQ,YAAY,CAACK,GAAG,CACnB,IAAI,CAACzD,WAAW,CAAC/M,aAAa,CAAC0D,SAAS,CAAC,SAAA,KAAA,EAAA;AAAE+F,oBAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,OAAO3J,IAAAA,GAAAA,KAAAA,CAAAA,IAAAA;AAChD,oBAAA,IAAI,KAAA,CAAKsQ,OAAO,CAAC9K,GAAG,CAACmE,KAAAA,CAAAA,EAAQ;AAC3B,wBAAA;AACF,oBAAA;oBACA,KAAA,CAAK2G,OAAO,CAACI,GAAG,CAAC/G,KAAAA,CAAAA;oBACjB,IAAI,KAAA,CAAKsG,QAAQ,EAAE;wBACjB,KAAA,CAAKQ,UAAU,CAAC9G,KAAAA,EAAO3J,IAAAA,CAAAA;AACzB,oBAAA;AACF,gBAAA,CAAA,CAAA,EACA,IAAI,CAACF,SAAS,CAAC+O,mBAAmB,CAACjL,SAAS,CAAC,WAAA;AAC3C,oBAAA,KAAA,CAAKgL,cAAc,GAAG,KAAA,CAAK3B,WAAW,CAACtK,yBAAyB,EAAA;AAClE,gBAAA,CAAA,CAAA,CAAA;AAEJ,YAAA;;;YAEA4M,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;AACE,gBAAA,IAAI,CAAC,IAAI,CAACtB,UAAU,EAAE;AACpB,oBAAA;AACF,gBAAA;gBACA0C,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;gBACvB,IAAM9M,IAAAA,GAAO,IAAI,CAAC4M,WAAW,CAAC,IAAI,CAACzN,KAAK,CAAC;AACzC,gBAAA,IAAIa,IAAAA,EAAM;AACH,oBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;wBAAL,IAAA,IAAK,SAAA,GAAWA,KAAKsN,YAAY,CAAA,MAAA,CAAA,QAAA,CAAA,EAAA,EAA5B,SAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAA8B;AAA9B,4BAAA,IAAMpN,CAAAA,GAAN,KAAA,CAAA,KAAA;AACHA,4BAAAA,CAAAA,CAAEgM,IAAI,EAAA;AACR,wBAAA;;AAFK,wBAAA,iBAAA,GAAA,IAAA;AAAA,wBAAA,cAAA,GAAA,GAAA;;;iCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,gCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,4BAAA,IAAA,iBAAA,EAAA;AAAA,gCAAA,MAAA,cAAA;;;;AAGL,oBAAA,IAAI,CAACvC,WAAW,CAAClK,qBAAqB,CAACO,KAAK2L,KAAK,CAAA;AACnD,gBAAA;AACA,gBAAA,IAAI,CAACxM,KAAK,EAAA;gBACV,IAAI,CAACiL,YAAY,CAAChE,IAAI,EAAA;gBACtB,IAAI,CAACiE,WAAW,CAACjE,IAAI,EAAA;AACvB,YAAA;;;YAEA2F,GAAAA,EAAAA,MAAAA;mBAAAA,SAAAA,IAAAA,GAAAA;AACE,gBAAA,IAAI,CAAC,IAAI,CAACtB,OAAO,EAAE;AACjB,oBAAA;AACF,gBAAA;gBACA4C,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;gBACvB,IAAIS,gBAAAA;gBACJ,IAAI,IAAI,CAACV,SAAS,EAAE;oBAClBU,gBAAAA,GAAmB,IAAI,CAACV,SAAS;oBACjC,IAAI,CAACA,SAAS,GAAG,IAAA;gBACnB,CAAA,MAAO;AACL,oBAAA,IAAI,CAAC1N,KAAK,EAAA;AACVoO,oBAAAA,gBAAAA,GAAmB,IAAI,CAACX,WAAW,CAAC,IAAI,CAACzN,KAAK,CAAC;AACjD,gBAAA;AACA,gBAAA,IAAImJ,GAAAA,GAAMiF,gBAAAA,CAAiBD,YAAY,CAACvP,MAAM;AAC9C,gBAAA,MAAOuK,MAAM,CAAA,CAAG;AACdA,oBAAAA,GAAAA,EAAAA;AACAiF,oBAAAA,gBAAAA,CAAiBD,YAAY,CAAChF,GAAAA,CAAI,CAAC0D,IAAI,EAAA;AACzC,gBAAA;AACA,gBAAA,IAAIuB,gBAAAA,EAAkB;oBACpB,IAAMjC,cAAAA,GAAiBiC,iBAAiB7B,MAAM;AAC9C,oBAAA,IAAI,CAAC/B,WAAW,CAAClK,qBAAqB,CAAC6L,cAAAA,CAAAA;oBACvC,IAAI,CAACnB,SAAS,CAAC/D,IAAI,EAAA;oBACnB,IAAI,CAACiE,WAAW,CAACjE,IAAI,EAAA;AACvB,gBAAA;AACF,YAAA;;;YAEA+F,GAAAA,EAAAA,OAAAA;mBAAAA,SAAAA,KAAAA,GAAAA;gBACE,IAAI,CAACS,WAAW,GAAG,EAAE;gBACrB,IAAI,CAACC,SAAS,GAAG,IAAA;gBACjB,IAAI,CAAC1N,KAAK,GAAG,CAAA;gBACb,IAAI,CAACmM,cAAc,GAAG,IAAA;gBACtB+B,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;AACvB,gBAAA,IAAI,CAACG,cAAc,CAACrM,OAAO,CAAC,SAAC4M,WAAAA,EAAAA;AAC3BA,oBAAAA,WAAAA,CAAYrB,KAAK,EAAA;AACnB,gBAAA,CAAA,CAAA;gBACA,IAAI,CAAC9B,WAAW,CAACjE,IAAI,EAAA;AACvB,YAAA;;;YAEAhC,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;AACE,gBAAA,IAAI,CAAC+H,KAAK,EAAA;AACV,gBAAA,IAAI,CAACb,cAAc,GAAG,IAAI,CAACuB,SAAS,GAAG,IAAA;gBACvC,IAAI,CAACE,YAAY,CAAC5I,WAAW,EAAA;AAC7B,gBAAA,IAAI,CAAC8I,cAAc,CAACrM,OAAO,CAAC,SAAC4M,WAAAA,EAAAA;AAC3BA,oBAAAA,WAAAA,CAAYpJ,OAAO,EAAA;AACrB,gBAAA,CAAA,CAAA;gBACA,IAAI,CAAC4I,OAAO,CAACb,KAAK,EAAA;gBAClB,IAAI,CAACc,cAAc,CAACd,KAAK,EAAA;AAC3B,YAAA;;;YAEQgB,GAAAA,EAAAA,YAAAA;mBAAR,SAAQA,UAAAA,CAAW9G,KAAwB,EAAE3J,IAAU,EAAA;;AACrD,gBAAA,IAAM8N,iBAAAA,GAAoB,IAAI,CAACA,iBAAiB,IAAI,EAAC;gBACrD,IAAMgD,WAAAA,GAAc,IAAI7K,WAAAA,CAAY0D,KAAAA,EAAO;AACzC4E,oBAAAA,cAAAA,EAAgB,IAAIC,GAAAA,CAAI;AAACxO,wBAAAA;AAAK,qBAAA,CAAA;oBAC9BsO,cAAAA,EAAgB,CAAA;oBAChBG,kBAAAA,EAAAA,SAAAA,mBAAmBC,GAAG,EAAA;wBACpB,IAAIZ,iBAAAA,CAAkBW,kBAAkB,EAAE;4BACxC,OAAOX,iBAAAA,CAAkBW,kBAAkB,CAACC,GAAAA,CAAAA;AAC9C,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA,CAAA;oBACAC,YAAAA,EAAAA,SAAAA,aAAarL,IAAU,EAAA;wBACrB,IAAIwK,iBAAAA,CAAkBa,YAAY,EAAE;4BAClC,OAAOb,iBAAAA,CAAkBa,YAAY,CAACrL,IAAAA,CAAAA;AACxC,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA;AACF,iBAAA,CAAA;gBAEAwN,WAAAA,CAAYhC,EAAE,CAAC,kBAAA,EAAoB,SAACC,KAAAA,EAAAA;oBAClC,IAAIA,KAAAA,CAAMzM,IAAI,KAAK,MAAA,IAAU,CAAEyM,WAAY,CAAZA,KAAAA,CAAM/I,MAAM,EAAYC,WAAAA,CAAAA,EAAc;AACnE,wBAAA,IAAI,MAAKxD,KAAK,IAAI,MAAKyN,WAAW,CAAC7O,MAAM,EAAE;AACzC,4BAAA,IAAM0P,YAAY,KAAA,CAAKb,WAAW,CAACc,KAAK,CAAC,MAAKvO,KAAK,CAAA;4BACnDsO,SAAAA,CAAU7M,OAAO,CAACZ,SAAAA,IAAAA,EAAAA;AAChBA,gCAAAA,IAAAA,CAAKsN,YAAY,CAAC1M,OAAO,CAACV,SAAAA,CAAAA,EAAAA;oCACxBA,CAAAA,CAAEiM,KAAK,CAAC,KAAA,EAAO,IAAA,CAAA;AACjB,gCAAA,CAAA,CAAA;AACF,4BAAA,CAAA,CAAA;AACA,4BAAA,KAAA,CAAKS,WAAW,CAAC7O,MAAM,GAAG,MAAKoB,KAAK;4BACpC,KAAA,CAAKkL,WAAW,CAACjE,IAAI,EAAA;AACvB,wBAAA;wBACA,IAAI,KAAA,CAAKyG,SAAS,KAAK,IAAA,EAAM;AAC3B,4BAAA,KAAA,CAAKA,SAAS,GAAG;AACfnB,gCAAAA,MAAAA,EAAQ,MAAKJ,cAAc;gCAC3BK,KAAAA,EAAO,IAAA;AACP2B,gCAAAA,YAAAA,EAAc;AAChB,6BAAA;4BACA,KAAA,CAAKR,KAAK,GAAGa,UAAAA,CAAW,WAAA;AACtB,gCAAA,IAAI,MAAKf,WAAW,CAAC7O,MAAM,IAAI,KAAA,CAAK6L,SAAS,EAAE;oCAC7C,KAAA,CAAKgD,WAAW,CAACf,KAAK,EAAA;gCACxB,CAAA,MAAO;AACL,oCAAA,KAAA,CAAK1M,KAAK,EAAA;AACZ,gCAAA;;AAEA,gCAAA,KAAA,CAAK0N,SAAS,CAAElB,KAAK,GAAG,MAAKL,cAAc;AAC3C,gCAAA,KAAA,CAAKsB,WAAW,CAAChN,IAAI,CAAC,MAAKiN,SAAS,CAAA;AACpC,gCAAA,KAAA,CAAKA,SAAS,GAAG,IAAA;gCACjB,KAAA,CAAKvC,SAAS,CAAClE,IAAI,EAAA;gCACnB,KAAA,CAAKiE,WAAW,CAACjE,IAAI,EAAA;AACvB,4BAAA,CAAA,EAAG,OAAOoE,iBAAAA,CAAkBQ,cAAc,KAAK,QAAA,GAAWR,iBAAAA,CAAkBQ,cAAc,GAAG,GAAA,CAAA;AAC/F,wBAAA;AAEA,wBAAA,KAAA,CAAK6B,SAAS,CAACS,YAAY,CAAC1N,IAAI,CAAC4N,WAAAA,CAAAA;AACnC,oBAAA;AACF,gBAAA,CAAA,CAAA;AAEA,gBAAA,IAAI,CAACP,cAAc,CAACG,GAAG,CAACI,WAAAA,CAAAA;AAC1B,YAAA;;;AAhMWd,IAAAA,OAAAA,wBAAAA;AAiMZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5MD;;AAEC,IACM,IAAA,aAAekB,GAAf,SAAeA,aAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA;AACpB;;MAGAC,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACA;;MAGAC,kBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,MAAAA,CAAAA;AAEA,IAAAnS,kBAAA,CAAA,IAAA,EAAUoS,aAAY,IAAI1Q,OAAAA,EAAAA,CAAAA;AAC1B,IAAA1B,kBAAA,CAAA,IAAA,EAAUqS,oBAAmB,IAAI3Q,OAAAA,EAAAA,CAAAA;AAG/B,IAAA,IAAI,CAACwQ,MAAM,GAAG,IAAI,CAACE,SAAS,CAACzQ,YAAY,EAAA;AACzC,IAAA,IAAI,CAACwQ,aAAa,GAAG,IAAI,CAACE,gBAAgB,CAAC1Q,YAAY,EAAA;AAc1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BM,IAAA,mBAAM2Q,iBAAN,SAAA,aAAA,EAAA;AAAMA,IAAAA,WAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,CAGCC,MAAuC,EAAA;AAHxCD,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,mBAAAA,CAAAA;;gBAIThT,aAAA,CAAA,IAAA,EAJSgT,mBAAAA,CAAAA,EACXE,kBAAAA,CAAAA,KAAAA,EAAAA,SAAAA,EAAAA,MAAAA,CAAAA;AAIE,QAAA,KAAA,CAAKA,OAAO,GAAG,IAAIC,kBAAAA,CAAmB,oBAAA,CAAAC,gBAAA,CAAA,EAAA,EACjCH,MAAAA,CAAAA,EAAAA;AACHI,YAAAA,QAAAA,EAAU,SAAVA,QAAAA,CAAWtH,IAAAA,EAAAA;AACTkH,gBAAAA,IAAAA,gBAAAA;AAAAA,gBAAAA,CAAAA,gBAAAA,GAAAA,MAAAA,CAAOI,QAAQ,MAAA,IAAA,IAAfJ,gBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,sBAAAA,MAAAA,EAAkBlH,IAAAA,CAAAA;gBAClB,KAAA,CAAK+G,SAAS,CAAC3H,IAAI,EAAA;AACrB,YAAA,CAAA;AACAmI,YAAAA,iBAAAA,EAAmB,SAAnBA,iBAAAA,CAAoBvH,IAAAA,EAAAA;AAClBkH,gBAAAA,IAAAA,yBAAAA;AAAAA,gBAAAA,CAAAA,yBAAAA,GAAAA,MAAAA,CAAOK,iBAAiB,MAAA,IAAA,IAAxBL,yBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,+BAAAA,MAAAA,EAA2BlH,IAAAA,CAAAA;AAC3B,gBAAA,IAAMwH,SAAyBxH,IAAAA,CAAKwH,MAAM,CAACzO,GAAG,CAACe,SAAAA,KAAAA,EAAAA;oBAC7C,OAAO;AACL2N,wBAAAA,QAAAA,EAAU3N,MAAM2N,QAAQ;AACxBC,wBAAAA,OAAAA,EAAS5N,MAAM4N;AACjB,qBAAA;AACF,gBAAA,CAAA,CAAA;gBACA,KAAA,CAAKV,gBAAgB,CAAC5H,IAAI,CAACoI,MAAAA,CAAAA;AAC7B,YAAA;;;;AApBOP,IAAAA,eAAAA,CAAAA,mBAAAA,EAAAA;;YAwBXU,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,CAAmB3S,GAAW,EAAEgL,IAAyB,EAAA;AACvD,gBAAA,IAAI,CAACmH,OAAO,CAACS,iBAAiB,CAAC5S,GAAAA,EAAKgL,IAAAA,CAAAA;AACtC,YAAA;;;YAEA6H,GAAAA,EAAAA,WAAAA;mBAAAA,SAAAA,SAAAA,GAAAA;gBACE,IAAI,CAACV,OAAO,CAACW,UAAU,EAAA;gBACvB,IAAI,CAACX,OAAO,CAAC/J,OAAO,EAAA;AACtB,YAAA;;;AA/BW6J,IAAAA,OAAAA,mBAAAA;EAA4BL,aAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOzC;;;;;;;;;IAUO,IAAMmB,cAAAA,iBAAN,SAAA,aAAA,EAAA;AAAMA,IAAAA,WAAAA,CAAAA,cAAAA,EAAAA,aAAAA,CAAAA;aAAAA,cAAAA,CAMCC,KAAY,EAAEC,OAA+B,EAAA;AAN9CF,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,cAAAA,CAAAA;;;gBAOT9T,aAAA,CAAA,IAAA,EAPS8T,cAAAA,CAAAA,EACXpT,kBAAA,CAAA,KAAA,EAAS8S,UAAAA,EAAT,MAAA,CAAA,EAEA9S,0BAAQuT,WAAAA,EAAY,KAAA,CAAA,EACpBvT,kBAAA,CAAA,KAAA,EAAQwT,QAAAA,EAA8B,EAAC,CAAA;AAIrC,QAAA,KAAA,CAAKV,QAAQ,GAAA,CAAA,IAAA,GAAGQ,OAAAA,KAAAA,IAAAA,IAAAA,OAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAASR,QAAQ,MAAA,IAAA,IAAA,IAAA,KAAA,MAAA,GAAA,IAAA,GAAI,CAAA;QACrCW,OAAAA,CAAQC,OAAO,EAAA,CAAGrJ,IAAI,CAAC,WAAA;YACrB,IAAI,CAAC,KAAA,CAAKkJ,SAAS,EAAE;gBACnB,KAAA,CAAKnB,SAAS,CAAC3H,IAAI,EAAA;AACrB,YAAA;AACF,QAAA,CAAA,CAAA;;;AAbS2I,IAAAA,eAAAA,CAAAA,cAAAA,EAAAA;;YAgBXJ,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,CAAmB3S,GAAW,EAAEgL,IAAyB,EAAA;gBACvD,IAAI,IAAI,CAACkI,SAAS,EAAE;AAClB,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAI,CAACC,MAAM,CAACnT,GAAAA,CAAI,GAAGgL,IAAAA;AACnB,gBAAA,IAAI,CAACsI,mBAAmB,EAAA;AAC1B,YAAA;;;YAEAT,GAAAA,EAAAA,WAAAA;mBAAAA,SAAAA,SAAAA,GAAAA;gBACE,IAAI,CAACK,SAAS,GAAG,IAAA;AACnB,YAAA;;;AAEA;;AAEC,MACDK,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;gBACE,OAAO,cAAA,CAAA,EAAA,EAAK,IAAI,CAACJ,MAAM,CAAA;AACzB,YAAA;;;YAEQG,GAAAA,EAAAA,qBAAAA;mBAAR,SAAQA,mBAAAA,GAAAA;AACN,gBAAA,IAAMd,SAAyB,EAAE;AACjCA,gBAAAA,MAAAA,CAAO5O,IAAI,CAAC;oBACV6O,QAAAA,EAAU,IAAI,CAACA,QAAQ;AACvBC,oBAAAA,OAAAA,EAAS,IAAI,CAACS,MAAM,CAACT;AACvB,iBAAA,CAAA;AACA,gBAAA,IAAI,CAACV,gBAAgB,CAAC5H,IAAI,CAACoI,MAAAA,CAAAA;AAC7B,YAAA;;;AA1CWO,IAAAA,OAAAA,cAAAA;EAAuBnB,aAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjB7B,IAAA,mBAAM4B,iBAAN,SAAA,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,CAoBCC,GAAW,EAAEC,QAAgB,EAAEhT,IAAU,EAAA;AApB1C8S,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,mBAAAA,CAAAA;;AAqBT,QAAA,KAAA,GAAA,WAAA,CAAA,IAAA,EArBSA,sBACXrB,kBAAAA,CAAAA,KAAAA,EAAAA,SAAAA,EAAAA,MAAAA,CAAAA,EAEAxS,kBAAA,CAAA,KAAA,EAAQ4Q,UAAS,SAACoD,EAAAA,EAAAA;AAChB,YAAA,IAAIA,EAAAA,EAAI;gBACN,KAAA,CAAK5B,SAAS,CAAC3H,IAAI,EAAA;AACrB,YAAA;AACF,QAAA,CAAA,CAAA,EAEAzK,0BAAQiU,UAAAA,EAAW,WAAA;AACjB,YAAA,IAAMC,aAA6B,EAAE;YACrC,KAAA,CAAK1B,OAAO,CAAC2B,SAAS,CAACC,SAAS,EAAA,CAAGnP,OAAO,CAAC,SAACE,KAAAA,EAAOkP,EAAAA,EAAAA;AACjDH,gBAAAA,UAAAA,CAAWjQ,IAAI,CAAC;oBACd6O,QAAAA,EAAUuB,EAAAA;AACVtB,oBAAAA,OAAAA,EAAS5N,MAAM4N;AACjB,iBAAA,CAAA;AACF,YAAA,CAAA,CAAA;YACA,KAAA,CAAKV,gBAAgB,CAAC5H,IAAI,CAACyJ,UAAAA,CAAAA;AAC7B,QAAA,CAAA,CAAA;AAIE,QAAA,KAAA,CAAKhC,MAAM,GAAG,KAAA,CAAKE,SAAS,CAACzQ,YAAY,EAAA;AACzC,QAAA,KAAA,CAAKwQ,aAAa,GAAG,KAAA,CAAKE,gBAAgB,CAAC1Q,YAAY,EAAA;AACvD,QAAA,KAAA,CAAK6Q,OAAO,GAAG,IAAI8B,iBAAAA,CAAkBR,KAAKC,QAAAA,EAAUhT,IAAAA,CAAAA;AAEpD,QAAA,KAAA,CAAKyR,OAAO,CAAC+B,IAAI,CAAC,MAAA,EAAQ,MAAK3D,MAAM,CAAA;QACrC,KAAA,CAAK4B,OAAO,CAAC2B,SAAS,CAACtE,EAAE,CAAC,QAAA,EAAU,MAAKoE,QAAQ,CAAA;;;AA3BxCJ,IAAAA,eAAAA,CAAAA,mBAAAA,EAAAA;;YA8BXb,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,CAAmB3S,GAAW,EAAEgL,IAAyB,EAAA;AACvD,gBAAA,IAAI,CAACmH,OAAO,CAAC2B,SAAS,CAACnB,kBAAkB,CAAC3S,GAAAA,EAAKgL,IAAAA,CAAAA;AACjD,YAAA;;;YAEA6H,GAAAA,EAAAA,WAAAA;mBAAAA,SAAAA,SAAAA,GAAAA;gBACE,IAAI,CAACV,OAAO,CAAC2B,SAAS,CAACK,GAAG,CAAC,QAAA,EAAU,IAAI,CAACP,QAAQ,CAAA;gBAClD,IAAI,CAACzB,OAAO,CAACW,UAAU,EAAA;gBACvB,IAAI,CAACX,OAAO,CAAC/J,OAAO,EAAA;AACtB,YAAA;;;AAtCWoL,IAAAA,OAAAA,mBAAAA;EAA4B5B,aAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOlC,IAAA,iBAAMwC,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,iBAAAA,CAsBC,MAAgC,EAAA;;AAtBjCA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,CAAAA;;AACX,QAAAzU,kBAAA,CAAA,IAAA,EAAQoR,gBAAR,MAAA,CAAA;AACAsD,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AAkBA,QAAA1U,kBAAA,CAAA,IAAA,EAAQmR,SAAR,MAAA,CAAA;aAEmBoB,MAAAA,GAAAA,MAAAA;AArBXnB,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAIG,YAAAA,EAAAA;aAC3BmD,SAAAA,GAAwB;AACtB9T,YAAAA,WAAAA;AACAmN,YAAAA,aAAAA;AACA,YAAA;gBACEyE,OAAAA,EAASmC,OAAAA;gBACTC,WAAAA,EAAa7G;AACf,aAAA;AAAG,YAAA;gBACDyE,OAAAA,EAASP,aAAAA;AACT4C,gBAAAA,UAAAA,EAAY,SAAZA,UAAAA,CAAaC,MAAAA,EAAAA;AACX,oBAAA,OAAO,MAAKvC,MAAM,CAACwC,eAAe,CAACD,OAAO/T,IAAI,CAAA;AAChD,gBAAA,CAAA;gBACAiU,IAAAA,EAAM;AAACpU,oBAAAA;AAAY;AACrB,aAAA;AAAG,YAAA;gBACD4R,OAAAA,EAASpT,cAAAA;gBACT6V,QAAAA,EAAU5V;AACZ;AACD,SAAA;aAEO8R,KAAAA,GAAa,IAAA;;AApBVsD,IAAAA,eAAAA,CAAAA,iBAAAA,EAAAA;;YAyBXS,GAAAA,EAAAA,OAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,MAAMC,OAAgB,EAAA;;AACpB,gBAAA,IAAMC,UAAAA,GAAaD,OAAAA,CAAQ1U,GAAG,CAACkQ,UAAAA,EAAY,IAAA,CAAA;gBAC3C,IAAM0E,SAAAA,GAAYF,OAAAA,CAAQ1U,GAAG,CAACwR,aAAAA,CAAAA;gBAC9B,IAAM6C,MAAAA,GAASK,OAAAA,CAAQ1U,GAAG,CAACG,WAAAA,CAAAA;AAC3B,gBAAA,IAAIwU,UAAAA,EAAY;oBACd,IAAM5T,SAAAA,GAAY2T,OAAAA,CAAQ1U,GAAG,CAAC6U,SAAAA,CAAAA;AAC9BD,oBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAW3U,GAAG,CAAC0U,OAAAA,CAAAA,CAAAA;oBACvD,IAAI,CAAC/D,YAAY,CAACK,GAAG,CACnB2D,UAAAA,CAAWxE,MAAM,CAACjM,SAAS,CAAC,WAAA;AAC1B0Q,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAW3U,GAAG,CAAC0U,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACA3T,SAAAA,CAAU4M,QAAQ,CAACzJ,SAAS,CAAC,WAAA;AAC3B0Q,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAW3U,GAAG,CAAC0U,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACAE,SAAAA,CAAUlD,aAAa,CAACxN,SAAS,CAAC,SAACkO,MAAAA,EAAAA;wBACjCuC,UAAAA,CAAWG,OAAO,CAAC1C,MAAAA,EAAQsC,OAAAA,CAAAA;AAC7B,oBAAA,CAAA,CAAA,CAAA;AAEJ,gBAAA;AAEA,gBAAA,OAAOE,UAAUnD,MAAM,CAAC3G,SAAS,EAAA,CAAGlB,IAAI,CAAC,WAAA;AACvC,oBAAA,IAAI,CAAC,KAAA,CAAKkI,MAAM,CAACiD,QAAQ,EAAE;AACzB,wBAAA;AACF,oBAAA;AACA,oBAAA,IAAMrG,IAAAA,GAAO2F,MAAAA,CAAO/T,IAAI,CAACyJ,MAAM,CAAC,eAAA,CAAA;oBAChC,IAAI2E,IAAAA,CAAK5I,GAAG,CAAC,OAAA,CAAA,EAAU;AACrB,wBAAA;AACF,oBAAA;oBACA,OAAO,IAAIkN,QAAQC,SAAAA,OAAAA,EAAAA;AACjB,wBAAA,IAAM+B,OAAAA,GAAU,SAAA,QAAA,GAAA;4BACd,IAAItG,IAAAA,CAAK5I,GAAG,CAAC,OAAA,CAAA,EAAU;AACrBmN,gCAAAA,OAAAA,EAAAA;4BACF,CAAA,MAAO;gCACL,KAAA,CAAKvC,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,4BAAA;AACF,wBAAA,CAAA;wBACA,KAAA,CAAKtE,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEAvC,GAAAA,EAAAA,WAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,UAAUiC,OAAgB,EAAA;gBACxB,IAAI,CAAC/D,YAAY,CAAC5I,WAAW,EAAA;gBAC7B2M,OAAAA,CAAQ1U,GAAG,CAACG,WAAAA,CAAAA,CAAa6H,OAAO,EAAA;gBAChC0M,OAAAA,CAAQ1U,GAAG,CAACkU,OAAAA,CAAAA,CAASlM,OAAO,EAAA;gBAC5B0M,OAAAA,CAAQ1U,GAAG,CAACwR,aAAAA,CAAAA,CAAeiB,SAAS,EAAA;gBACpCxB,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;AACzB,YAAA;;;AAxEWsD,IAAAA,OAAAA,iBAAAA;AAyEZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3EM,IAAA,iCAAMiB,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,iCAAAA,CAwBC,MAA2C,EAAA;;AAxB5CA,QAAAA,iBAAAA,CAAAA,IAAAA,EAAAA,iCAAAA,CAAAA;;AACX,QAAA,gBAAA,CAAA,IAAA,EAAQtE,gBAAR,MAAA,CAAA;AACAsD,QAAAA,gBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AAoBA,QAAA,gBAAA,CAAA,IAAA,EAAQvD,SAAR,MAAA,CAAA;aAEmBoB,MAAAA,GAAAA,MAAAA;AAvBXnB,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAIG,YAAAA,EAAAA;aAC3BmD,SAAAA,GAAwB;AACtB9T,YAAAA,WAAAA;AACAmQ,YAAAA,wBAAAA;AACA,YAAA;gBACEyB,OAAAA,EAASmC,OAAAA;gBACTC,WAAAA,EAAa7D;AACf,aAAA;AAAG,YAAA;gBACDyB,OAAAA,EAASP,aAAAA;AACT4C,gBAAAA,UAAAA,EAAY,SAAZA,UAAAA,CAAaC,MAAAA,EAAAA;AACX,oBAAA,OAAO,MAAKvC,MAAM,CAACwC,eAAe,CAACD,OAAO/T,IAAI,CAAA;AAChD,gBAAA,CAAA;gBACAiU,IAAAA,EAAM;AAACpU,oBAAAA;AAAY;AACrB,aAAA;AAAG,YAAA;gBACD4R,OAAAA,EAASpT,cAAAA;AACTyV,gBAAAA,UAAAA,EAAY,SAAZA,UAAAA,GAAAA;oBACE,OAAO,KAAA,CAAKtC,MAAM,CAACzR,cAAc;AACnC,gBAAA;AACF;AACD,SAAA;aAEOqQ,KAAAA,GAAa,IAAA;;AAtBVuE,IAAAA,aAAAA,CAAAA,iCAAAA,EAAAA;;YA2BXR,GAAAA,EAAAA,OAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,MAAMC,OAAgB,EAAA;;AACpB,gBAAA,IAAMC,UAAAA,GAAaD,OAAAA,CAAQ1U,GAAG,CAACkQ,UAAAA,EAAY,IAAA,CAAA;gBAC3C,IAAM0E,SAAAA,GAAYF,OAAAA,CAAQ1U,GAAG,CAACwR,aAAAA,CAAAA;gBAC9B,IAAM6C,MAAAA,GAASK,OAAAA,CAAQ1U,GAAG,CAACG,WAAAA,CAAAA;AAC3B,gBAAA,IAAIwU,UAAAA,EAAY;oBACd,IAAM5T,SAAAA,GAAY2T,OAAAA,CAAQ1U,GAAG,CAAC6U,SAAAA,CAAAA;AAC9BD,oBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAW3U,GAAG,CAAC0U,OAAAA,CAAAA,CAAAA;oBACvD,IAAI,CAAC/D,YAAY,CAACK,GAAG,CACnB2D,UAAAA,CAAWxE,MAAM,CAACjM,SAAS,CAAC,WAAA;AAC1B0Q,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAW3U,GAAG,CAAC0U,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACA3T,SAAAA,CAAU4M,QAAQ,CAACzJ,SAAS,CAAC,WAAA;AAC3B0Q,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAW3U,GAAG,CAAC0U,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACAE,SAAAA,CAAUlD,aAAa,CAACxN,SAAS,CAAC,SAACkO,MAAAA,EAAAA;wBACjCuC,UAAAA,CAAWG,OAAO,CAAC1C,MAAAA,EAAQsC,OAAAA,CAAAA;AAC7B,oBAAA,CAAA,CAAA,CAAA;AAEJ,gBAAA;AACA,gBAAA,OAAOE,UAAUnD,MAAM,CAAC3G,SAAS,EAAA,CAAGlB,IAAI,CAAC,WAAA;AACvC,oBAAA,IAAI,CAAC,KAAA,CAAKkI,MAAM,CAACiD,QAAQ,EAAE;AACzB,wBAAA;AACF,oBAAA;AACA,oBAAA,IAAMrG,IAAAA,GAAO2F,MAAAA,CAAO/T,IAAI,CAACyJ,MAAM,CAAC,eAAA,CAAA;oBAChC,IAAI2E,IAAAA,CAAK5I,GAAG,CAAC,OAAA,CAAA,EAAU;AACrB,wBAAA;AACF,oBAAA;oBACA,OAAO,IAAIkN,QAAQC,SAAAA,OAAAA,EAAAA;AACjB,wBAAA,IAAM+B,OAAAA,GAAU,SAAA,QAAA,GAAA;4BACd,IAAItG,IAAAA,CAAK5I,GAAG,CAAC,OAAA,CAAA,EAAU;AACrBmN,gCAAAA,OAAAA,EAAAA;4BACF,CAAA,MAAO;gCACL,KAAA,CAAKvC,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,4BAAA;AACF,wBAAA,CAAA;wBACA,KAAA,CAAKtE,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEAvC,GAAAA,EAAAA,WAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,UAAUiC,OAAgB,EAAA;gBACxB,IAAI,CAAC/D,YAAY,CAAC5I,WAAW,EAAA;gBAC7B2M,OAAAA,CAAQ1U,GAAG,CAACG,WAAAA,CAAAA,CAAa6H,OAAO,EAAA;gBAChC0M,OAAAA,CAAQ1U,GAAG,CAACkU,OAAAA,CAAAA,CAASlM,OAAO,EAAA;gBAC5B0M,OAAAA,CAAQ1U,GAAG,CAACwR,aAAAA,CAAAA,CAAeiB,SAAS,EAAA;gBACpCxB,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;AACzB,YAAA;;;AAzEWuE,IAAAA,OAAAA,iCAAAA;AA0EZ,CAAA;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/base/sub-model-loader.ts","../src/base/collaborate.ts","../src/base/collab-history.ts","../src/base/message-bus.ts","../src/base/multiple-doc-collab-history.ts","../src/base/sync-connector.ts","../src/connectors/hocuspocus-connector.ts","../src/connectors/local-connector.ts","../src/connectors/y-websocket-connector.ts","../src/collaborate-module.ts","../src/multiple-document-collaborate-module.ts"],"sourcesContent":["import { Doc, Doc as YDoc } from 'yjs'\nimport { Injectable } from '@viewfly/core'\nimport { AsyncComponent, AsyncSlot, makeError } from '@textbus/core'\n\nconst subModelLoaderErrorFn = makeError('subModelLoaderError')\n\n/**\n * 子文档加载器\n */\nexport abstract class SubModelLoader {\n /**\n * 通过插槽获取已加载的文档\n * @param slot\n */\n abstract getLoadedModelBySlot(slot: AsyncSlot): YDoc | null\n\n /**\n * 通过组件获取已加载的文档\n * @param component\n */\n abstract getLoadedModelByComponent(component: AsyncComponent): YDoc | null\n\n /**\n * 当本地新增异步子插槽时调用\n * @param slot\n */\n abstract createSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当本地新增异步子组件时调用\n * @param component\n */\n abstract createSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n\n /**\n * 当远程异步子插槽同步到本地时调用\n * @param slot\n */\n abstract loadSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当远程异步子组件同步到本地时调用\n * @param component\n */\n abstract loadSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n}\n\n@Injectable()\nexport class NonSubModelLoader extends SubModelLoader {\n createSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n createSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelBySlot(): Doc {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelByComponent(): Doc {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n}\n","import { Injectable } from '@viewfly/core'\nimport { filter, map, Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n ChangeOrigin,\n Component,\n Registry,\n Formats,\n makeError,\n Scheduler,\n Selection,\n Slot,\n AsyncSlot,\n AsyncComponent,\n AbstractSelection,\n observe,\n ProxyModel,\n toRaw,\n getObserver,\n attachModel,\n valueToJSON,\n} from '@textbus/core'\nimport {\n AbstractType,\n Array as YArray, createAbsolutePositionFromRelativePosition, createRelativePositionFromTypeIndex,\n Doc as YDoc,\n Map as YMap,\n RelativePosition,\n Text as YText,\n Transaction,\n UndoManager,\n YArrayEvent,\n YMapEvent,\n YTextEvent,\n XmlElement,\n} from 'yjs'\n\nimport { SubModelLoader } from './sub-model-loader'\n\n/** 与本地稀疏数组「空洞」对应的 YXmlElement,仅放入 YArray,不作通用 XML 节点使用 */\nconst ARRAY_HOLE_ELEMENT_NODE = 'tb-array-hole'\n\nexport interface RelativePositionRecord {\n doc: YDoc,\n position: RelativePosition\n}\n\nexport interface CursorPosition {\n anchor: RelativePositionRecord\n focus: RelativePositionRecord\n}\n\nexport interface CollaborateHistorySelectionPosition {\n before: CursorPosition | null\n after: CursorPosition | null\n}\n\nconst collaborateErrorFn = makeError('Collaborate')\n\nclass SlotMap {\n private slotAndYTextMap = new WeakMap<Slot, YText>()\n private yTextAndSlotMap = new WeakMap<YText, Slot>()\n\n set(key: Slot, value: YText): void\n set(key: YText, value: Slot): void\n set(key: any, value: any) {\n if (key instanceof Slot) {\n this.slotAndYTextMap.set(key, value)\n this.yTextAndSlotMap.set(value, key)\n } else {\n this.slotAndYTextMap.set(value, key)\n this.yTextAndSlotMap.set(key, value)\n }\n }\n\n get(key: Slot): YText | null\n get(key: YText): Slot | null\n get(key: any) {\n if (key instanceof Slot) {\n return this.slotAndYTextMap.get(key) || null\n }\n return this.yTextAndSlotMap.get(key) || null\n }\n\n delete(key: Slot | YText) {\n if (key instanceof Slot) {\n const v = this.slotAndYTextMap.get(key)\n this.slotAndYTextMap.delete(key)\n if (v) {\n this.yTextAndSlotMap.delete(v)\n }\n } else {\n const v = this.yTextAndSlotMap.get(key)\n this.yTextAndSlotMap.delete(key)\n if (v) {\n this.slotAndYTextMap.delete(v)\n }\n }\n }\n}\n\ninterface Update {\n record: boolean\n actions: Array<() => void>\n}\n\ninterface UpdateItem {\n record: boolean\n\n action(): void\n}\n\nexport interface SubModelLoaded {\n yType: AbstractType<any>\n yDoc: YDoc\n}\n\n@Injectable()\nexport class Collaborate {\n yDoc = new YDoc()\n slotMap = new SlotMap()\n onAddSubModel: Observable<SubModelLoaded>\n\n private subscriptions: Subscription[] = []\n private updateFromRemote = false\n private addSubModelEvent = new Subject<SubModelLoaded>()\n\n private updateRemoteActions = new WeakMap<YDoc, UpdateItem[]>()\n private noRecord = {}\n\n constructor(private scheduler: Scheduler,\n private registry: Registry,\n private selection: Selection,\n private subModelLoader: SubModelLoader) {\n this.onAddSubModel = this.addSubModelEvent.asObservable()\n }\n\n syncRootComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n this.initSyncEvent(yDoc)\n this.syncComponent(yDoc, sharedComponent, localComponent)\n }\n\n syncRootSlot(yDoc: YDoc, sharedSlot: YText, localSlot: Slot) {\n if (sharedSlot.length) {\n localSlot.retain(0)\n localSlot.delete(localSlot.length)\n localSlot.cleanAttributes()\n localSlot.cleanFormats()\n this.initLocalSlotBySharedSlot(sharedSlot, localSlot)\n } else {\n yDoc.transact(() => {\n this.initSharedSlotByLocalSlot(sharedSlot, localSlot)\n })\n }\n this.initSyncEvent(yDoc)\n this.syncSlot(sharedSlot, localSlot)\n }\n\n getAbstractSelection(position: CursorPosition): AbstractSelection | null {\n const anchorPosition = createAbsolutePositionFromRelativePosition(position.anchor.position, position.anchor.doc)\n const focusPosition = createAbsolutePositionFromRelativePosition(position.focus.position, position.focus.doc)\n if (anchorPosition && focusPosition) {\n const focusSlot = this.slotMap.get(focusPosition.type as YText)\n const anchorSlot = this.slotMap.get(anchorPosition.type as YText)\n if (focusSlot && anchorSlot) {\n return {\n anchorSlot,\n anchorOffset: anchorPosition.index,\n focusSlot,\n focusOffset: focusPosition.index\n }\n }\n }\n return null\n }\n\n getRelativeCursorLocation(): CursorPosition | null {\n const {anchorSlot, anchorOffset, focusSlot, focusOffset} = this.selection\n if (anchorSlot) {\n const anchorYText = this.slotMap.get(anchorSlot)\n if (anchorYText) {\n const anchorPosition = createRelativePositionFromTypeIndex(anchorYText, anchorOffset!)\n if (focusSlot) {\n const focusYText = this.slotMap.get(focusSlot)\n if (focusYText) {\n const focusPosition = createRelativePositionFromTypeIndex(focusYText, focusOffset!)\n return {\n focus: {\n doc: focusYText.doc!,\n position: focusPosition\n },\n anchor: {\n doc: anchorYText.doc!,\n position: anchorPosition\n }\n }\n }\n }\n }\n }\n return null\n }\n\n restoreCursorPosition(position: CursorPosition | null) {\n if (!position) {\n this.selection.unSelect()\n return\n }\n const selection = this.getAbstractSelection(position)\n if (selection) {\n this.selection.setBaseAndExtent(\n selection.anchorSlot,\n selection.anchorOffset,\n selection.focusSlot,\n selection.focusOffset)\n }\n }\n\n private initSyncEvent(yDoc: YDoc) {\n this.subscriptions.push(\n this.scheduler.onDocChanged.pipe(\n map(item => {\n return item.filter(i => {\n return i.from !== ChangeOrigin.Remote\n })\n }),\n filter(item => {\n return item.length\n })\n ).subscribe(() => {\n const updates: Update[] = []\n\n let update: Update | null = null\n\n const updateRemoteActions = this.updateRemoteActions.get(yDoc) || []\n\n for (const item of updateRemoteActions) {\n if (!update) {\n update = {\n record: item.record,\n actions: []\n }\n updates.push(update)\n }\n if (update.record === item.record) {\n update.actions.push(item.action)\n } else {\n update = {\n record: item.record,\n actions: [item.action]\n }\n updates.push(update)\n }\n }\n\n this.updateRemoteActions.delete(yDoc)\n\n for (const item of updates) {\n yDoc.transact(() => {\n item.actions.forEach(fn => {\n fn()\n })\n }, item.record ? yDoc : this.noRecord)\n }\n })\n )\n }\n\n private syncComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n let state = sharedComponent.get('state') as YMap<any>\n if (!state) {\n state = new YMap<any>()\n this.syncLocalMapToSharedMap(localComponent.state as ProxyModel<Record<string, any>>, state)\n yDoc.transact(() => {\n sharedComponent.set('state', state)\n })\n } else {\n Object.keys(localComponent.state).forEach(key => {\n Reflect.deleteProperty(localComponent.state, key)\n })\n this.syncSharedMapToLocalMap(state, localComponent.state as ProxyModel<Record<string, any>>)\n }\n }\n\n private syncSlot(sharedSlot: YText, localSlot: Slot) {\n const syncRemote = (ev: YTextEvent, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n localSlot.retain(0)\n ev.keysChanged.forEach(key => {\n const change = ev.keys.get(key)\n if (!change) {\n return\n }\n const updateType = change.action\n if (updateType === 'update' || updateType === 'add') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, sharedSlot.getAttribute(key))\n }\n } else if (updateType === 'delete') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.removeAttribute(attribute)\n }\n }\n })\n ev.delta.forEach(action => {\n if (Reflect.has(action, 'retain')) {\n if (action.attributes) {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n if (formats.length) {\n localSlot.retain(action.retain!, formats)\n }\n }\n localSlot.retain(localSlot.index + action.retain!)\n } else if (action.insert) {\n const index = localSlot.index\n let length = 1\n if (typeof action.insert === 'string') {\n length = action.insert.length\n localSlot.insert(action.insert, remoteFormatsToLocal(this.registry, action.attributes))\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component)\n }\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! > index) {\n this.selection.setAnchor(localSlot, this.selection.anchorOffset! + length)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! > index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! + length)\n }\n }\n } else if (action.delete) {\n const index = localSlot.index\n localSlot.delete(action.delete)\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! >= index) {\n this.selection.setAnchor(localSlot, this.selection.startOffset! - action.delete)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! >= index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! - action.delete)\n }\n }\n }\n })\n })\n }\n sharedSlot.observe(syncRemote)\n\n const sub = localSlot.onContentChange.subscribe(actions => {\n this.runLocalUpdate(sharedSlot.doc, true, () => {\n let offset = 0\n let length = 0\n for (const action of actions) {\n if (action.type === 'retain') {\n const formats = action.formats\n if (formats) {\n const keys = Object.keys(formats)\n let length = keys.length\n keys.forEach(key => {\n const formatter = this.registry.getFormatter(key)\n if (!formatter) {\n length--\n Reflect.deleteProperty(formats, key)\n }\n })\n if (length) {\n sharedSlot.format(offset, action.offset, formats)\n }\n } else {\n offset = action.offset\n }\n } else if (action.type === 'contentInsert') {\n const delta = sharedSlot.toDelta()\n const isEmpty = delta.length === 1 && delta[0].insert === Slot.emptyPlaceholder\n if (typeof action.content === 'string') {\n length = action.content.length\n sharedSlot.insert(offset, action.content, action.formats || {})\n } else {\n length = 1\n const sharedComponent = this.createSharedComponentByLocalComponent(action.ref as Component)\n sharedSlot.insertEmbed(offset, sharedComponent, action.formats || {})\n }\n\n if (isEmpty && offset === 0) {\n sharedSlot.delete(sharedSlot.length - 1, 1)\n }\n offset += length\n } else if (action.type === 'delete') {\n const delta = sharedSlot.toDelta()\n if (sharedSlot.length) {\n sharedSlot.delete(offset, action.count)\n }\n if (sharedSlot.length === 0) {\n sharedSlot.insert(0, '\\n', delta[0]?.attributes)\n }\n } else if (action.type === 'attrSet') {\n sharedSlot.setAttribute(action.name, action.value)\n } else if (action.type === 'attrDelete') {\n sharedSlot.removeAttribute(action.name)\n }\n }\n })\n })\n\n this.slotMap.set(localSlot, sharedSlot)\n\n localSlot.__changeMarker__.addDetachCallback(() => {\n this.slotMap.delete(localSlot)\n sharedSlot.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n\n destroy() {\n this.subscriptions.forEach(i => i.unsubscribe())\n this.subscriptions = []\n }\n\n private syncSharedMapToLocalMap(sharedMap: YMap<any>, localMap: ProxyModel<Record<string, any>>) {\n sharedMap.forEach((value, key) => {\n localMap[key] = this.createLocalModelBySharedByModel(value)\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createLocalMapBySharedMap(sharedMap: YMap<any>): ProxyModel<Record<string, any>> {\n const localMap = observe({}) as ProxyModel<Record<string, any>>\n this.syncSharedMapToLocalMap(sharedMap, localMap)\n return localMap\n }\n\n private createLocalArrayBySharedArray(sharedArray: YArray<any>): ProxyModel<any[]> {\n const raw: any[] = []\n for (let i = 0; i < sharedArray.length; i++) {\n const item = sharedArray.get(i)\n if (!this.isArrayHoleElement(item)) {\n raw[i] = this.createLocalModelBySharedByModel(item)\n }\n }\n raw.length = sharedArray.length\n const localArray = observe(raw) as ProxyModel<any[]>\n this.syncArray(sharedArray, localArray)\n return localArray\n }\n\n private syncLocalMapToSharedMap(localMap: ProxyModel<Record<string, any>>, sharedMap: YMap<any>) {\n Object.entries(localMap).forEach(([key, value]) => {\n sharedMap.set(key, this.createSharedModelByLocalModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createSharedMapByLocalMap(localMap: ProxyModel<Record<string, any>>): YMap<any> {\n const sharedMap = new YMap<any>()\n this.syncLocalMapToSharedMap(localMap, sharedMap)\n return sharedMap\n }\n\n private createSharedArrayByLocalArray(localArray: ProxyModel<any[]>): YArray<any> {\n const sharedArray = new YArray<any>()\n for (let i = 0; i < localArray.length; i++) {\n if (i in localArray) {\n sharedArray.push([this.sharedModelForArraySlot(localArray[i])])\n } else {\n sharedArray.push([this.createArrayHoleXmlElement()])\n }\n }\n this.syncArray(sharedArray, localArray)\n return sharedArray\n }\n\n private createSharedSlotByLocalSlot(localSlot: Slot): YText {\n const sharedSlot = new YText()\n const isAsyncSlot = localSlot instanceof AsyncSlot\n sharedSlot.setAttribute('schema', [...localSlot.schema])\n sharedSlot.setAttribute('type', isAsyncSlot ? 'async' : 'sync')\n\n if (isAsyncSlot) {\n let isDestroyed = false\n const sharedMetadata = this.createSharedMapByLocalMap(localSlot.metadata)\n sharedSlot.setAttribute('metadata', sharedMetadata)\n this.subModelLoader.createSubModelBySlot(localSlot).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const content = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncLocalMapToSharedMap(localSlot.state, state)\n this.initSharedSlotByLocalSlot(content, localSlot)\n this.syncSlot(content, localSlot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: content\n })\n this.initSyncEvent(subDocument)\n localSlot.loader.markAsLoaded()\n })\n localSlot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return sharedSlot\n }\n\n const sharedSlotState = new YMap()\n this.syncLocalMapToSharedMap(localSlot.state as ProxyModel<Record<string, any>>, sharedSlotState)\n sharedSlot.setAttribute('state', sharedSlotState)\n\n const sharedContent = new YText()\n this.initSharedSlotByLocalSlot(sharedContent, localSlot)\n sharedSlot.insertEmbed(0, sharedContent)\n this.syncSlot(sharedContent, localSlot)\n return sharedSlot\n }\n\n private initSharedSlotByLocalSlot(sharedContent: YText, localSlot: Slot) {\n let offset = 0\n localSlot.toDelta().forEach(i => {\n let formats: any = {}\n if (i.formats) {\n i.formats.forEach(item => {\n formats[item[0].name] = item[1]\n })\n } else {\n formats = null\n }\n if (typeof i.insert === 'string') {\n sharedContent.insert(offset, i.insert, formats)\n } else {\n const sharedComponent = this.createSharedComponentByLocalComponent(i.insert)\n sharedContent.insertEmbed(offset, sharedComponent, formats)\n }\n offset += i.insert.length\n })\n localSlot.getAttributes().forEach(item => {\n sharedContent.setAttribute(item[0].name, item[1])\n })\n }\n\n private createLocalSlotBySharedSlot(sharedSlot: YText): Slot {\n const type = sharedSlot.getAttribute('type')\n const schema = sharedSlot.getAttribute('schema')\n\n if (type === 'async') {\n const metadata = sharedSlot.getAttribute('metadata') as YMap<any>\n const slot = new AsyncSlot(schema || [], {}, {})\n this.syncSharedMapToLocalMap(metadata, slot.metadata as ProxyModel<Record<string, any>>)\n const loadedSubDocument = this.subModelLoader.getLoadedModelBySlot(slot)\n if (loadedSubDocument) {\n const subContent = loadedSubDocument.getText('content')\n const data = loadedSubDocument.getMap('state')\n this.syncSharedMapToLocalMap(data, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(loadedSubDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: loadedSubDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n return slot\n }\n let isDestroyed = false\n slot.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelBySlot(slot)\n }).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const subContent = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncSharedMapToLocalMap(state, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(subDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n })\n slot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return slot\n }\n\n const contentDelta = sharedSlot.toDelta()\n const content = contentDelta[0]?.insert\n\n if (!(content instanceof YText)) {\n throw collaborateErrorFn('shared slot content type is not `YText`.')\n }\n\n const localSlot = new Slot(schema || [], {})\n\n const sharedSlotState = sharedSlot.getAttribute('state')\n this.syncSharedMapToLocalMap(sharedSlotState, localSlot.state as ProxyModel<Record<string, any>>)\n\n this.initLocalSlotBySharedSlot(content, localSlot)\n\n this.syncSlot(content, localSlot)\n return localSlot\n }\n\n private initLocalSlotBySharedSlot(content: YText, localSlot: Slot) {\n const delta = content.toDelta()\n\n const attrs = content.getAttributes()\n Object.keys(attrs).forEach(key => {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, attrs[key])\n }\n })\n for (const action of delta) {\n if (action.insert) {\n if (typeof action.insert === 'string') {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n localSlot.insert(action.insert, formats)\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component, remoteFormatsToLocal(this.registry, action.attributes))\n }\n } else {\n throw collaborateErrorFn('unexpected delta action.')\n }\n }\n }\n\n private createSharedModelByLocalModel(localModel: any) {\n if (localModel instanceof Slot) {\n return this.createSharedSlotByLocalSlot(localModel)\n }\n if (Array.isArray(localModel)) {\n return this.createSharedArrayByLocalArray(localModel as ProxyModel<any[]>)\n }\n if (typeof localModel === 'object' && localModel !== null) {\n return this.createSharedMapByLocalMap(localModel)\n }\n return localModel\n }\n\n private createLocalModelBySharedByModel(sharedModel: any) {\n if (sharedModel instanceof YMap) {\n return this.createLocalMapBySharedMap(sharedModel)\n }\n if (sharedModel instanceof YArray) {\n return this.createLocalArrayBySharedArray(sharedModel)\n }\n if (sharedModel instanceof YText) {\n return this.createLocalSlotBySharedSlot(sharedModel)\n }\n return sharedModel\n }\n\n\n private createSharedComponentByLocalComponent(component: Component | AsyncComponent): YMap<any> {\n const sharedComponent = new YMap()\n sharedComponent.set('name', component.name)\n\n if (component instanceof AsyncComponent) {\n sharedComponent.set('type', 'async')\n const sharedMetadata = this.createSharedMapByLocalMap(component.metadata)\n sharedComponent.set('metadata', sharedMetadata)\n const state = component.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n this.subModelLoader.createSubModelByComponent(component).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, component)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n this.initSyncEvent(subDocument)\n component.loader.markAsLoaded()\n })\n return sharedComponent\n }\n\n const sharedState = this.createSharedMapByLocalMap(component.state as ProxyModel<Record<string, any>>)\n sharedComponent.set('state', sharedState)\n sharedComponent.set('type', 'sync')\n return sharedComponent\n }\n\n private createLocalComponentBySharedComponent(yMap: YMap<any>): Component {\n const componentName = yMap.get('name') as string\n const type = yMap.get('type') as string\n\n let instance: Component<any> | null\n if (type === 'async') {\n instance = this.registry.createComponentByData(componentName, {}, {})\n if (instance instanceof AsyncComponent) {\n const sharedMetadata = yMap.get('metadata') as YMap<any>\n this.syncSharedMapToLocalMap(sharedMetadata, instance.metadata)\n const loadedSubDocument = this.subModelLoader.getLoadedModelByComponent(instance)\n if (loadedSubDocument) {\n const state = loadedSubDocument.getMap('state')\n this.syncComponent(loadedSubDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: loadedSubDocument\n })\n instance.loader.markAsLoaded()\n return instance\n }\n\n const state = instance.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n instance.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelByComponent(instance as AsyncComponent)\n })\n .then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n ;(instance as AsyncComponent).loader.markAsLoaded()\n })\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n } else if (instance instanceof Component) {\n throw collaborateErrorFn(`component name \\`${componentName}\\` is not a async component.`)\n }\n } else {\n const sharedState = yMap.get('state') as YMap<any>\n const state = this.createLocalMapBySharedMap(sharedState)\n instance = this.registry.createComponentByData(componentName, state)\n }\n if (instance) {\n return instance\n }\n\n throw collaborateErrorFn(`cannot find component factory \\`${componentName}\\`.`)\n }\n\n private createArrayHoleXmlElement() {\n return new XmlElement(ARRAY_HOLE_ELEMENT_NODE)\n }\n\n private isArrayHoleElement(sharedModel: any): boolean {\n return sharedModel instanceof XmlElement && sharedModel.nodeName === ARRAY_HOLE_ELEMENT_NODE\n }\n\n /**\n * 仅用于 YArray ↔ 可观察数组:本地 `undefined` 槽位用 XmlElement 占位同步到 Yjs(不与对象字面量同步混用)。\n */\n private sharedModelForArraySlot(localItem: any) {\n if (localItem === undefined) {\n return this.createArrayHoleXmlElement()\n }\n return this.createSharedModelByLocalModel(localItem)\n }\n\n /**\n * 在可观察数组中插入稀疏空洞(与 YArray 中 XmlElement 占位对齐)。\n * 仅在远端同步路径调用;先改 raw,再用与 {@link ArrayProxyHandler} `length` 增长一致的原子命令\n * `retain` + `insert`(`undefined` 槽)记录,`unApply` 为 `retain` + `delete`。\n * `runLocalUpdate` 在 `updateFromRemote` 为 true 时会跳过,不会把洞再写回 Y。\n */\n private insertSparseHole(localArray: ProxyModel<any[]>, atIndex: number) {\n const raw = toRaw(localArray) as any[]\n const oldLen = raw.length\n this.applySparseHoleToRaw(raw, atIndex)\n const holeCount = atIndex >= oldLen ? atIndex + 1 - oldLen : 1\n const newTail: any[] = []\n if (atIndex >= oldLen) {\n for (let i = oldLen; i < oldLen + holeCount; i++) {\n newTail.push((raw as any)[i])\n }\n } else {\n newTail.push(undefined)\n }\n const changeMarker = localArray.__changeMarker__\n changeMarker.beforeChange()\n const parentModel = getObserver(raw)!\n const subModels = newTail.map(item => {\n const m = observe(item)\n attachModel(parentModel, m)\n return m\n })\n const retainOffset = atIndex >= oldLen ? oldLen : atIndex\n changeMarker.markAsDirtied({\n paths: [],\n apply: [\n { type: 'retain', offset: retainOffset },\n { type: 'insert', data: valueToJSON(newTail), ref: subModels }\n ],\n unApply: [\n { type: 'retain', offset: retainOffset },\n { type: 'delete', count: holeCount }\n ]\n })\n }\n\n /** 与 Y 洞位对齐的稀疏洞写入,仅操作 raw */\n private applySparseHoleToRaw(raw: any[], atIndex: number) {\n const len = raw.length\n if (atIndex >= len) {\n raw.length = atIndex + 1\n return\n }\n for (let i = len; i > atIndex; i--) {\n if ((i - 1) in raw) {\n raw[i] = raw[i - 1]\n } else {\n delete raw[i]\n }\n }\n delete raw[atIndex]\n }\n\n /**\n * 双向同步数组\n * @param sharedArray\n * @param localArray\n * @private\n */\n private syncArray(sharedArray: YArray<any>, localArray: ProxyModel<any[]>) {\n function logError(type: string) {\n console.error(collaborateErrorFn(`${type} error, length exceeded, path in ${localArray.__changeMarker__.getPaths().join('/')}`))\n }\n\n const sub = localArray.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedArray.doc, !localArray.__changeMarker__.irrevocableUpdate, () => {\n let index = 0\n for (const action of actions) {\n switch (action.type) {\n case 'retain':\n index = action.offset\n break\n case 'insert': {\n const ref = action.ref\n if (!Array.isArray(ref)) {\n throw collaborateErrorFn('The insertion action must have a reference value.')\n }\n const data = ref.map(item => {\n return this.sharedModelForArraySlot(item)\n })\n if (index <= sharedArray.length) {\n sharedArray.insert(index, data)\n } else {\n sharedArray.insert(sharedArray.length, data)\n logError('insert')\n }\n }\n break\n case 'delete':\n if (action.count <= 0) {\n break\n }\n if (index < sharedArray.length) {\n sharedArray.delete(index, action.count)\n } else {\n logError('delete')\n }\n break\n case 'setIndex':\n if (action.index < sharedArray.length) {\n sharedArray.delete(action.index, 1)\n sharedArray.insert(action.index, [this.sharedModelForArraySlot(action.ref)])\n } else {\n sharedArray.insert(sharedArray.length, [this.sharedModelForArraySlot(action.ref)])\n logError('setIndex')\n }\n break\n }\n }\n })\n })\n\n const syncRemote = (ev: YArrayEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n let index = 0\n ev.delta.forEach((action) => {\n if (Reflect.has(action, 'retain')) {\n index += action.retain as number\n } else if (action.insert) {\n let at = index\n for (const item of action.insert as Array<any>) {\n if (this.isArrayHoleElement(item)) {\n this.insertSparseHole(localArray, at)\n } else {\n localArray.splice(at, 0, this.createLocalModelBySharedByModel(item))\n }\n at++\n }\n index = at\n } else if (action.delete) {\n localArray.splice(index, action.delete)\n }\n })\n })\n }\n\n sharedArray.observe(syncRemote)\n localArray.__changeMarker__.addDetachCallback(() => {\n sub.unsubscribe()\n sharedArray.unobserve(syncRemote)\n })\n }\n\n /**\n * 双向同步对象\n * @param sharedObject\n * @param localObject\n * @private\n */\n private syncObject(sharedObject: YMap<any>, localObject: ProxyModel<Record<string, any>>) {\n const syncRemote = (ev: YMapEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n ev.changes.keys.forEach((item, key) => {\n if (item.action === 'add' || item.action === 'update') {\n const value = sharedObject.get(key)\n localObject[key] = this.createLocalModelBySharedByModel(value)\n } else {\n Reflect.deleteProperty(localObject, key)\n }\n })\n })\n }\n\n sharedObject.observe(syncRemote)\n\n const sub = localObject.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedObject.doc, !localObject.__changeMarker__.irrevocableUpdate, () => {\n for (const action of actions) {\n switch (action.type) {\n case 'propSet': {\n const subModel = this.createSharedModelByLocalModel(action.ref)\n sharedObject.set(action.key, subModel)\n if (sharedObject.size === 0) {\n // 奇怪的 bug,设置了子模型,但子模型会标记为 deleted,导致设置后无效\n console.error(collaborateErrorFn(`prop set error, key is ${action.key}`))\n }\n }\n break\n case 'propDelete':\n sharedObject.delete(action.key)\n break\n }\n }\n })\n })\n\n localObject.__changeMarker__.addDetachCallback(function () {\n sharedObject.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n private runLocalUpdate(yDoc: YDoc | null, record: boolean, fn: () => void) {\n if (this.updateFromRemote || !yDoc) {\n return\n }\n let changeList = this.updateRemoteActions.get(yDoc)\n if (!changeList) {\n changeList = []\n this.updateRemoteActions.set(yDoc, changeList)\n }\n changeList.push({\n record,\n action: fn\n })\n }\n\n private runRemoteUpdate(tr: Transaction, fn: () => void) {\n if (tr.origin === tr.doc) {\n return\n }\n this.updateFromRemote = true\n if (tr.origin instanceof UndoManager) {\n this.scheduler.historyApplyTransact(fn)\n } else {\n this.scheduler.remoteUpdateTransact(fn)\n }\n this.updateFromRemote = false\n }\n}\n\nfunction remoteFormatsToLocal(registry: Registry, attrs?: any,) {\n const formats: Formats = []\n if (attrs) {\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (formatter) {\n formats.push([formatter, attrs[key]])\n }\n })\n }\n return formats\n}\n","import { Inject, Injectable, Optional } from '@viewfly/core'\nimport { History, HISTORY_STACK_SIZE, makeError, RootComponentRef, Scheduler } from '@textbus/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n Item,\n Transaction,\n UndoManager\n} from 'yjs'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\n\nexport abstract class CustomUndoManagerConfig {\n abstract captureTimeout?: number\n\n abstract captureTransaction?(arg0: Transaction): boolean\n\n abstract deleteFilter?(arg0: Item): boolean\n}\n\nconst collabHistoryErrorFn = makeError('CollabHistory')\n\n@Injectable()\nexport class CollabHistory implements History {\n onBack: Observable<void>\n onForward: Observable<void>\n onChange: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.manager?.canUndo() || false\n }\n\n get canForward() {\n return this.manager?.canRedo() || false\n }\n\n private manager: UndoManager | null = null\n\n private historyItems: Array<CollaborateHistorySelectionPosition> = []\n private index = 0\n private subscriptions: Subscription[] = []\n\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private changeEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n\n constructor(private rootComponentRef: RootComponentRef,\n private collaborate: Collaborate,\n private scheduler: Scheduler,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onChange = this.changeEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n\n }\n\n listen() {\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n const undoManagerConfig = this.undoManagerConfig || {}\n const manager = new UndoManager(root, {\n captureTimeout: typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500,\n trackedOrigins: new Set<any>([this.collaborate.yDoc]),\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n this.manager = manager\n\n let beforePosition: CursorPosition | null = null\n this.subscriptions.push(\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n beforePosition = this.collaborate.getRelativeCursorLocation()\n }),\n this.collaborate.onAddSubModel.subscribe(() => {\n throw collabHistoryErrorFn('single document does not support submodels.')\n })\n )\n\n manager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo') {\n if (event.origin === manager) {\n this.index++\n } else {\n this.historyItems.length = this.index\n this.historyItems.push({\n before: beforePosition,\n after: this.collaborate.getRelativeCursorLocation()\n })\n this.index++\n }\n } else {\n this.index--\n }\n if (manager.undoStack.length > this.stackSize) {\n this.historyItems.shift()\n manager.undoStack.shift()\n }\n if (event.origin === this.collaborate.yDoc) {\n this.pushEvent.next()\n }\n this.changeEvent.next()\n })\n manager.on('stack-item-popped', (ev: any) => {\n const index = ev.type === 'undo' ? this.index : this.index - 1\n const position = this.historyItems[index] || null\n const p = ev.type === 'undo' ? position?.before : position?.after\n this.collaborate.restoreCursorPosition(p)\n })\n }\n\n\n back() {\n if (this.canBack) {\n this.manager?.undo()\n this.backEvent.next()\n }\n }\n\n forward() {\n if (this.canForward) {\n this.manager?.redo()\n this.forwardEvent.next()\n }\n }\n\n clear() {\n const last = this.historyItems.pop()\n this.historyItems = last ? [last] : []\n this.index = last ? 1 : 0\n this.manager?.clear()\n this.changeEvent.next()\n }\n\n destroy() {\n this.index = 0\n this.historyItems = []\n this.subscriptions.forEach(i => i.unsubscribe())\n if (this.manager) {\n this.manager.destroy()\n this.manager.captureTransaction = () => true\n this.manager.deleteFilter = () => true\n this.manager.trackedOrigins = new Set([null])\n }\n\n this.manager = null\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\nimport { Textbus } from '@textbus/core'\n\nexport interface Message<T> {\n clientId: number\n message: T\n}\n\n/**\n * 协作消息总线,用于同步各终端消息\n */\nexport abstract class MessageBus<T> {\n onSync: Observable<void>\n protected syncEvent = new Subject<void>()\n\n constructor() {\n this.onSync = this.syncEvent.asObservable()\n }\n\n /**\n * 立即同步消息\n */\n sync() {\n this.syncEvent.next()\n }\n\n /**\n * 当需要同步协作消息是,Textbus 会自动调用,并把返回数据同步到其它终端\n */\n abstract get(textbus: Textbus): T\n\n /**\n * 当远程消息更新时,Textbus 会自动调用\n * @param message\n * @param textbus\n */\n abstract consume(message: Message<T>[], textbus: Textbus): void\n}\n","import { AbstractType, Item, UndoManager, Doc as YDoc } from 'yjs'\nimport { Inject, Injectable, Optional } from '@viewfly/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport { History, HISTORY_STACK_SIZE, RootComponentRef, Scheduler } from '@textbus/core'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\nimport { CustomUndoManagerConfig } from './collab-history'\n\ninterface HistoryStackItem extends CollaborateHistorySelectionPosition {\n undoManagers: UndoManager[]\n}\n\n@Injectable()\nexport class MultipleDocCollabHistory implements History {\n onChange: Observable<void>\n onBack: Observable<void>\n onForward: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.actionStack.length > 0 && this.index > 0\n }\n\n get canForward() {\n return this.actionStack.length > 0 && this.index < this.actionStack.length\n }\n\n isListen = false\n\n private changeEvent = new Subject<void>()\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n private actionStack: HistoryStackItem[] = []\n\n private index = 0\n\n private stackItem: HistoryStackItem | null = null\n private timer: any = null\n private beforePosition: CursorPosition | null = null\n\n private subscription = new Subscription()\n\n private subDocs = new Set<AbstractType<any>>()\n\n private listenerCaches = new Set<UndoManager>()\n\n constructor(private collaborate: Collaborate,\n private scheduler: Scheduler,\n private rootComponentRef: RootComponentRef,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onChange = this.changeEvent.asObservable()\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n }\n\n listen() {\n this.isListen = true\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n this.listenItem(root, this.collaborate.yDoc)\n\n this.subscription.add(\n this.collaborate.onAddSubModel.subscribe(({yType, yDoc}) => {\n if (this.subDocs.has(yType)) {\n return\n }\n this.subDocs.add(yType)\n if (this.isListen) {\n this.listenItem(yType, yDoc)\n }\n }),\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n this.beforePosition = this.collaborate.getRelativeCursorLocation()\n })\n )\n }\n\n forward() {\n if (!this.canForward) {\n return\n }\n clearTimeout(this.timer as any)\n const item = this.actionStack[this.index]\n if (item) {\n for (const i of item.undoManagers) {\n i.redo()\n }\n this.collaborate.restoreCursorPosition(item.after)\n }\n this.index++\n this.forwardEvent.next()\n this.changeEvent.next()\n }\n\n back() {\n if (!this.canBack) {\n return\n }\n clearTimeout(this.timer as any)\n let historyStackItem: HistoryStackItem\n if (this.stackItem) {\n historyStackItem = this.stackItem\n this.stackItem = null\n } else {\n this.index--\n historyStackItem = this.actionStack[this.index]\n }\n let len = historyStackItem.undoManagers.length\n while (len > 0) {\n len--\n historyStackItem.undoManagers[len].undo()\n }\n if (historyStackItem) {\n const beforePosition = historyStackItem.before\n this.collaborate.restoreCursorPosition(beforePosition)\n this.backEvent.next()\n this.changeEvent.next()\n }\n }\n\n clear() {\n this.actionStack = []\n this.stackItem = null\n this.index = 0\n this.beforePosition = null\n clearTimeout(this.timer as any)\n this.listenerCaches.forEach((undoManager) => {\n undoManager.clear()\n })\n this.changeEvent.next()\n }\n\n destroy() {\n this.clear()\n this.beforePosition = this.stackItem = null\n this.subscription.unsubscribe()\n this.listenerCaches.forEach((undoManager) => {\n undoManager.destroy()\n })\n this.subDocs.clear()\n this.listenerCaches.clear()\n }\n\n private listenItem(yType: AbstractType<any>, yDoc: YDoc) {\n const undoManagerConfig = this.undoManagerConfig || {}\n const undoManager = new UndoManager(yType, {\n trackedOrigins: new Set([yDoc]),\n captureTimeout: 0,\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n\n undoManager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo' && !(event.origin instanceof UndoManager)) {\n if (this.index != this.actionStack.length) {\n const redoStack = this.actionStack.slice(this.index)\n redoStack.forEach(item => {\n item.undoManagers.forEach(i => {\n i.clear(false, true)\n })\n })\n this.actionStack.length = this.index\n this.changeEvent.next()\n }\n if (this.stackItem === null) {\n this.stackItem = {\n before: this.beforePosition,\n after: null,\n undoManagers: []\n }\n this.timer = setTimeout(() => {\n if (this.actionStack.length >= this.stackSize) {\n this.actionStack.shift()\n } else {\n this.index++\n }\n // this.beforePosition = this.collaborate.getRelativeCursorLocation()\n this.stackItem!.after = this.beforePosition\n this.actionStack.push(this.stackItem!)\n this.stackItem = null\n this.pushEvent.next()\n this.changeEvent.next()\n }, typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500)\n }\n\n this.stackItem.undoManagers.push(undoManager)\n }\n })\n\n this.listenerCaches.add(undoManager)\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\n\n/**\n * 协作通信通用接口\n */\nexport abstract class SyncConnector {\n /**\n * 当文档加载完成时触发的观察者\n */\n onLoad: Observable<void>\n /**\n * 当文档 awareness 状态变更时触发的观察者\n */\n onStateChange: Observable<any[]>\n\n protected loadEvent = new Subject<void>()\n protected stateChangeEvent = new Subject<any[]>()\n\n protected constructor() {\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n }\n\n /**\n * 设置 awareness 状态\n * @param key 状态的 key\n * @param data 状态值\n */\n abstract setLocalStateField(key: string, data: Record<string, any>): void\n\n /**\n * 当文档销毁时调用\n */\n abstract onDestroy(): void\n}\n","import { HocuspocusProvider } from '@hocuspocus/provider'\nimport { HocuspocusProviderConfiguration } from '@hocuspocus/provider'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class HocuspocusConnector extends SyncConnector {\n provide: HocuspocusProvider\n\n constructor(config: HocuspocusProviderConfiguration) {\n super()\n this.provide = new HocuspocusProvider({\n ...config,\n onSynced: (data) => {\n config.onSynced?.(data)\n this.loadEvent.next()\n },\n onAwarenessUpdate: (data) => {\n config.onAwarenessUpdate?.(data)\n const states: Message<any>[] = data.states.map(state => {\n return {\n clientId: state.clientId,\n message: state.message as any\n }\n })\n this.stateChangeEvent.next(states)\n },\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.setAwarenessField(key, data)\n }\n\n onDestroy() {\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { Doc as YDoc } from 'yjs'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport interface LocalConnectorOptions {\n /**\n * 与其它连接器一致,会出现在 `onStateChange` 的 `clientId` 中。\n * 多实例场景可传入不同值以模拟多客户端。\n */\n clientId?: number\n}\n\n/**\n * 不经网络的协作连接器,实现与 {@link SyncConnector} 相同的对外行为,\n * 便于在单元测试中配合 {@link CollaborateModule} 使用,无需 WebSocket / Provider。\n *\n * - `onLoad`:在微任务中触发一次,对应远端「已同步可编辑」的时机。\n * - `onStateChange`:在每次 {@link LocalConnector.setLocalStateField} 后发出当前客户端状态,\n * 载荷形状与 `YWebsocketConnector` 一致(`{ clientId, message }`,其中 `message` 为 awareness 上的 `message` 字段)。\n *\n * 第一个参数与 `createConnector(yDoc)` 对齐,便于直接传入 `Collaborate` 的文档;当前实现不读写该 `YDoc`。\n */\nexport class LocalConnector extends SyncConnector {\n readonly clientId: number\n\n private destroyed = false\n private fields: Record<string, any> = {}\n\n constructor(_yDoc?: YDoc, options?: LocalConnectorOptions) {\n super()\n this.clientId = options?.clientId ?? 0\n Promise.resolve().then(() => {\n if (!this.destroyed) {\n this.loadEvent.next()\n }\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n if (this.destroyed) {\n return\n }\n this.fields[key] = data\n this.emitAwarenessStates()\n }\n\n onDestroy() {\n this.destroyed = true\n }\n\n /**\n * 读取当前本地 awareness 字段快照,仅用于测试断言。\n */\n getLocalAwarenessSnapshot(): Readonly<Record<string, any>> {\n return { ...this.fields }\n }\n\n private emitAwarenessStates() {\n const states: Message<any>[] = []\n states.push({\n clientId: this.clientId,\n message: this.fields.message\n })\n this.stateChangeEvent.next(states)\n }\n}\n","import { Doc as YDoc } from 'yjs'\nimport { WebsocketProvider } from 'y-websocket'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class YWebsocketConnector extends SyncConnector {\n provide: WebsocketProvider\n\n private onSync = (is: boolean) => {\n if (is) {\n this.loadEvent.next()\n }\n }\n\n private onUpdate = () => {\n const syncStates: Message<any>[] = []\n this.provide.awareness.getStates().forEach((state, id) => {\n syncStates.push({\n clientId: id,\n message: state.message,\n })\n })\n this.stateChangeEvent.next(syncStates)\n }\n\n constructor(url: string, roomName: string, yDoc: YDoc) {\n super()\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n this.provide = new WebsocketProvider(url, roomName, yDoc)\n\n this.provide.once('sync', this.onSync)\n this.provide.awareness.on('update', this.onUpdate)\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.awareness.setLocalStateField(key, data)\n }\n\n onDestroy() {\n this.provide.awareness.off('update', this.onUpdate)\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Subscription } from '@tanbo/stream'\nimport { Provider } from '@viewfly/core'\nimport { Doc as YDoc } from 'yjs'\n\nimport { CollabHistory, Collaborate, MessageBus, NonSubModelLoader, SubModelLoader, SyncConnector } from './base/_api'\n\nexport interface CollaborateConfig {\n createConnector(yDoc: YDoc): SyncConnector\n\n onlyLoad?: boolean\n}\n\nexport class CollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n CollabHistory,\n {\n provide: History,\n useExisting: CollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useClass: NonSubModelLoader\n }\n ]\n\n private timer: any = null\n\n constructor(public config: CollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Provider } from '@viewfly/core'\nimport { Subscription } from '@tanbo/stream'\n\nimport { Collaborate, SyncConnector, MultipleDocCollabHistory, SubModelLoader, MessageBus } from './base/_api'\nimport { CollaborateConfig } from './collaborate-module'\n\nexport interface MultipleDocCollaborateConfig extends CollaborateConfig {\n subModelLoader: SubModelLoader\n}\n\nexport class MultipleDocumentCollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n MultipleDocCollabHistory,\n {\n provide: History,\n useExisting: MultipleDocCollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useFactory: () => {\n return this.config.subModelLoader\n }\n }\n ]\n\n private timer: any = null\n\n constructor(public config: MultipleDocCollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n"],"names":["subModelLoaderErrorFn","makeError","SubModelLoader","NonSubModelLoader","_call_super","createSubModelBySlot","createSubModelByComponent","loadSubModelByComponent","loadSubModelBySlot","getLoadedModelBySlot","getLoadedModelByComponent","ARRAY_HOLE_ELEMENT_NODE","collaborateErrorFn","SlotMap","_define_property","slotAndYTextMap","WeakMap","yTextAndSlotMap","set","key","value","_instanceof","Slot","get","delete","v","Collaborate","scheduler","subModelLoader","yDoc","slotMap","onAddSubModel","subscriptions","updateFromRemote","addSubModelEvent","updateRemoteActions","noRecord","registry","selection","YDoc","Subject","asObservable","syncRootComponent","sharedComponent","localComponent","initSyncEvent","syncComponent","syncRootSlot","sharedSlot","localSlot","length","retain","cleanAttributes","cleanFormats","initLocalSlotBySharedSlot","transact","initSharedSlotByLocalSlot","syncSlot","getAbstractSelection","position","anchorPosition","createAbsolutePositionFromRelativePosition","anchor","doc","focusPosition","focus","focusSlot","type","anchorSlot","anchorOffset","index","focusOffset","getRelativeCursorLocation","anchorYText","createRelativePositionFromTypeIndex","focusYText","restoreCursorPosition","unSelect","setBaseAndExtent","push","onDocChanged","pipe","map","item","filter","i","from","ChangeOrigin","Remote","subscribe","updates","update","record","actions","action","forEach","fn","state","YMap","syncLocalMapToSharedMap","Object","keys","Reflect","deleteProperty","syncSharedMapToLocalMap","syncRemote","ev","tr","runRemoteUpdate","keysChanged","change","updateType","attribute","getAttribute","setAttribute","removeAttribute","delta","has","attributes","formats","remoteFormatsToLocal","insert","component","createLocalComponentBySharedComponent","isSelected","origin","UndoManager","setAnchor","setFocus","startOffset","observe","sub","onContentChange","runLocalUpdate","offset","formatter","getFormatter","format","toDelta","isEmpty","emptyPlaceholder","content","createSharedComponentByLocalComponent","ref","insertEmbed","count","name","__changeMarker__","addDetachCallback","unobserve","unsubscribe","destroy","sharedMap","localMap","createLocalModelBySharedByModel","syncObject","createLocalMapBySharedMap","createLocalArrayBySharedArray","sharedArray","raw","isArrayHoleElement","localArray","syncArray","entries","createSharedModelByLocalModel","createSharedMapByLocalMap","createSharedArrayByLocalArray","YArray","sharedModelForArraySlot","createArrayHoleXmlElement","createSharedSlotByLocalSlot","YText","isAsyncSlot","AsyncSlot","schema","isDestroyed","sharedMetadata","metadata","then","subDocument","getText","getMap","next","yType","loader","markAsLoaded","sharedSlotState","sharedContent","getAttributes","createLocalSlotBySharedSlot","contentDelta","slot","loadedSubDocument","subContent","data","onRequestLoad","toPromise","attrs","localModel","Array","isArray","_type_of","sharedModel","AsyncComponent","sharedState","yMap","componentName","instance","createComponentByData","Component","XmlElement","nodeName","localItem","undefined","insertSparseHole","atIndex","toRaw","oldLen","applySparseHoleToRaw","holeCount","newTail","changeMarker","beforeChange","parentModel","getObserver","subModels","m","attachModel","retainOffset","markAsDirtied","paths","apply","valueToJSON","unApply","len","logError","console","error","getPaths","join","onSelfChange","irrevocableUpdate","at","splice","sharedObject","localObject","changes","subModel","size","changeList","historyApplyTransact","remoteUpdateTransact","CustomUndoManagerConfig","collabHistoryErrorFn","CollabHistory","collaborate","stackSize","onBack","onForward","onChange","onPush","manager","historyItems","backEvent","forwardEvent","changeEvent","pushEvent","rootComponentRef","undoManagerConfig","canBack","canUndo","canForward","canRedo","listen","root","rootComponent","captureTimeout","trackedOrigins","Set","captureTransaction","arg","deleteFilter","beforePosition","onLocalChangeBefore","on","event","before","after","undoStack","shift","p","back","undo","forward","redo","clear","last","pop","MessageBus","onSync","syncEvent","sync","MultipleDocCollabHistory","isListen","actionStack","stackItem","timer","subscription","subDocs","listenerCaches","Subscription","listenItem","add","clearTimeout","undoManagers","historyStackItem","undoManager","redoStack","slice","setTimeout","SyncConnector","onLoad","onStateChange","loadEvent","stateChangeEvent","HocuspocusConnector","config","provide","HocuspocusProvider","_object_spread","onSynced","onAwarenessUpdate","states","clientId","message","setLocalStateField","setAwarenessField","onDestroy","disconnect","LocalConnector","_yDoc","options","destroyed","fields","Promise","resolve","emitAwarenessStates","getLocalAwarenessSnapshot","YWebsocketConnector","url","roomName","is","onUpdate","syncStates","awareness","getStates","id","WebsocketProvider","once","off","CollaborateModule","providers","History","useExisting","useFactory","collab","createConnector","deps","useClass","setup","textbus","messageBus","connector","Selection","consume","onlyLoad","testing","MultipleDocumentCollaborateModule"],"mappings":"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"}