@fluidframework/merge-tree 0.48.2 → 0.49.0-39313
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/mergeTree.d.ts +7 -1
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +1 -1
- package/dist/mergeTree.js.map +1 -1
- package/dist/opBuilder.d.ts +1 -1
- package/dist/opBuilder.js +1 -1
- package/dist/opBuilder.js.map +1 -1
- package/dist/sortedSegmentSet.js +4 -4
- package/dist/sortedSegmentSet.js.map +1 -1
- package/lib/client.d.ts +1 -1
- package/lib/client.js +1 -1
- package/lib/client.js.map +1 -1
- package/lib/mergeTree.d.ts +7 -1
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +1 -1
- package/lib/mergeTree.js.map +1 -1
- package/lib/opBuilder.d.ts +1 -1
- package/lib/opBuilder.js +1 -1
- package/lib/opBuilder.js.map +1 -1
- package/lib/sortedSegmentSet.js +4 -4
- package/lib/sortedSegmentSet.js.map +1 -1
- package/package.json +7 -7
- package/src/client.ts +1 -1
- package/src/mergeTree.ts +7 -1
- package/src/opBuilder.ts +1 -1
- package/src/sortedSegmentSet.ts +4 -4
package/dist/client.d.ts
CHANGED
|
@@ -63,7 +63,7 @@ export declare class Client {
|
|
|
63
63
|
annotateMarker(marker: Marker, props: Properties.PropertySet, combiningOp: ops.ICombiningOp): ops.IMergeTreeAnnotateMsg | undefined;
|
|
64
64
|
/**
|
|
65
65
|
* Annotates the range with the provided properties
|
|
66
|
-
* @param start - The inclusive start
|
|
66
|
+
* @param start - The inclusive start position of the range to annotate
|
|
67
67
|
* @param end - The exclusive end position of the range to annotate
|
|
68
68
|
* @param props - The properties to annotate the range with
|
|
69
69
|
* @param combiningOp - Specifies how to combine values for the property, such as "incr" for increment.
|
package/dist/client.js
CHANGED
|
@@ -132,7 +132,7 @@ class Client {
|
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* Annotates the range with the provided properties
|
|
135
|
-
* @param start - The inclusive start
|
|
135
|
+
* @param start - The inclusive start position of the range to annotate
|
|
136
136
|
* @param end - The exclusive end position of the range to annotate
|
|
137
137
|
* @param props - The properties to annotate the range with
|
|
138
138
|
* @param combiningOp - Specifies how to combine values for the property, such as "incr" for increment.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { IFluidHandle, IFluidSerializer } from \"@fluidframework/core-interfaces\";\nimport { ISequencedDocumentMessage, MessageType } from \"@fluidframework/protocol-definitions\";\nimport { IFluidDataStoreRuntime, IChannelStorageService } from \"@fluidframework/datastore-definitions\";\nimport { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport { assert, Trace } from \"@fluidframework/common-utils\";\nimport { LoggingError } from \"@fluidframework/telemetry-utils\";\nimport { IIntegerRange } from \"./base\";\nimport * as Collections from \"./collections\";\nimport { UnassignedSequenceNumber, UniversalSequenceNumber } from \"./constants\";\nimport { LocalReference } from \"./localReference\";\nimport {\n compareStrings,\n elapsedMicroseconds,\n IConsensusInfo,\n ISegment,\n ISegmentAction,\n Marker,\n MergeTree,\n RegisterCollection,\n SegmentGroup,\n} from \"./mergeTree\";\nimport { MergeTreeDeltaCallback } from \"./mergeTreeDeltaCallback\";\nimport * as OpBuilder from \"./opBuilder\";\nimport * as ops from \"./ops\";\nimport * as Properties from \"./properties\";\nimport { SnapshotLegacy } from \"./snapshotlegacy\";\nimport { SnapshotLoader } from \"./snapshotLoader\";\nimport { MergeTreeTextHelper } from \"./textSegment\";\nimport { SnapshotV1 } from \"./snapshotV1\";\nimport {\n IMergeTreeClientSequenceArgs,\n IMergeTreeDeltaOpArgs,\n MergeTreeMaintenanceCallback,\n ReferencePosition,\n} from \"./index\";\n\nexport class Client {\n public verboseOps = false;\n public noVerboseRemoteAnnotate = false;\n public measureOps = false;\n public registerCollection = new RegisterCollection();\n public accumTime = 0;\n public localTime = 0;\n public localOps = 0;\n public accumWindowTime = 0;\n public accumWindow = 0;\n public accumOps = 0;\n public maxWindowTime = 0;\n public longClientId: string | undefined;\n\n get mergeTreeDeltaCallback(): MergeTreeDeltaCallback | undefined { return this.mergeTree.mergeTreeDeltaCallback; }\n set mergeTreeDeltaCallback(callback: MergeTreeDeltaCallback | undefined) {\n this.mergeTree.mergeTreeDeltaCallback = callback;\n }\n\n get mergeTreeMaintenanceCallback(): MergeTreeMaintenanceCallback | undefined {\n return this.mergeTree.mergeTreeMaintenanceCallback;\n }\n\n set mergeTreeMaintenanceCallback(callback: MergeTreeMaintenanceCallback | undefined) {\n this.mergeTree.mergeTreeMaintenanceCallback = callback;\n }\n\n protected readonly mergeTree: MergeTree;\n\n private readonly clientNameToIds = new Collections.RedBlackTree<string, number>(compareStrings);\n private readonly shortClientIdMap: string[] = [];\n private readonly pendingConsensus = new Map<string, IConsensusInfo>();\n\n constructor(\n // Passing this callback would be unnecessary if Client were merged with SharedSegmentSequence\n public readonly specToSegment: (spec: ops.IJSONSegment) => ISegment,\n public readonly logger: ITelemetryLogger,\n options?: Properties.PropertySet,\n ) {\n this.mergeTree = new MergeTree(options);\n this.mergeTree.getLongClientId = (id) => this.getLongClientId(id);\n }\n\n /**\n * The merge tree maintains a queue of segment groups for each local operation.\n * These segment groups track segments modified by an operation.\n * This method peeks the tail of that queue, and returns the segments groups there.\n * It is used to get the segment group(s) for the previous operations.\n * @param count - The number segment groups to get peek from the tail of the queue. Default 1.\n */\n public peekPendingSegmentGroups(count: number = 1) {\n if (count === 1) {\n return this.mergeTree.pendingSegments?.last();\n }\n let taken = 0;\n return this.mergeTree.pendingSegments?.some(() => {\n if (taken < count) {\n taken++;\n return true;\n }\n return false;\n }, true);\n }\n\n /**\n * Annotate a maker and call the callback on concensus.\n * @param marker - The marker to annotate\n * @param props - The properties to annotate the marker with\n * @param consensusCallback - The callback called when consensus is reached\n * @returns The annotate op if valid, otherwise undefined\n */\n public annotateMarkerNotifyConsensus(\n marker: Marker,\n props: Properties.PropertySet,\n consensusCallback: (m: Marker) => void): ops.IMergeTreeAnnotateMsg | undefined {\n const combiningOp: ops.ICombiningOp = {\n name: \"consensus\",\n };\n\n const annotateOp =\n this.annotateMarker(marker, props, combiningOp);\n\n if (annotateOp) {\n const consensusInfo: IConsensusInfo = {\n callback: consensusCallback,\n marker,\n };\n this.pendingConsensus.set(marker.getId()!, consensusInfo);\n return annotateOp;\n } else {\n return undefined;\n }\n }\n /**\n * Annotates the markers with the provided properties\n * @param marker - The marker to annotate\n * @param props - The properties to annotate the marker with\n * @param combiningOp - Optional. Specifies how to combine values for the property, such as \"incr\" for increment.\n * @returns The annotate op if valid, otherwise undefined\n */\n public annotateMarker(\n marker: Marker,\n props: Properties.PropertySet,\n combiningOp: ops.ICombiningOp): ops.IMergeTreeAnnotateMsg | undefined {\n const annotateOp =\n OpBuilder.createAnnotateMarkerOp(marker, props, combiningOp)!;\n\n if (this.applyAnnotateRangeOp({ op: annotateOp })) {\n return annotateOp;\n } else {\n return undefined;\n }\n }\n /**\n * Annotates the range with the provided properties\n * @param start - The inclusive start postition of the range to annotate\n * @param end - The exclusive end position of the range to annotate\n * @param props - The properties to annotate the range with\n * @param combiningOp - Specifies how to combine values for the property, such as \"incr\" for increment.\n * @returns The annotate op if valid, otherwise undefined\n */\n public annotateRangeLocal(\n start: number,\n end: number,\n props: Properties.PropertySet,\n combiningOp: ops.ICombiningOp | undefined): ops.IMergeTreeAnnotateMsg | undefined {\n const annotateOp = OpBuilder.createAnnotateRangeOp(\n start,\n end,\n props,\n combiningOp);\n\n if (this.applyAnnotateRangeOp({ op: annotateOp })) {\n return annotateOp;\n }\n return undefined;\n }\n\n /**\n * Removes the range and puts the content of the removed range in a register\n * if a register name is provided\n *\n * @param start - The inclusive start of the range to remove\n * @param end - The exclusive end of the range to remove\n * @param register - Optional. The name of the register to store the removed range in\n */\n public removeRangeLocal(start: number, end: number, register?: string) {\n const removeOp = OpBuilder.createRemoveRangeOp(start, end, register);\n\n if (this.applyRemoveRangeOp({ op: removeOp })) {\n return removeOp;\n }\n return undefined;\n }\n\n /**\n * @param pos - The position to insert the segment at\n * @param segment - The segment to insert\n */\n public insertSegmentLocal(pos: number, segment: ISegment): ops.IMergeTreeInsertMsg | undefined {\n if (segment.cachedLength <= 0) {\n return undefined;\n }\n const insertOp = OpBuilder.createInsertSegmentOp(pos, segment);\n if (this.applyInsertOp({ op: insertOp })) {\n return insertOp;\n }\n return undefined;\n }\n\n /**\n * @param refPos - The reference position to insert the segment at\n * @param segment - The segment to insert\n */\n public insertAtReferencePositionLocal(\n refPos: ReferencePosition,\n segment: ISegment,\n ): ops.IMergeTreeInsertMsg | undefined {\n const pos = this.mergeTree.referencePositionToLocalPosition(\n refPos,\n this.getCurrentSeq(),\n this.getClientId());\n\n if (pos === LocalReference.DetachedPosition) {\n return undefined;\n }\n const op = OpBuilder.createInsertSegmentOp(\n pos,\n segment);\n\n const opArgs = { op };\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.insertAtReferencePosition(\n refPos,\n segment,\n opArgs);\n\n this.completeAndLogOp(\n opArgs,\n this.getClientSequenceArgs(opArgs),\n { start: op.pos1 },\n traceStart);\n\n return op;\n }\n\n /**\n * @param pos - The position to insert the register contents at\n * @param register - The name of the register to insert the value of\n */\n public pasteLocal(pos: number, register: string) {\n const insertOp = OpBuilder.createInsertFromRegisterOp(pos, register);\n if (this.applyInsertOp({ op: insertOp })) {\n return insertOp;\n }\n return undefined;\n }\n\n /**\n *\n * @param start - he inclusive start of the range to copy into the register\n * @param end - The exclusive end of the range to copy into the register\n * @param register - The name of the register to insert the range contents into\n */\n public copyLocal(start: number, end: number, register: string) {\n const insertOp = OpBuilder.createInsertToRegisterOp(start, end, register);\n if (this.applyInsertOp({ op: insertOp })) {\n return insertOp;\n }\n return undefined;\n }\n\n public walkSegments<TClientData>(handler: ISegmentAction<TClientData>,\n start: number | undefined, end: number | undefined, accum: TClientData, splitRange?: boolean): void;\n public walkSegments<undefined>(handler: ISegmentAction<undefined>,\n start?: number, end?: number, accum?: undefined, splitRange?: boolean): void;\n public walkSegments<TClientData>(\n handler: ISegmentAction<TClientData>,\n start: number | undefined, end: number | undefined, accum: TClientData, splitRange: boolean = false) {\n this.mergeTree.mapRange(\n {\n leaf: handler,\n },\n this.getCurrentSeq(), this.getClientId(),\n accum, start, end, splitRange);\n }\n\n /**\n * Serializes the data required for garbage collection. The IFluidHandles stored in all segements that haven't\n * been removed represent routes to other objects. We serialize the data in these segments using the passed in\n * serializer which keeps track of all serialized handles.\n */\n public serializeGCData(handle: IFluidHandle, handleCollectingSerializer: IFluidSerializer): void {\n this.mergeTree.walkAllSegments(\n this.mergeTree.root,\n (seg) => {\n // Only serialize segments that have not been removed.\n if (seg.removedSeq === undefined) {\n handleCollectingSerializer.stringify(\n seg.clone().toJSONObject(),\n handle);\n }\n return true;\n },\n );\n }\n\n public getCollabWindow() {\n return this.mergeTree.getCollabWindow();\n }\n\n /**\n * Returns the current position of a segment, and -1 if the segment\n * does not exist in this merge tree\n * @param segment - The segment to get the position of\n */\n public getPosition(segment: ISegment): number {\n if (segment?.parent === undefined) {\n return -1;\n }\n return this.mergeTree.getPosition(segment, this.getCurrentSeq(), this.getClientId());\n }\n\n public addLocalReference(lref: LocalReference) {\n return this.mergeTree.addLocalReference(lref);\n }\n\n public removeLocalReference(lref: LocalReference) {\n return this.mergeTree.removeLocalReference(lref.segment!, lref);\n }\n\n /**\n * Given a position specified relative to a marker id, lookup the marker\n * and convert the position to a character position.\n * @param relativePos - Id of marker (may be indirect) and whether position is before or after marker.\n */\n public posFromRelativePos(relativePos: ops.IRelativePosition) {\n return this.mergeTree.posFromRelativePos(relativePos);\n }\n\n public getMarkerFromId(id: string) {\n return this.mergeTree.getMarkerFromId(id);\n }\n\n /**\n * Performs the remove based on the provided op\n * @param opArgs - The ops args for the op\n * @returns True if the remove was applied. False if it could not be.\n */\n private applyRemoveRangeOp(opArgs: IMergeTreeDeltaOpArgs): boolean {\n assert(opArgs.op.type === ops.MergeTreeDeltaType.REMOVE, 0x02d /* \"Unexpected op type on range remove!\" */);\n const op = opArgs.op;\n const clientArgs = this.getClientSequenceArgs(opArgs);\n const range = this.getValidOpRange(op, clientArgs);\n if (!range) {\n return false;\n }\n\n if (op.register) {\n // Cut\n this.copy(range, op.register, clientArgs);\n }\n\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.markRangeRemoved(\n range.start,\n range.end,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n clientArgs.sequenceNumber,\n false,\n opArgs);\n\n this.completeAndLogOp(opArgs, clientArgs, range, traceStart);\n\n return true;\n }\n\n /**\n * Performs the annotate based on the provided op\n * @param opArgs - The ops args for the op\n * @returns True if the annotate was applied. False if it could not be.\n */\n private applyAnnotateRangeOp(opArgs: IMergeTreeDeltaOpArgs): boolean {\n assert(opArgs.op.type === ops.MergeTreeDeltaType.ANNOTATE, 0x02e /* \"Unexpected op type on range annotate!\" */);\n const op = opArgs.op;\n const clientArgs = this.getClientSequenceArgs(opArgs);\n const range = this.getValidOpRange(op, clientArgs);\n\n if (!range) {\n return false;\n }\n\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.annotateRange(\n range.start,\n range.end,\n op.props,\n op.combiningOp,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n clientArgs.sequenceNumber,\n opArgs);\n\n this.completeAndLogOp(opArgs, clientArgs, range, traceStart);\n\n return true;\n }\n\n /**\n * Performs the insert based on the provided op\n * @param opArgs - The ops args for the op\n * @returns True if the insert was applied. False if it could not be.\n */\n private applyInsertOp(opArgs: IMergeTreeDeltaOpArgs): boolean {\n assert(opArgs.op.type === ops.MergeTreeDeltaType.INSERT, 0x02f /* \"Unexpected op type on range insert!\" */);\n const op = opArgs.op;\n const clientArgs = this.getClientSequenceArgs(opArgs);\n const range = this.getValidOpRange(op, clientArgs);\n\n if (!range) {\n return false;\n }\n\n let segments: ISegment[] | undefined;\n if (op.seg) {\n segments = [this.specToSegment(op.seg)];\n } else if (op.register) {\n if (range.end) {\n this.copy(range, op.register, clientArgs);\n // Enqueue an empty segment group to be dequeued on ack\n //\n if (clientArgs.sequenceNumber === UnassignedSequenceNumber) {\n this.mergeTree.pendingSegments!.enqueue(\n { segments: [], localSeq: this.getCollabWindow().localSeq },\n );\n }\n return true;\n }\n segments = this.registerCollection.get(\n this.getLongClientId(clientArgs.clientId),\n op.register);\n }\n\n if (!segments || segments.length === 0) {\n return false;\n }\n\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.insertSegments(\n range.start,\n segments,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n clientArgs.sequenceNumber,\n opArgs);\n\n this.completeAndLogOp(opArgs, clientArgs, range, traceStart);\n\n return true;\n }\n\n /**\n *\n * @param opArgs - The op args of the op to complete\n * @param clientArgs - The client args for the op\n * @param range - The range the op applied to\n * @param clockStart - Optional. The clock start if timing data should be updated.\n */\n private completeAndLogOp(\n opArgs: IMergeTreeDeltaOpArgs,\n clientArgs: IMergeTreeClientSequenceArgs,\n range: Partial<IIntegerRange>,\n traceStart?: Trace) {\n if (!opArgs.sequencedMessage) {\n if (traceStart) {\n this.localTime += elapsedMicroseconds(traceStart);\n this.localOps++;\n }\n } else {\n assert(this.mergeTree.getCollabWindow().currentSeq < clientArgs.sequenceNumber,\n 0x030 /* \"Incoming remote op sequence# <= local collabWindow's currentSequence#\" */);\n assert(this.mergeTree.getCollabWindow().minSeq <= opArgs.sequencedMessage.minimumSequenceNumber,\n 0x031 /* \"Incoming remote op minSequence# < local collabWindow's minSequence#\" */);\n if (traceStart) {\n this.accumTime += elapsedMicroseconds(traceStart);\n this.accumOps++;\n this.accumWindow += (this.getCurrentSeq() - this.getCollabWindow().minSeq);\n }\n }\n if (this.verboseOps && (!opArgs.sequencedMessage || !this.noVerboseRemoteAnnotate)) {\n console.log(\n `@cli ${this.getLongClientId(this.getCollabWindow().clientId)} ` +\n `seq ${clientArgs.sequenceNumber} ${opArgs.op.type} local ${!opArgs.sequencedMessage} ` +\n `start ${range.start} end ${range.end} refseq ${clientArgs.referenceSequenceNumber} ` +\n `cli ${clientArgs.clientId}`);\n }\n }\n\n /**\n * Returns a valid range for the op, or undefined\n * @param op - The op to generate the range for\n * @param clientArgs - The client args for the op\n */\n private getValidOpRange(\n op: ops.IMergeTreeAnnotateMsg | ops.IMergeTreeInsertMsg | ops.IMergeTreeRemoveMsg,\n clientArgs: IMergeTreeClientSequenceArgs): IIntegerRange | undefined {\n let start: number | undefined = op.pos1;\n if (start === undefined && op.relativePos1) {\n start = this.mergeTree.posFromRelativePos(\n op.relativePos1,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId);\n }\n\n let end: number | undefined = op.pos2;\n if (end === undefined && op.relativePos2) {\n end = this.mergeTree.posFromRelativePos(\n op.relativePos2,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId);\n }\n\n // Validate if local op\n if (clientArgs.clientId === this.getClientId()) {\n const length = this.getLength();\n\n const invalidPositions: string[] = [];\n\n // Validate start position\n //\n if (start === undefined\n || start < 0\n || start > length\n || start === length && op.type !== ops.MergeTreeDeltaType.INSERT) {\n invalidPositions.push(\"start\");\n }\n // Validate end if not insert, or insert has end\n //\n if (op.type !== ops.MergeTreeDeltaType.INSERT || end !== undefined) {\n if (end === undefined || end <= start!) {\n invalidPositions.push(\"end\");\n }\n }\n\n if (invalidPositions.length > 0) {\n throw new LoggingError(\n \"RangeOutOfBounds\",\n {\n usageError: true,\n end,\n invalidPositions: invalidPositions.toString(),\n length,\n opPos1: op.pos1,\n opPos1Relative: op.relativePos1 !== undefined,\n opPos2: op.pos2,\n opPos2Relative: op.relativePos2 !== undefined,\n opType: op.type,\n start,\n },\n );\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return { start, end } as IIntegerRange;\n }\n\n /**\n * Gets the client args from the op if remote, otherwise uses the local clients info\n * @param opArgs - The op arg to get the client sequence args for\n */\n private getClientSequenceArgs(opArgs: IMergeTreeDeltaOpArgs): IMergeTreeClientSequenceArgs {\n // If there this no sequenced message, then the op is local\n // and unacked, so use this clients sequenced args\n //\n if (!opArgs.sequencedMessage) {\n const segWindow = this.getCollabWindow();\n return {\n clientId: segWindow.clientId,\n referenceSequenceNumber: segWindow.currentSeq,\n sequenceNumber: this.getLocalSequenceNumber(),\n };\n } else {\n return {\n clientId: this.getShortClientId(opArgs.sequencedMessage.clientId),\n referenceSequenceNumber: opArgs.sequencedMessage.referenceSequenceNumber,\n sequenceNumber: opArgs.sequencedMessage.sequenceNumber,\n };\n }\n }\n\n /**\n * @param range - The range to copy into the register\n * @param register - The name of the register to copy to range into\n * @param clientArgs - The client args to use when evaluating the range for copying\n */\n private copy(range: IIntegerRange, register: string, clientArgs: IMergeTreeClientSequenceArgs) {\n const segs = this.mergeTree.cloneSegments(\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n range.start,\n range.end);\n this.registerCollection.set(\n this.getLongClientId(clientArgs.clientId), register, segs);\n }\n\n private ackPendingSegment(opArgs: IMergeTreeDeltaOpArgs) {\n const ackOp = (deltaOpArgs: IMergeTreeDeltaOpArgs) => {\n let trace: Trace | undefined;\n if (this.measureOps) {\n trace = Trace.start();\n }\n\n this.mergeTree.ackPendingSegment(deltaOpArgs, this.verboseOps);\n if (deltaOpArgs.op.type === ops.MergeTreeDeltaType.ANNOTATE) {\n if (deltaOpArgs.op.combiningOp && (deltaOpArgs.op.combiningOp.name === \"consensus\")) {\n this.updateConsensusProperty(deltaOpArgs.op, deltaOpArgs.sequencedMessage!);\n }\n }\n\n if (trace) {\n this.accumTime += elapsedMicroseconds(trace);\n this.accumOps++;\n this.accumWindow += (this.getCurrentSeq() - this.getCollabWindow().minSeq);\n }\n\n if (this.verboseOps) {\n console.log(`@cli ${this.getLongClientId(this.getCollabWindow().clientId)} ` +\n `ack seq # ${deltaOpArgs.sequencedMessage?.sequenceNumber}`);\n }\n };\n\n if (opArgs.op.type === ops.MergeTreeDeltaType.GROUP) {\n for (const memberOp of opArgs.op.ops) {\n ackOp({\n groupOp: opArgs.op,\n op: memberOp,\n sequencedMessage: opArgs.sequencedMessage,\n });\n }\n } else {\n ackOp(opArgs);\n }\n }\n\n // as functions are modified move them above the eslint-disabled waterline and lint them\n\n cloneFromSegments() {\n const clone = new Client(this.specToSegment, this.logger, this.mergeTree.options);\n const segments: ISegment[] = [];\n const newRoot = this.mergeTree.blockClone(this.mergeTree.root, segments);\n clone.mergeTree.root = newRoot;\n return clone;\n }\n getOrAddShortClientId(longClientId: string) {\n if (!this.clientNameToIds.get(longClientId)) {\n this.addLongClientId(longClientId);\n }\n return this.getShortClientId(longClientId);\n }\n getShortClientId(longClientId: string) {\n return this.clientNameToIds.get(longClientId)!.data;\n }\n getLongClientId(shortClientId: number) {\n if (shortClientId >= 0) {\n return this.shortClientIdMap[shortClientId];\n }\n else {\n return \"original\";\n }\n }\n addLongClientId(longClientId: string) {\n this.clientNameToIds.put(longClientId, this.shortClientIdMap.length);\n this.shortClientIdMap.push(longClientId);\n }\n\n /**\n * During reconnect, we must find the positions to pending segments\n * relative to other pending segments. This methods computes that\n * position relative to a localSeq. Pending segments above the localSeq\n * will be ignored.\n *\n * @param segment - The segment to find the position for\n * @param localSeq - The localSeq to find the position of the segment at\n */\n public findReconnectionPostition(segment: ISegment, localSeq: number) {\n assert(localSeq <= this.mergeTree.collabWindow.localSeq, 0x032 /* \"localSeq greater than collab window\" */);\n let segmentPosition = 0;\n /*\n Walk the segments up to the current segment, and calculate it's\n position taking into account local segments that were modified,\n after the current segment.\n\n TODO: Consider embedding this information into the tree for\n more efficient look up of pending segment positions.\n */\n this.mergeTree.walkAllSegments(this.mergeTree.root, (seg) => {\n // If we've found the desired segment, terminate the walk and return 'segmentPosition'.\n if (seg === segment) {\n return false;\n }\n\n // Otherwise, advance segmentPosition if the segment has been inserted and not removed\n // with respect to the given 'localSeq'.\n //\n // Note that all ACKed / remote ops are applied and we only need concern ourself with\n // determining if locally pending ops fall before/after the given 'localSeq'.\n if ((seg.localSeq === undefined || seg.localSeq <= localSeq) // Is inserted\n && (seg.removedSeq === undefined || seg.localRemovedSeq! > localSeq) // Not removed\n ) {\n segmentPosition += seg.cachedLength;\n }\n\n return true;\n });\n\n return segmentPosition;\n }\n\n private resetPendingDeltaToOps(\n resetOp: ops.IMergeTreeDeltaOp,\n segmentGroup: SegmentGroup): ops.IMergeTreeDeltaOp[] {\n assert(!!segmentGroup, 0x033 /* \"Segment group undefined\" */);\n const NACKedSegmentGroup = this.mergeTree.pendingSegments?.dequeue();\n assert(segmentGroup === NACKedSegmentGroup,\n 0x034 /* \"Segment group not at head of merge tree pending queue\" */);\n\n const opList: ops.IMergeTreeDeltaOp[] = [];\n // We need to sort the segments by ordinal, as the segments are not sorted in the segment group.\n // The reason they need them sorted, as they have the same local sequence number and which means\n // farther segments will take into account nearer segments when calculating their position.\n // By sorting we ensure the nearer segment will be applied and sequenced before the father segments\n // so their recalulated positions will be correct.\n for (const segment of segmentGroup.segments.sort((a, b) => a.ordinal < b.ordinal ? -1 : 1)) {\n const segmentSegGroup = segment.segmentGroups.dequeue();\n assert(segmentGroup === segmentSegGroup,\n 0x035 /* \"Segment group not at head of segment pending queue\" */);\n const segmentPosition = this.findReconnectionPostition(segment, segmentGroup.localSeq);\n let newOp: ops.IMergeTreeDeltaOp | undefined;\n switch (resetOp.type) {\n case ops.MergeTreeDeltaType.ANNOTATE:\n assert(segment.propertyManager?.hasPendingProperties() === true,\n 0x036 /* \"Segment has no pending properties\" */);\n newOp = OpBuilder.createAnnotateRangeOp(\n segmentPosition,\n segmentPosition + segment.cachedLength,\n resetOp.props,\n resetOp.combiningOp);\n break;\n\n case ops.MergeTreeDeltaType.INSERT:\n assert(segment.seq === UnassignedSequenceNumber,\n 0x037 /* \"Segment already has assigned sequence number\" */);\n newOp = OpBuilder.createInsertSegmentOp(\n segmentPosition,\n segment);\n break;\n\n case ops.MergeTreeDeltaType.REMOVE:\n if (segment.localRemovedSeq !== undefined) {\n newOp = OpBuilder.createRemoveRangeOp(\n segmentPosition,\n segmentPosition + segment.cachedLength);\n }\n break;\n\n default:\n throw new Error(`Invalid op type`);\n }\n\n if (newOp) {\n const newSegmentGroup: SegmentGroup = { segments: [], localSeq: segmentGroup.localSeq };\n segment.segmentGroups.enqueue(newSegmentGroup);\n this.mergeTree.pendingSegments!.enqueue(newSegmentGroup);\n opList.push(newOp);\n }\n }\n\n return opList;\n }\n\n private applyRemoteOp(opArgs: IMergeTreeDeltaOpArgs) {\n const op = opArgs.op;\n const msg = opArgs.sequencedMessage;\n this.getOrAddShortClientId(msg!.clientId);\n switch (op.type) {\n case ops.MergeTreeDeltaType.INSERT:\n this.applyInsertOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.REMOVE:\n this.applyRemoveRangeOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.ANNOTATE:\n this.applyAnnotateRangeOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.GROUP: {\n for (const memberOp of op.ops) {\n this.applyRemoteOp({\n op: memberOp,\n groupOp: op,\n sequencedMessage: msg,\n });\n }\n break;\n }\n default:\n break;\n }\n }\n\n public applyMsg(msg: ISequencedDocumentMessage) {\n // Ensure client ID is registered\n this.getOrAddShortClientId(msg.clientId);\n // Apply if an operation message\n if (msg.type === MessageType.Operation) {\n const opArgs: IMergeTreeDeltaOpArgs = {\n op: msg.contents as ops.IMergeTreeOp,\n sequencedMessage: msg,\n };\n if (opArgs.sequencedMessage?.clientId === this.longClientId) {\n this.ackPendingSegment(opArgs);\n }\n else {\n this.applyRemoteOp(opArgs);\n }\n }\n\n this.updateSeqNumbers(msg.minimumSequenceNumber, msg.sequenceNumber);\n }\n\n public updateSeqNumbers(min: number, seq: number) {\n const collabWindow = this.mergeTree.getCollabWindow();\n // Equal is fine here due to SharedSegmentSequence<>.snapshotContent() potentially updating with same #\n assert(collabWindow.currentSeq <= seq,\n 0x038 /* \"Incoming op sequence# < local collabWindow's currentSequence#\" */);\n collabWindow.currentSeq = seq;\n assert(min <= seq, 0x039 /* \"Incoming op sequence# < minSequence#\" */);\n this.updateMinSeq(min);\n }\n\n /**\n * Resolves a remote client's position against the local sequence\n * and returns the remote client's position relative to the local\n * sequence\n * @param remoteClientPosition - The remote client's position to resolve\n * @param remoteClientRefSeq - The reference sequence number of the remote client\n * @param remoteClientId - The client id of the remote client\n */\n public resolveRemoteClientPosition(\n remoteClientPosition: number,\n remoteClientRefSeq: number,\n remoteClientId: string): number | undefined {\n const shortRemoteClientId = this.getOrAddShortClientId(remoteClientId);\n return this.mergeTree.resolveRemoteClientPosition(\n remoteClientPosition,\n remoteClientRefSeq,\n shortRemoteClientId);\n }\n\n /**\n * Given an pending operation and segment group, regenerate the op, so it\n * can be resubmitted\n * @param resetOp - The op to reset\n * @param segmentGroup - The segment group associated with the op\n */\n public regeneratePendingOp(\n resetOp: ops.IMergeTreeOp,\n segmentGroup: SegmentGroup | SegmentGroup[],\n ): ops.IMergeTreeOp {\n const trace = Trace.start();\n try {\n const opList: ops.IMergeTreeDeltaOp[] = [];\n\n if (resetOp.type === ops.MergeTreeDeltaType.GROUP) {\n if (Array.isArray(segmentGroup)) {\n assert(resetOp.ops.length === segmentGroup.length,\n 0x03a /* \"Number of ops in 'resetOp' must match the number of segment groups provided.\" */);\n\n for (let i = 0; i < resetOp.ops.length; i++) {\n opList.push(\n ...this.resetPendingDeltaToOps(resetOp.ops[i], segmentGroup[i]));\n }\n } else {\n // A group op containing a single op will pass a direct reference to 'segmentGroup'\n // rather than an array of segment groups. (See 'peekPendingSegmentGroups()')\n assert(resetOp.ops.length === 1,\n 0x03b /* \"Number of ops in 'resetOp' must match the number of segment groups provided.\" */);\n opList.push(...this.resetPendingDeltaToOps(resetOp.ops[0], segmentGroup));\n }\n } else {\n assert((resetOp.type as any) !== ops.MergeTreeDeltaType.GROUP,\n 0x03c /* \"Reset op has 'group' delta type!\" */);\n assert(!Array.isArray(segmentGroup),\n 0x03d /* \"segmentGroup is array rather than singleton!\" */);\n opList.push(\n ...this.resetPendingDeltaToOps(resetOp, segmentGroup));\n }\n return opList.length === 1 ? opList[0] : OpBuilder.createGroupOp(...opList);\n } finally {\n this.logger.sendPerformanceEvent({\n eventName: \"MergeTree:RegeneratePendingOp\",\n category: \"performance\",\n duration: elapsedMicroseconds(trace),\n });\n }\n }\n\n public createTextHelper() {\n return new MergeTreeTextHelper(this.mergeTree);\n }\n\n // TODO: Remove `catchUpMsgs` once new snapshot format is adopted as default.\n // (See https://github.com/microsoft/FluidFramework/issues/84)\n public snapshot(\n runtime: IFluidDataStoreRuntime,\n handle: IFluidHandle,\n serializer: IFluidSerializer,\n catchUpMsgs: ISequencedDocumentMessage[],\n ) {\n const deltaManager = runtime.deltaManager;\n const minSeq = deltaManager.minimumSequenceNumber;\n\n // Catch up to latest MSN, if we have not had a chance to do it.\n // Required for case where FluidDataStoreRuntime.attachChannel()\n // generates snapshot right after loading data store.\n\n this.updateSeqNumbers(minSeq, deltaManager.lastSequenceNumber);\n\n // One of the snapshots (from SPO) I observed to have chunk.chunkSequenceNumber > minSeq!\n // Not sure why - need to catch it sooner\n assert(this.getCollabWindow().minSeq === minSeq,\n 0x03e /* \"minSeq mismatch between collab window and delta manager!\" */);\n\n // TODO: Remove options flag once new snapshot format is adopted as default.\n // (See https://github.com/microsoft/FluidFramework/issues/84)\n if (this.mergeTree.options?.newMergeTreeSnapshotFormat === true) {\n assert(\n catchUpMsgs === undefined || catchUpMsgs.length === 0,\n 0x03f /* \"New format should not emit catchup ops\" */);\n const snap = new SnapshotV1(this.mergeTree, this.logger);\n snap.extractSync();\n return snap.emit(serializer, handle);\n } else {\n const snap = new SnapshotLegacy(this.mergeTree, this.logger);\n snap.extractSync();\n return snap.emit(catchUpMsgs, serializer, handle);\n }\n }\n\n public async load(\n runtime: IFluidDataStoreRuntime,\n storage: IChannelStorageService,\n serializer: IFluidSerializer,\n ): Promise<{ catchupOpsP: Promise<ISequencedDocumentMessage[]> }> {\n const loader = new SnapshotLoader(runtime, this, this.mergeTree, this.logger, serializer);\n\n return loader.initialize(storage);\n }\n\n getStackContext(startPos: number, rangeLabels: string[]) {\n return this.mergeTree.getStackContext(startPos, this.getCollabWindow().clientId, rangeLabels);\n }\n\n private getLocalSequenceNumber() {\n const segWindow = this.getCollabWindow();\n if (segWindow.collaborating) {\n return UnassignedSequenceNumber;\n }\n else {\n return UniversalSequenceNumber;\n }\n }\n localTransaction(groupOp: ops.IMergeTreeGroupMsg) {\n for (const op of groupOp.ops) {\n const opArgs: IMergeTreeDeltaOpArgs = {\n op,\n groupOp,\n };\n switch (op.type) {\n case ops.MergeTreeDeltaType.INSERT:\n this.applyInsertOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.ANNOTATE:\n this.applyAnnotateRangeOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.REMOVE:\n this.applyRemoveRangeOp(opArgs);\n break;\n default:\n break;\n }\n }\n }\n updateConsensusProperty(op: ops.IMergeTreeAnnotateMsg, msg: ISequencedDocumentMessage) {\n const markerId = op.relativePos1!.id!;\n const consensusInfo = this.pendingConsensus.get(markerId);\n if (consensusInfo) {\n consensusInfo.marker.addProperties(op.props, op.combiningOp, msg.sequenceNumber);\n }\n this.mergeTree.addMinSeqListener(msg.sequenceNumber, () => consensusInfo!.callback(consensusInfo!.marker));\n }\n\n updateMinSeq(minSeq: number) {\n let trace: Trace | undefined;\n if (this.measureOps) {\n trace = Trace.start();\n }\n this.mergeTree.setMinSeq(minSeq);\n if (trace) {\n const elapsed = elapsedMicroseconds(trace);\n this.accumWindowTime += elapsed;\n if (elapsed > this.maxWindowTime) {\n this.maxWindowTime = elapsed;\n }\n }\n }\n\n getContainingSegment<T extends ISegment>(pos: number) {\n const segWindow = this.mergeTree.getCollabWindow();\n return this.mergeTree.getContainingSegment<T>(pos, segWindow.currentSeq, segWindow.clientId);\n }\n\n getPropertiesAtPosition(pos: number) {\n const segWindow = this.getCollabWindow();\n if (this.verboseOps) {\n // eslint-disable-next-line max-len\n console.log(`getPropertiesAtPosition cli ${this.getLongClientId(segWindow.clientId)} ref seq ${segWindow.currentSeq}`);\n }\n\n let propertiesAtPosition: Properties.PropertySet | undefined;\n const segoff = this.getContainingSegment(pos);\n const seg = segoff.segment;\n if (seg) {\n propertiesAtPosition = seg.properties;\n }\n return propertiesAtPosition;\n }\n getRangeExtentsOfPosition(pos: number) {\n const segWindow = this.getCollabWindow();\n if (this.verboseOps) {\n // eslint-disable-next-line max-len\n console.log(`getRangeExtentsOfPosition cli ${this.getLongClientId(segWindow.clientId)} ref seq ${segWindow.currentSeq}`);\n }\n\n let posStart: number | undefined;\n let posAfterEnd: number | undefined;\n\n const segoff = this.getContainingSegment(pos);\n const seg = segoff.segment;\n if (seg) {\n posStart = this.getPosition(seg);\n posAfterEnd = posStart + seg.cachedLength;\n }\n return { posStart, posAfterEnd };\n }\n getCurrentSeq() {\n return this.getCollabWindow().currentSeq;\n }\n getClientId() {\n return this.getCollabWindow().clientId;\n }\n\n getLength() { return this.mergeTree.length; }\n\n startOrUpdateCollaboration(longClientId: string | undefined, minSeq = 0, currentSeq = 0) {\n // we should always have a client id if we are collaborating\n // if the client id is undefined we are likely bound to a detached\n // container, so we should keep going in local mode. once\n // the container attaches this will be called again on connect with the\n // client id\n if (longClientId !== undefined) {\n if (this.longClientId === undefined) {\n this.longClientId = longClientId;\n this.addLongClientId(this.longClientId);\n this.mergeTree.startCollaboration(\n this.getShortClientId(this.longClientId), minSeq, currentSeq);\n } else {\n const oldClientId = this.longClientId;\n const oldData = this.clientNameToIds.get(oldClientId)!.data;\n this.longClientId = longClientId;\n this.clientNameToIds.put(longClientId, oldData);\n this.shortClientIdMap[oldData] = longClientId;\n }\n }\n }\n\n findTile(startPos: number, tileLabel: string, preceding = true) {\n const clientId = this.getClientId();\n return this.mergeTree.findTile(startPos, clientId, tileLabel, preceding);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;AAKH,+EAA8F;AAG9F,+DAA6D;AAC7D,qEAA+D;AAE/D,2DAA6C;AAC7C,2CAAgF;AAChF,qDAAkD;AAClD,2CAUqB;AAErB,uDAAyC;AAGzC,qDAAkD;AAClD,qDAAkD;AAClD,+CAAoD;AACpD,6CAA0C;AAQ1C,MAAa,MAAM;IAiCf;IACI,8FAA8F;IAC9E,aAAmD,EACnD,MAAwB,EACxC,OAAgC;QAFhB,kBAAa,GAAb,aAAa,CAAsC;QACnD,WAAM,GAAN,MAAM,CAAkB;QAnCrC,eAAU,GAAG,KAAK,CAAC;QACnB,4BAAuB,GAAG,KAAK,CAAC;QAChC,eAAU,GAAG,KAAK,CAAC;QACnB,uBAAkB,GAAG,IAAI,8BAAkB,EAAE,CAAC;QAC9C,cAAS,GAAG,CAAC,CAAC;QACd,cAAS,GAAG,CAAC,CAAC;QACd,aAAQ,GAAG,CAAC,CAAC;QACb,oBAAe,GAAG,CAAC,CAAC;QACpB,gBAAW,GAAG,CAAC,CAAC;QAChB,aAAQ,GAAG,CAAC,CAAC;QACb,kBAAa,GAAG,CAAC,CAAC;QAkBR,oBAAe,GAAG,IAAI,WAAW,CAAC,YAAY,CAAiB,0BAAc,CAAC,CAAC;QAC/E,qBAAgB,GAAa,EAAE,CAAC;QAChC,qBAAgB,GAAG,IAAI,GAAG,EAA0B,CAAC;QAQlE,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IA3BD,IAAI,sBAAsB,KAAyC,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAClH,IAAI,sBAAsB,CAAC,QAA4C;QACnE,IAAI,CAAC,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC;IACrD,CAAC;IAED,IAAI,4BAA4B;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC;IACvD,CAAC;IAED,IAAI,4BAA4B,CAAC,QAAkD;QAC/E,IAAI,CAAC,SAAS,CAAC,4BAA4B,GAAG,QAAQ,CAAC;IAC3D,CAAC;IAkBD;;;;;;OAMG;IACI,wBAAwB,CAAC,QAAgB,CAAC;;QAC7C,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,aAAO,IAAI,CAAC,SAAS,CAAC,eAAe,0CAAE,IAAI,GAAG;SACjD;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,aAAO,IAAI,CAAC,SAAS,CAAC,eAAe,0CAAE,IAAI,CAAC,GAAG,EAAE;YAC7C,IAAI,KAAK,GAAG,KAAK,EAAE;gBACf,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,CAAC;aACf;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,EAAE,IAAI,EAAE;IACb,CAAC;IAED;;;;;;OAMG;IACI,6BAA6B,CAChC,MAAc,EACd,KAA6B,EAC7B,iBAAsC;QACtC,MAAM,WAAW,GAAqB;YAClC,IAAI,EAAE,WAAW;SACpB,CAAC;QAEF,MAAM,UAAU,GACZ,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAEpD,IAAI,UAAU,EAAE;YACZ,MAAM,aAAa,GAAmB;gBAClC,QAAQ,EAAE,iBAAiB;gBAC3B,MAAM;aACT,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAG,EAAE,aAAa,CAAC,CAAC;YAC1D,OAAO,UAAU,CAAC;SACrB;aAAM;YACH,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IACD;;;;;;OAMG;IACI,cAAc,CACjB,MAAc,EACd,KAA6B,EAC7B,WAA6B;QAC7B,MAAM,UAAU,GACZ,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAE,CAAC;QAElE,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;YAC/C,OAAO,UAAU,CAAC;SACrB;aAAM;YACH,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IACD;;;;;;;OAOG;IACI,kBAAkB,CACrB,KAAa,EACb,GAAW,EACX,KAA6B,EAC7B,WAAyC;QACzC,MAAM,UAAU,GAAG,SAAS,CAAC,qBAAqB,CAC9C,KAAK,EACL,GAAG,EACH,KAAK,EACL,WAAW,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;YAC/C,OAAO,UAAU,CAAC;SACrB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACI,gBAAgB,CAAC,KAAa,EAAE,GAAW,EAAE,QAAiB;QACjE,MAAM,QAAQ,GAAG,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YAC3C,OAAO,QAAQ,CAAC;SACnB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,GAAW,EAAE,OAAiB;QACpD,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,EAAE;YAC3B,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtC,OAAO,QAAQ,CAAC;SACnB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,8BAA8B,CACjC,MAAyB,EACzB,OAAiB;QAEjB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,gCAAgC,CACvD,MAAM,EACN,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAExB,IAAI,GAAG,KAAK,+BAAc,CAAC,gBAAgB,EAAE;YACzC,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,EAAE,GAAG,SAAS,CAAC,qBAAqB,CACtC,GAAG,EACH,OAAO,CAAC,CAAC;QAEb,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;QACtB,IAAI,UAA6B,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,UAAU,GAAG,oBAAK,CAAC,KAAK,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,SAAS,CAAC,yBAAyB,CACpC,MAAM,EACN,OAAO,EACP,MAAM,CAAC,CAAC;QAEZ,IAAI,CAAC,gBAAgB,CACjB,MAAM,EACN,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAClC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAClB,UAAU,CAAC,CAAC;QAEhB,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,GAAW,EAAE,QAAgB;QAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtC,OAAO,QAAQ,CAAC;SACnB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACI,SAAS,CAAC,KAAa,EAAE,GAAW,EAAE,QAAgB;QACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtC,OAAO,QAAQ,CAAC;SACnB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAMM,YAAY,CACf,OAAoC,EACpC,KAAyB,EAAE,GAAuB,EAAE,KAAkB,EAAE,aAAsB,KAAK;QACnG,IAAI,CAAC,SAAS,CAAC,QAAQ,CACnB;YACI,IAAI,EAAE,OAAO;SAChB,EACD,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EACxC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,MAAoB,EAAE,0BAA4C;QACrF,IAAI,CAAC,SAAS,CAAC,eAAe,CAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,CAAC,GAAG,EAAE,EAAE;YACJ,sDAAsD;YACtD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;gBAC9B,0BAA0B,CAAC,SAAS,CAChC,GAAG,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,EAC1B,MAAM,CAAC,CAAC;aACf;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CACJ,CAAC;IACN,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,OAAiB;QAChC,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,SAAS,EAAE;YAC/B,OAAO,CAAC,CAAC,CAAC;SACb;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzF,CAAC;IAEM,iBAAiB,CAAC,IAAoB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,oBAAoB,CAAC,IAAoB;QAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAQ,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,WAAkC;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAEM,eAAe,CAAC,EAAU;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,MAA6B;QACpD,qBAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,mBAAkC,EAAE,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC5G,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,EAAE,CAAC,QAAQ,EAAE;YACb,MAAM;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC7C;QAED,IAAI,UAA6B,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,UAAU,GAAG,oBAAK,CAAC,KAAK,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAC3B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,GAAG,EACT,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,cAAc,EACzB,KAAK,EACL,MAAM,CAAC,CAAC;QAEZ,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,MAA6B;QACtD,qBAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,qBAAoC,EAAE,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChH,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,UAA6B,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,UAAU,GAAG,oBAAK,CAAC,KAAK,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,SAAS,CAAC,aAAa,CACxB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,GAAG,EACT,EAAE,CAAC,KAAK,EACR,EAAE,CAAC,WAAW,EACd,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,cAAc,EACzB,MAAM,CAAC,CAAC;QAEZ,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,MAA6B;QAC/C,qBAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,mBAAkC,EAAE,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC5G,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,QAAgC,CAAC;QACrC,IAAI,EAAE,CAAC,GAAG,EAAE;YACR,QAAQ,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3C;aAAM,IAAI,EAAE,CAAC,QAAQ,EAAE;YACpB,IAAI,KAAK,CAAC,GAAG,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC1C,uDAAuD;gBACvD,EAAE;gBACF,IAAI,UAAU,CAAC,cAAc,KAAK,oCAAwB,EAAE;oBACxD,IAAI,CAAC,SAAS,CAAC,eAAgB,CAAC,OAAO,CACnC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAC9D,CAAC;iBACL;gBACD,OAAO,IAAI,CAAC;aACf;YACD,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAClC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,EACzC,EAAE,CAAC,QAAQ,CAAC,CAAC;SACpB;QAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,UAA6B,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,UAAU,GAAG,oBAAK,CAAC,KAAK,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,SAAS,CAAC,cAAc,CACzB,KAAK,CAAC,KAAK,EACX,QAAQ,EACR,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,cAAc,EACzB,MAAM,CAAC,CAAC;QAEZ,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CACpB,MAA6B,EAC7B,UAAwC,EACxC,KAA6B,EAC7B,UAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAC1B,IAAI,UAAU,EAAE;gBACZ,IAAI,CAAC,SAAS,IAAI,+BAAmB,CAAC,UAAU,CAAC,CAAC;gBAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;aACnB;SACJ;aAAM;YACH,qBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,cAAc,EAC1E,KAAK,CAAC,6EAA6E,CAAC,CAAC;YACzF,qBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAC3F,KAAK,CAAC,2EAA2E,CAAC,CAAC;YACvF,IAAI,UAAU,EAAE;gBACZ,IAAI,CAAC,SAAS,IAAI,+BAAmB,CAAC,UAAU,CAAC,CAAC;gBAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;aAC9E;SACJ;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;YAChF,OAAO,CAAC,GAAG,CACP,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,GAAG;gBAChE,OAAO,UAAU,CAAC,cAAc,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,gBAAgB,GAAG;gBACvF,SAAS,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,GAAG,WAAW,UAAU,CAAC,uBAAuB,GAAG;gBACrF,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;SACrC;IACL,CAAC;IAED;;;;OAIG;IACK,eAAe,CACnB,EAAiF,EACjF,UAAwC;QACxC,IAAI,KAAK,GAAuB,EAAE,CAAC,IAAI,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS,IAAI,EAAE,CAAC,YAAY,EAAE;YACxC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CACrC,EAAE,CAAC,YAAY,EACf,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC5B;QAED,IAAI,GAAG,GAAuB,EAAE,CAAC,IAAI,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,YAAY,EAAE;YACtC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CACnC,EAAE,CAAC,YAAY,EACf,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC5B;QAED,uBAAuB;QACvB,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAEhC,MAAM,gBAAgB,GAAa,EAAE,CAAC;YAEtC,0BAA0B;YAC1B,EAAE;YACF,IAAI,KAAK,KAAK,SAAS;mBAChB,KAAK,GAAG,CAAC;mBACT,KAAK,GAAG,MAAM;mBACd,KAAK,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,mBAAkC,EAAE;gBAClE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAClC;YACD,gDAAgD;YAChD,EAAE;YACF,IAAI,EAAE,CAAC,IAAI,mBAAkC,IAAI,GAAG,KAAK,SAAS,EAAE;gBAChE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,KAAM,EAAE;oBACpC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAChC;aACJ;YAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,IAAI,8BAAY,CAClB,kBAAkB,EAClB;oBACI,UAAU,EAAE,IAAI;oBAChB,GAAG;oBACH,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,EAAE;oBAC7C,MAAM;oBACN,MAAM,EAAE,EAAE,CAAC,IAAI;oBACf,cAAc,EAAE,EAAE,CAAC,YAAY,KAAK,SAAS;oBAC7C,MAAM,EAAE,EAAE,CAAC,IAAI;oBACf,cAAc,EAAE,EAAE,CAAC,YAAY,KAAK,SAAS;oBAC7C,MAAM,EAAE,EAAE,CAAC,IAAI;oBACf,KAAK;iBACR,CACJ,CAAC;aACL;SACJ;QAED,yEAAyE;QACzE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAmB,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,MAA6B;QACvD,2DAA2D;QAC3D,kDAAkD;QAClD,EAAE;QACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO;gBACH,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,uBAAuB,EAAE,SAAS,CAAC,UAAU;gBAC7C,cAAc,EAAE,IAAI,CAAC,sBAAsB,EAAE;aAChD,CAAC;SACL;aAAM;YACH,OAAO;gBACH,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;gBACjE,uBAAuB,EAAE,MAAM,CAAC,gBAAgB,CAAC,uBAAuB;gBACxE,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC,cAAc;aACzD,CAAC;SACL;IACL,CAAC;IAED;;;;OAIG;IACK,IAAI,CAAC,KAAoB,EAAE,QAAgB,EAAE,UAAwC;QACzF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CACrC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,QAAQ,EACnB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACvB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAEO,iBAAiB,CAAC,MAA6B;QACnD,MAAM,KAAK,GAAG,CAAC,WAAkC,EAAE,EAAE;;YACjD,IAAI,KAAwB,CAAC;YAC7B,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,KAAK,GAAG,oBAAK,CAAC,KAAK,EAAE,CAAC;aACzB;YAED,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,qBAAoC,EAAE;gBACzD,IAAI,WAAW,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE;oBACjF,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,gBAAiB,CAAC,CAAC;iBAC/E;aACJ;YAED,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,SAAS,IAAI,+BAAmB,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;aAC9E;YAED,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,GAAG;oBACxE,aAAa,MAAA,WAAW,CAAC,gBAAgB,0CAAE,cAAc,EAAE,CAAC,CAAC;aACpE;QACL,CAAC,CAAC;QAEF,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,kBAAiC,EAAE;YACjD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;gBAClC,KAAK,CAAC;oBACF,OAAO,EAAE,MAAM,CAAC,EAAE;oBAClB,EAAE,EAAE,QAAQ;oBACZ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;iBAC5C,CAAC,CAAC;aACN;SACJ;aAAM;YACH,KAAK,CAAC,MAAM,CAAC,CAAC;SACjB;IACL,CAAC;IAED,wFAAwF;IAExF,iBAAiB;QACb,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzE,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,qBAAqB,CAAC,YAAoB;QACtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACzC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;SACtC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IACD,gBAAgB,CAAC,YAAoB;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,IAAI,CAAC;IACxD,CAAC;IACD,eAAe,CAAC,aAAqB;QACjC,IAAI,aAAa,IAAI,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SAC/C;aACI;YACD,OAAO,UAAU,CAAC;SACrB;IACL,CAAC;IACD,eAAe,CAAC,YAAoB;QAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACI,yBAAyB,CAAC,OAAiB,EAAE,QAAgB;QAChE,qBAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC5G,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB;;;;;;;UAOE;QACF,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YACxD,uFAAuF;YACvF,IAAI,GAAG,KAAK,OAAO,EAAE;gBACjB,OAAO,KAAK,CAAC;aAChB;YAED,sFAAsF;YACtF,wCAAwC;YACxC,EAAE;YACF,qFAAqF;YACrF,6EAA6E;YAC7E,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAgB,cAAc;mBACnF,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,eAAgB,GAAG,QAAQ,CAAC,CAAK,cAAc;cACzF;gBACE,eAAe,IAAI,GAAG,CAAC,YAAY,CAAC;aACvC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IAC3B,CAAC;IAEO,sBAAsB,CAC1B,OAA8B,EAC9B,YAA0B;;QAC1B,qBAAM,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9D,MAAM,kBAAkB,SAAG,IAAI,CAAC,SAAS,CAAC,eAAe,0CAAE,OAAO,EAAE,CAAC;QACrE,qBAAM,CAAC,YAAY,KAAK,kBAAkB,EACtC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAEzE,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,gGAAgG;QAChG,gGAAgG;QAChG,4FAA4F;QAC5F,mGAAmG;QACnG,kDAAkD;QAClD,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACxF,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACxD,qBAAM,CAAC,YAAY,KAAK,eAAe,EACnC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACtE,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvF,IAAI,KAAwC,CAAC;YAC7C,QAAQ,OAAO,CAAC,IAAI,EAAE;gBAClB;oBACI,qBAAM,CAAC,OAAA,OAAO,CAAC,eAAe,0CAAE,oBAAoB,QAAO,IAAI,EAC3D,KAAK,CAAC,yCAAyC,CAAC,CAAC;oBACrD,KAAK,GAAG,SAAS,CAAC,qBAAqB,CACnC,eAAe,EACf,eAAe,GAAG,OAAO,CAAC,YAAY,EACtC,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,CAAC,CAAC;oBACzB,MAAM;gBAEV;oBACI,qBAAM,CAAC,OAAO,CAAC,GAAG,KAAK,oCAAwB,EAC3C,KAAK,CAAC,oDAAoD,CAAC,CAAC;oBAChE,KAAK,GAAG,SAAS,CAAC,qBAAqB,CACnC,eAAe,EACf,OAAO,CAAC,CAAC;oBACb,MAAM;gBAEV;oBACI,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;wBACvC,KAAK,GAAG,SAAS,CAAC,mBAAmB,CACjC,eAAe,EACf,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;qBAC/C;oBACD,MAAM;gBAEV;oBACI,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;aAC1C;YAED,IAAI,KAAK,EAAE;gBACP,MAAM,eAAe,GAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACxF,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,eAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACzD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;SACJ;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,aAAa,CAAC,MAA6B;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACpC,IAAI,CAAC,qBAAqB,CAAC,GAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,QAAQ,EAAE,CAAC,IAAI,EAAE;YACb;gBACI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC3B,MAAM;YACV;gBACI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YACV;gBACI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAClC,MAAM;YACV,kBAAiC,CAAC,CAAC;gBAC/B,KAAK,MAAM,QAAQ,IAAI,EAAE,CAAC,GAAG,EAAE;oBAC3B,IAAI,CAAC,aAAa,CAAC;wBACf,EAAE,EAAE,QAAQ;wBACZ,OAAO,EAAE,EAAE;wBACX,gBAAgB,EAAE,GAAG;qBACxB,CAAC,CAAC;iBACN;gBACD,MAAM;aACT;YACD;gBACI,MAAM;SACb;IACL,CAAC;IAEM,QAAQ,CAAC,GAA8B;;QAC1C,iCAAiC;QACjC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,gCAAgC;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,kCAAW,CAAC,SAAS,EAAE;YACpC,MAAM,MAAM,GAA0B;gBAClC,EAAE,EAAE,GAAG,CAAC,QAA4B;gBACpC,gBAAgB,EAAE,GAAG;aACxB,CAAC;YACF,IAAI,OAAA,MAAM,CAAC,gBAAgB,0CAAE,QAAQ,MAAK,IAAI,CAAC,YAAY,EAAE;gBACzD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;aAClC;iBACI;gBACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAC9B;SACJ;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC;IAEM,gBAAgB,CAAC,GAAW,EAAE,GAAW;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACtD,uGAAuG;QACvG,qBAAM,CAAC,YAAY,CAAC,UAAU,IAAI,GAAG,EACjC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACjF,YAAY,CAAC,UAAU,GAAG,GAAG,CAAC;QAC9B,qBAAM,CAAC,GAAG,IAAI,GAAG,EAAE,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACI,2BAA2B,CAC9B,oBAA4B,EAC5B,kBAA0B,EAC1B,cAAsB;QACtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAC7C,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CACtB,OAAyB,EACzB,YAA2C;QAE3C,MAAM,KAAK,GAAG,oBAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI;YACA,MAAM,MAAM,GAA4B,EAAE,CAAC;YAE3C,IAAI,OAAO,CAAC,IAAI,kBAAiC,EAAE;gBAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;oBAC7B,qBAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAC7C,KAAK,CAAC,oFAAoF,CAAC,CAAC;oBAEhG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACzC,MAAM,CAAC,IAAI,CACP,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACxE;iBACJ;qBAAM;oBACH,mFAAmF;oBACnF,8EAA8E;oBAC9E,qBAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAC3B,KAAK,CAAC,oFAAoF,CAAC,CAAC;oBAChG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;iBAC7E;aACJ;iBAAM;gBACH,qBAAM,CAAE,OAAO,CAAC,IAAY,kBAAiC,EACzD,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACpD,qBAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAC/B,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBAChE,MAAM,CAAC,IAAI,CACP,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;aAC9D;YACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAC;SAC/E;gBAAS;YACN,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC7B,SAAS,EAAE,+BAA+B;gBAC1C,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE,+BAAmB,CAAC,KAAK,CAAC;aACvC,CAAC,CAAC;SACN;IACL,CAAC;IAEM,gBAAgB;QACnB,OAAO,IAAI,iCAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,6EAA6E;IAC7E,oEAAoE;IAC7D,QAAQ,CACX,OAA+B,EAC/B,MAAoB,EACpB,UAA4B,EAC5B,WAAwC;;QAExC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC;QAElD,gEAAgE;QAChE,gEAAgE;QAChE,qDAAqD;QAErD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAE/D,yFAAyF;QACzF,yCAAyC;QACzC,qBAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,MAAM,EAC3C,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAE5E,4EAA4E;QAC5E,oEAAoE;QACpE,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,OAAO,0CAAE,0BAA0B,MAAK,IAAI,EAAE;YAC7D,qBAAM,CACF,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EACrD,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,IAAI,uBAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;SACxC;aAAM;YACH,MAAM,IAAI,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SACrD;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CACb,OAA+B,EAC/B,OAA+B,EAC/B,UAA4B;QAE5B,MAAM,MAAM,GAAG,IAAI,+BAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE1F,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,QAAgB,EAAE,WAAqB;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClG,CAAC;IAEO,sBAAsB;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,aAAa,EAAE;YACzB,OAAO,oCAAwB,CAAC;SACnC;aACI;YACD,OAAO,mCAAuB,CAAC;SAClC;IACL,CAAC;IACD,gBAAgB,CAAC,OAA+B;QAC5C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE;YAC1B,MAAM,MAAM,GAA0B;gBAClC,EAAE;gBACF,OAAO;aACV,CAAC;YACF,QAAQ,EAAE,CAAC,IAAI,EAAE;gBACb;oBACI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAC3B,MAAM;gBACV;oBACI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM;gBACV;oBACI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBAChC,MAAM;gBACV;oBACI,MAAM;aACb;SACJ;IACL,CAAC;IACD,uBAAuB,CAAC,EAA6B,EAAE,GAA8B;QACjF,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAa,CAAC,EAAG,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,aAAa,EAAE;YACf,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;SACpF;QACD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,aAAc,CAAC,QAAQ,CAAC,aAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,YAAY,CAAC,MAAc;QACvB,IAAI,KAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,KAAK,GAAG,oBAAK,CAAC,KAAK,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE;YACP,MAAM,OAAO,GAAG,+BAAmB,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC;YAChC,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;gBAC9B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;aAChC;SACJ;IACL,CAAC;IAED,oBAAoB,CAAqB,GAAW;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAI,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjG,CAAC;IAED,uBAAuB,CAAC,GAAW;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;SAC1H;QAED,IAAI,oBAAwD,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,IAAI,GAAG,EAAE;YACL,oBAAoB,GAAG,GAAG,CAAC,UAAU,CAAC;SACzC;QACD,OAAO,oBAAoB,CAAC;IAChC,CAAC;IACD,yBAAyB,CAAC,GAAW;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;SAC5H;QAED,IAAI,QAA4B,CAAC;QACjC,IAAI,WAA+B,CAAC;QAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,IAAI,GAAG,EAAE;YACL,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,WAAW,GAAG,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC;SAC7C;QACD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACrC,CAAC;IACD,aAAa;QACT,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,WAAW;QACP,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,SAAS,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7C,0BAA0B,CAAC,YAAgC,EAAE,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC;QACnF,4DAA4D;QAC5D,kEAAkE;QAClE,yDAAyD;QACzD,uEAAuE;QACvE,YAAY;QACZ,IAAI,YAAY,KAAK,SAAS,EAAE;YAC5B,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gBACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;aACrE;iBAAM;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,IAAI,CAAC;gBAC5D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;aACjD;SACJ;IACL,CAAC;IAED,QAAQ,CAAC,QAAgB,EAAE,SAAiB,EAAE,SAAS,GAAG,IAAI;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7E,CAAC;CACJ;AA3iCD,wBA2iCC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { IFluidHandle, IFluidSerializer } from \"@fluidframework/core-interfaces\";\nimport { ISequencedDocumentMessage, MessageType } from \"@fluidframework/protocol-definitions\";\nimport { IFluidDataStoreRuntime, IChannelStorageService } from \"@fluidframework/datastore-definitions\";\nimport { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport { assert, Trace } from \"@fluidframework/common-utils\";\nimport { LoggingError } from \"@fluidframework/telemetry-utils\";\nimport { IIntegerRange } from \"./base\";\nimport * as Collections from \"./collections\";\nimport { UnassignedSequenceNumber, UniversalSequenceNumber } from \"./constants\";\nimport { LocalReference } from \"./localReference\";\nimport {\n compareStrings,\n elapsedMicroseconds,\n IConsensusInfo,\n ISegment,\n ISegmentAction,\n Marker,\n MergeTree,\n RegisterCollection,\n SegmentGroup,\n} from \"./mergeTree\";\nimport { MergeTreeDeltaCallback } from \"./mergeTreeDeltaCallback\";\nimport * as OpBuilder from \"./opBuilder\";\nimport * as ops from \"./ops\";\nimport * as Properties from \"./properties\";\nimport { SnapshotLegacy } from \"./snapshotlegacy\";\nimport { SnapshotLoader } from \"./snapshotLoader\";\nimport { MergeTreeTextHelper } from \"./textSegment\";\nimport { SnapshotV1 } from \"./snapshotV1\";\nimport {\n IMergeTreeClientSequenceArgs,\n IMergeTreeDeltaOpArgs,\n MergeTreeMaintenanceCallback,\n ReferencePosition,\n} from \"./index\";\n\nexport class Client {\n public verboseOps = false;\n public noVerboseRemoteAnnotate = false;\n public measureOps = false;\n public registerCollection = new RegisterCollection();\n public accumTime = 0;\n public localTime = 0;\n public localOps = 0;\n public accumWindowTime = 0;\n public accumWindow = 0;\n public accumOps = 0;\n public maxWindowTime = 0;\n public longClientId: string | undefined;\n\n get mergeTreeDeltaCallback(): MergeTreeDeltaCallback | undefined { return this.mergeTree.mergeTreeDeltaCallback; }\n set mergeTreeDeltaCallback(callback: MergeTreeDeltaCallback | undefined) {\n this.mergeTree.mergeTreeDeltaCallback = callback;\n }\n\n get mergeTreeMaintenanceCallback(): MergeTreeMaintenanceCallback | undefined {\n return this.mergeTree.mergeTreeMaintenanceCallback;\n }\n\n set mergeTreeMaintenanceCallback(callback: MergeTreeMaintenanceCallback | undefined) {\n this.mergeTree.mergeTreeMaintenanceCallback = callback;\n }\n\n protected readonly mergeTree: MergeTree;\n\n private readonly clientNameToIds = new Collections.RedBlackTree<string, number>(compareStrings);\n private readonly shortClientIdMap: string[] = [];\n private readonly pendingConsensus = new Map<string, IConsensusInfo>();\n\n constructor(\n // Passing this callback would be unnecessary if Client were merged with SharedSegmentSequence\n public readonly specToSegment: (spec: ops.IJSONSegment) => ISegment,\n public readonly logger: ITelemetryLogger,\n options?: Properties.PropertySet,\n ) {\n this.mergeTree = new MergeTree(options);\n this.mergeTree.getLongClientId = (id) => this.getLongClientId(id);\n }\n\n /**\n * The merge tree maintains a queue of segment groups for each local operation.\n * These segment groups track segments modified by an operation.\n * This method peeks the tail of that queue, and returns the segments groups there.\n * It is used to get the segment group(s) for the previous operations.\n * @param count - The number segment groups to get peek from the tail of the queue. Default 1.\n */\n public peekPendingSegmentGroups(count: number = 1) {\n if (count === 1) {\n return this.mergeTree.pendingSegments?.last();\n }\n let taken = 0;\n return this.mergeTree.pendingSegments?.some(() => {\n if (taken < count) {\n taken++;\n return true;\n }\n return false;\n }, true);\n }\n\n /**\n * Annotate a maker and call the callback on concensus.\n * @param marker - The marker to annotate\n * @param props - The properties to annotate the marker with\n * @param consensusCallback - The callback called when consensus is reached\n * @returns The annotate op if valid, otherwise undefined\n */\n public annotateMarkerNotifyConsensus(\n marker: Marker,\n props: Properties.PropertySet,\n consensusCallback: (m: Marker) => void): ops.IMergeTreeAnnotateMsg | undefined {\n const combiningOp: ops.ICombiningOp = {\n name: \"consensus\",\n };\n\n const annotateOp =\n this.annotateMarker(marker, props, combiningOp);\n\n if (annotateOp) {\n const consensusInfo: IConsensusInfo = {\n callback: consensusCallback,\n marker,\n };\n this.pendingConsensus.set(marker.getId()!, consensusInfo);\n return annotateOp;\n } else {\n return undefined;\n }\n }\n /**\n * Annotates the markers with the provided properties\n * @param marker - The marker to annotate\n * @param props - The properties to annotate the marker with\n * @param combiningOp - Optional. Specifies how to combine values for the property, such as \"incr\" for increment.\n * @returns The annotate op if valid, otherwise undefined\n */\n public annotateMarker(\n marker: Marker,\n props: Properties.PropertySet,\n combiningOp: ops.ICombiningOp): ops.IMergeTreeAnnotateMsg | undefined {\n const annotateOp =\n OpBuilder.createAnnotateMarkerOp(marker, props, combiningOp)!;\n\n if (this.applyAnnotateRangeOp({ op: annotateOp })) {\n return annotateOp;\n } else {\n return undefined;\n }\n }\n /**\n * Annotates the range with the provided properties\n * @param start - The inclusive start position of the range to annotate\n * @param end - The exclusive end position of the range to annotate\n * @param props - The properties to annotate the range with\n * @param combiningOp - Specifies how to combine values for the property, such as \"incr\" for increment.\n * @returns The annotate op if valid, otherwise undefined\n */\n public annotateRangeLocal(\n start: number,\n end: number,\n props: Properties.PropertySet,\n combiningOp: ops.ICombiningOp | undefined): ops.IMergeTreeAnnotateMsg | undefined {\n const annotateOp = OpBuilder.createAnnotateRangeOp(\n start,\n end,\n props,\n combiningOp);\n\n if (this.applyAnnotateRangeOp({ op: annotateOp })) {\n return annotateOp;\n }\n return undefined;\n }\n\n /**\n * Removes the range and puts the content of the removed range in a register\n * if a register name is provided\n *\n * @param start - The inclusive start of the range to remove\n * @param end - The exclusive end of the range to remove\n * @param register - Optional. The name of the register to store the removed range in\n */\n public removeRangeLocal(start: number, end: number, register?: string) {\n const removeOp = OpBuilder.createRemoveRangeOp(start, end, register);\n\n if (this.applyRemoveRangeOp({ op: removeOp })) {\n return removeOp;\n }\n return undefined;\n }\n\n /**\n * @param pos - The position to insert the segment at\n * @param segment - The segment to insert\n */\n public insertSegmentLocal(pos: number, segment: ISegment): ops.IMergeTreeInsertMsg | undefined {\n if (segment.cachedLength <= 0) {\n return undefined;\n }\n const insertOp = OpBuilder.createInsertSegmentOp(pos, segment);\n if (this.applyInsertOp({ op: insertOp })) {\n return insertOp;\n }\n return undefined;\n }\n\n /**\n * @param refPos - The reference position to insert the segment at\n * @param segment - The segment to insert\n */\n public insertAtReferencePositionLocal(\n refPos: ReferencePosition,\n segment: ISegment,\n ): ops.IMergeTreeInsertMsg | undefined {\n const pos = this.mergeTree.referencePositionToLocalPosition(\n refPos,\n this.getCurrentSeq(),\n this.getClientId());\n\n if (pos === LocalReference.DetachedPosition) {\n return undefined;\n }\n const op = OpBuilder.createInsertSegmentOp(\n pos,\n segment);\n\n const opArgs = { op };\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.insertAtReferencePosition(\n refPos,\n segment,\n opArgs);\n\n this.completeAndLogOp(\n opArgs,\n this.getClientSequenceArgs(opArgs),\n { start: op.pos1 },\n traceStart);\n\n return op;\n }\n\n /**\n * @param pos - The position to insert the register contents at\n * @param register - The name of the register to insert the value of\n */\n public pasteLocal(pos: number, register: string) {\n const insertOp = OpBuilder.createInsertFromRegisterOp(pos, register);\n if (this.applyInsertOp({ op: insertOp })) {\n return insertOp;\n }\n return undefined;\n }\n\n /**\n *\n * @param start - he inclusive start of the range to copy into the register\n * @param end - The exclusive end of the range to copy into the register\n * @param register - The name of the register to insert the range contents into\n */\n public copyLocal(start: number, end: number, register: string) {\n const insertOp = OpBuilder.createInsertToRegisterOp(start, end, register);\n if (this.applyInsertOp({ op: insertOp })) {\n return insertOp;\n }\n return undefined;\n }\n\n public walkSegments<TClientData>(handler: ISegmentAction<TClientData>,\n start: number | undefined, end: number | undefined, accum: TClientData, splitRange?: boolean): void;\n public walkSegments<undefined>(handler: ISegmentAction<undefined>,\n start?: number, end?: number, accum?: undefined, splitRange?: boolean): void;\n public walkSegments<TClientData>(\n handler: ISegmentAction<TClientData>,\n start: number | undefined, end: number | undefined, accum: TClientData, splitRange: boolean = false) {\n this.mergeTree.mapRange(\n {\n leaf: handler,\n },\n this.getCurrentSeq(), this.getClientId(),\n accum, start, end, splitRange);\n }\n\n /**\n * Serializes the data required for garbage collection. The IFluidHandles stored in all segements that haven't\n * been removed represent routes to other objects. We serialize the data in these segments using the passed in\n * serializer which keeps track of all serialized handles.\n */\n public serializeGCData(handle: IFluidHandle, handleCollectingSerializer: IFluidSerializer): void {\n this.mergeTree.walkAllSegments(\n this.mergeTree.root,\n (seg) => {\n // Only serialize segments that have not been removed.\n if (seg.removedSeq === undefined) {\n handleCollectingSerializer.stringify(\n seg.clone().toJSONObject(),\n handle);\n }\n return true;\n },\n );\n }\n\n public getCollabWindow() {\n return this.mergeTree.getCollabWindow();\n }\n\n /**\n * Returns the current position of a segment, and -1 if the segment\n * does not exist in this merge tree\n * @param segment - The segment to get the position of\n */\n public getPosition(segment: ISegment): number {\n if (segment?.parent === undefined) {\n return -1;\n }\n return this.mergeTree.getPosition(segment, this.getCurrentSeq(), this.getClientId());\n }\n\n public addLocalReference(lref: LocalReference) {\n return this.mergeTree.addLocalReference(lref);\n }\n\n public removeLocalReference(lref: LocalReference) {\n return this.mergeTree.removeLocalReference(lref.segment!, lref);\n }\n\n /**\n * Given a position specified relative to a marker id, lookup the marker\n * and convert the position to a character position.\n * @param relativePos - Id of marker (may be indirect) and whether position is before or after marker.\n */\n public posFromRelativePos(relativePos: ops.IRelativePosition) {\n return this.mergeTree.posFromRelativePos(relativePos);\n }\n\n public getMarkerFromId(id: string) {\n return this.mergeTree.getMarkerFromId(id);\n }\n\n /**\n * Performs the remove based on the provided op\n * @param opArgs - The ops args for the op\n * @returns True if the remove was applied. False if it could not be.\n */\n private applyRemoveRangeOp(opArgs: IMergeTreeDeltaOpArgs): boolean {\n assert(opArgs.op.type === ops.MergeTreeDeltaType.REMOVE, 0x02d /* \"Unexpected op type on range remove!\" */);\n const op = opArgs.op;\n const clientArgs = this.getClientSequenceArgs(opArgs);\n const range = this.getValidOpRange(op, clientArgs);\n if (!range) {\n return false;\n }\n\n if (op.register) {\n // Cut\n this.copy(range, op.register, clientArgs);\n }\n\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.markRangeRemoved(\n range.start,\n range.end,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n clientArgs.sequenceNumber,\n false,\n opArgs);\n\n this.completeAndLogOp(opArgs, clientArgs, range, traceStart);\n\n return true;\n }\n\n /**\n * Performs the annotate based on the provided op\n * @param opArgs - The ops args for the op\n * @returns True if the annotate was applied. False if it could not be.\n */\n private applyAnnotateRangeOp(opArgs: IMergeTreeDeltaOpArgs): boolean {\n assert(opArgs.op.type === ops.MergeTreeDeltaType.ANNOTATE, 0x02e /* \"Unexpected op type on range annotate!\" */);\n const op = opArgs.op;\n const clientArgs = this.getClientSequenceArgs(opArgs);\n const range = this.getValidOpRange(op, clientArgs);\n\n if (!range) {\n return false;\n }\n\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.annotateRange(\n range.start,\n range.end,\n op.props,\n op.combiningOp,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n clientArgs.sequenceNumber,\n opArgs);\n\n this.completeAndLogOp(opArgs, clientArgs, range, traceStart);\n\n return true;\n }\n\n /**\n * Performs the insert based on the provided op\n * @param opArgs - The ops args for the op\n * @returns True if the insert was applied. False if it could not be.\n */\n private applyInsertOp(opArgs: IMergeTreeDeltaOpArgs): boolean {\n assert(opArgs.op.type === ops.MergeTreeDeltaType.INSERT, 0x02f /* \"Unexpected op type on range insert!\" */);\n const op = opArgs.op;\n const clientArgs = this.getClientSequenceArgs(opArgs);\n const range = this.getValidOpRange(op, clientArgs);\n\n if (!range) {\n return false;\n }\n\n let segments: ISegment[] | undefined;\n if (op.seg) {\n segments = [this.specToSegment(op.seg)];\n } else if (op.register) {\n if (range.end) {\n this.copy(range, op.register, clientArgs);\n // Enqueue an empty segment group to be dequeued on ack\n //\n if (clientArgs.sequenceNumber === UnassignedSequenceNumber) {\n this.mergeTree.pendingSegments!.enqueue(\n { segments: [], localSeq: this.getCollabWindow().localSeq },\n );\n }\n return true;\n }\n segments = this.registerCollection.get(\n this.getLongClientId(clientArgs.clientId),\n op.register);\n }\n\n if (!segments || segments.length === 0) {\n return false;\n }\n\n let traceStart: Trace | undefined;\n if (this.measureOps) {\n traceStart = Trace.start();\n }\n\n this.mergeTree.insertSegments(\n range.start,\n segments,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n clientArgs.sequenceNumber,\n opArgs);\n\n this.completeAndLogOp(opArgs, clientArgs, range, traceStart);\n\n return true;\n }\n\n /**\n *\n * @param opArgs - The op args of the op to complete\n * @param clientArgs - The client args for the op\n * @param range - The range the op applied to\n * @param clockStart - Optional. The clock start if timing data should be updated.\n */\n private completeAndLogOp(\n opArgs: IMergeTreeDeltaOpArgs,\n clientArgs: IMergeTreeClientSequenceArgs,\n range: Partial<IIntegerRange>,\n traceStart?: Trace) {\n if (!opArgs.sequencedMessage) {\n if (traceStart) {\n this.localTime += elapsedMicroseconds(traceStart);\n this.localOps++;\n }\n } else {\n assert(this.mergeTree.getCollabWindow().currentSeq < clientArgs.sequenceNumber,\n 0x030 /* \"Incoming remote op sequence# <= local collabWindow's currentSequence#\" */);\n assert(this.mergeTree.getCollabWindow().minSeq <= opArgs.sequencedMessage.minimumSequenceNumber,\n 0x031 /* \"Incoming remote op minSequence# < local collabWindow's minSequence#\" */);\n if (traceStart) {\n this.accumTime += elapsedMicroseconds(traceStart);\n this.accumOps++;\n this.accumWindow += (this.getCurrentSeq() - this.getCollabWindow().minSeq);\n }\n }\n if (this.verboseOps && (!opArgs.sequencedMessage || !this.noVerboseRemoteAnnotate)) {\n console.log(\n `@cli ${this.getLongClientId(this.getCollabWindow().clientId)} ` +\n `seq ${clientArgs.sequenceNumber} ${opArgs.op.type} local ${!opArgs.sequencedMessage} ` +\n `start ${range.start} end ${range.end} refseq ${clientArgs.referenceSequenceNumber} ` +\n `cli ${clientArgs.clientId}`);\n }\n }\n\n /**\n * Returns a valid range for the op, or undefined\n * @param op - The op to generate the range for\n * @param clientArgs - The client args for the op\n */\n private getValidOpRange(\n op: ops.IMergeTreeAnnotateMsg | ops.IMergeTreeInsertMsg | ops.IMergeTreeRemoveMsg,\n clientArgs: IMergeTreeClientSequenceArgs): IIntegerRange | undefined {\n let start: number | undefined = op.pos1;\n if (start === undefined && op.relativePos1) {\n start = this.mergeTree.posFromRelativePos(\n op.relativePos1,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId);\n }\n\n let end: number | undefined = op.pos2;\n if (end === undefined && op.relativePos2) {\n end = this.mergeTree.posFromRelativePos(\n op.relativePos2,\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId);\n }\n\n // Validate if local op\n if (clientArgs.clientId === this.getClientId()) {\n const length = this.getLength();\n\n const invalidPositions: string[] = [];\n\n // Validate start position\n //\n if (start === undefined\n || start < 0\n || start > length\n || start === length && op.type !== ops.MergeTreeDeltaType.INSERT) {\n invalidPositions.push(\"start\");\n }\n // Validate end if not insert, or insert has end\n //\n if (op.type !== ops.MergeTreeDeltaType.INSERT || end !== undefined) {\n if (end === undefined || end <= start!) {\n invalidPositions.push(\"end\");\n }\n }\n\n if (invalidPositions.length > 0) {\n throw new LoggingError(\n \"RangeOutOfBounds\",\n {\n usageError: true,\n end,\n invalidPositions: invalidPositions.toString(),\n length,\n opPos1: op.pos1,\n opPos1Relative: op.relativePos1 !== undefined,\n opPos2: op.pos2,\n opPos2Relative: op.relativePos2 !== undefined,\n opType: op.type,\n start,\n },\n );\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return { start, end } as IIntegerRange;\n }\n\n /**\n * Gets the client args from the op if remote, otherwise uses the local clients info\n * @param opArgs - The op arg to get the client sequence args for\n */\n private getClientSequenceArgs(opArgs: IMergeTreeDeltaOpArgs): IMergeTreeClientSequenceArgs {\n // If there this no sequenced message, then the op is local\n // and unacked, so use this clients sequenced args\n //\n if (!opArgs.sequencedMessage) {\n const segWindow = this.getCollabWindow();\n return {\n clientId: segWindow.clientId,\n referenceSequenceNumber: segWindow.currentSeq,\n sequenceNumber: this.getLocalSequenceNumber(),\n };\n } else {\n return {\n clientId: this.getShortClientId(opArgs.sequencedMessage.clientId),\n referenceSequenceNumber: opArgs.sequencedMessage.referenceSequenceNumber,\n sequenceNumber: opArgs.sequencedMessage.sequenceNumber,\n };\n }\n }\n\n /**\n * @param range - The range to copy into the register\n * @param register - The name of the register to copy to range into\n * @param clientArgs - The client args to use when evaluating the range for copying\n */\n private copy(range: IIntegerRange, register: string, clientArgs: IMergeTreeClientSequenceArgs) {\n const segs = this.mergeTree.cloneSegments(\n clientArgs.referenceSequenceNumber,\n clientArgs.clientId,\n range.start,\n range.end);\n this.registerCollection.set(\n this.getLongClientId(clientArgs.clientId), register, segs);\n }\n\n private ackPendingSegment(opArgs: IMergeTreeDeltaOpArgs) {\n const ackOp = (deltaOpArgs: IMergeTreeDeltaOpArgs) => {\n let trace: Trace | undefined;\n if (this.measureOps) {\n trace = Trace.start();\n }\n\n this.mergeTree.ackPendingSegment(deltaOpArgs, this.verboseOps);\n if (deltaOpArgs.op.type === ops.MergeTreeDeltaType.ANNOTATE) {\n if (deltaOpArgs.op.combiningOp && (deltaOpArgs.op.combiningOp.name === \"consensus\")) {\n this.updateConsensusProperty(deltaOpArgs.op, deltaOpArgs.sequencedMessage!);\n }\n }\n\n if (trace) {\n this.accumTime += elapsedMicroseconds(trace);\n this.accumOps++;\n this.accumWindow += (this.getCurrentSeq() - this.getCollabWindow().minSeq);\n }\n\n if (this.verboseOps) {\n console.log(`@cli ${this.getLongClientId(this.getCollabWindow().clientId)} ` +\n `ack seq # ${deltaOpArgs.sequencedMessage?.sequenceNumber}`);\n }\n };\n\n if (opArgs.op.type === ops.MergeTreeDeltaType.GROUP) {\n for (const memberOp of opArgs.op.ops) {\n ackOp({\n groupOp: opArgs.op,\n op: memberOp,\n sequencedMessage: opArgs.sequencedMessage,\n });\n }\n } else {\n ackOp(opArgs);\n }\n }\n\n // as functions are modified move them above the eslint-disabled waterline and lint them\n\n cloneFromSegments() {\n const clone = new Client(this.specToSegment, this.logger, this.mergeTree.options);\n const segments: ISegment[] = [];\n const newRoot = this.mergeTree.blockClone(this.mergeTree.root, segments);\n clone.mergeTree.root = newRoot;\n return clone;\n }\n getOrAddShortClientId(longClientId: string) {\n if (!this.clientNameToIds.get(longClientId)) {\n this.addLongClientId(longClientId);\n }\n return this.getShortClientId(longClientId);\n }\n getShortClientId(longClientId: string) {\n return this.clientNameToIds.get(longClientId)!.data;\n }\n getLongClientId(shortClientId: number) {\n if (shortClientId >= 0) {\n return this.shortClientIdMap[shortClientId];\n }\n else {\n return \"original\";\n }\n }\n addLongClientId(longClientId: string) {\n this.clientNameToIds.put(longClientId, this.shortClientIdMap.length);\n this.shortClientIdMap.push(longClientId);\n }\n\n /**\n * During reconnect, we must find the positions to pending segments\n * relative to other pending segments. This methods computes that\n * position relative to a localSeq. Pending segments above the localSeq\n * will be ignored.\n *\n * @param segment - The segment to find the position for\n * @param localSeq - The localSeq to find the position of the segment at\n */\n public findReconnectionPostition(segment: ISegment, localSeq: number) {\n assert(localSeq <= this.mergeTree.collabWindow.localSeq, 0x032 /* \"localSeq greater than collab window\" */);\n let segmentPosition = 0;\n /*\n Walk the segments up to the current segment, and calculate it's\n position taking into account local segments that were modified,\n after the current segment.\n\n TODO: Consider embedding this information into the tree for\n more efficient look up of pending segment positions.\n */\n this.mergeTree.walkAllSegments(this.mergeTree.root, (seg) => {\n // If we've found the desired segment, terminate the walk and return 'segmentPosition'.\n if (seg === segment) {\n return false;\n }\n\n // Otherwise, advance segmentPosition if the segment has been inserted and not removed\n // with respect to the given 'localSeq'.\n //\n // Note that all ACKed / remote ops are applied and we only need concern ourself with\n // determining if locally pending ops fall before/after the given 'localSeq'.\n if ((seg.localSeq === undefined || seg.localSeq <= localSeq) // Is inserted\n && (seg.removedSeq === undefined || seg.localRemovedSeq! > localSeq) // Not removed\n ) {\n segmentPosition += seg.cachedLength;\n }\n\n return true;\n });\n\n return segmentPosition;\n }\n\n private resetPendingDeltaToOps(\n resetOp: ops.IMergeTreeDeltaOp,\n segmentGroup: SegmentGroup): ops.IMergeTreeDeltaOp[] {\n assert(!!segmentGroup, 0x033 /* \"Segment group undefined\" */);\n const NACKedSegmentGroup = this.mergeTree.pendingSegments?.dequeue();\n assert(segmentGroup === NACKedSegmentGroup,\n 0x034 /* \"Segment group not at head of merge tree pending queue\" */);\n\n const opList: ops.IMergeTreeDeltaOp[] = [];\n // We need to sort the segments by ordinal, as the segments are not sorted in the segment group.\n // The reason they need them sorted, as they have the same local sequence number and which means\n // farther segments will take into account nearer segments when calculating their position.\n // By sorting we ensure the nearer segment will be applied and sequenced before the father segments\n // so their recalulated positions will be correct.\n for (const segment of segmentGroup.segments.sort((a, b) => a.ordinal < b.ordinal ? -1 : 1)) {\n const segmentSegGroup = segment.segmentGroups.dequeue();\n assert(segmentGroup === segmentSegGroup,\n 0x035 /* \"Segment group not at head of segment pending queue\" */);\n const segmentPosition = this.findReconnectionPostition(segment, segmentGroup.localSeq);\n let newOp: ops.IMergeTreeDeltaOp | undefined;\n switch (resetOp.type) {\n case ops.MergeTreeDeltaType.ANNOTATE:\n assert(segment.propertyManager?.hasPendingProperties() === true,\n 0x036 /* \"Segment has no pending properties\" */);\n newOp = OpBuilder.createAnnotateRangeOp(\n segmentPosition,\n segmentPosition + segment.cachedLength,\n resetOp.props,\n resetOp.combiningOp);\n break;\n\n case ops.MergeTreeDeltaType.INSERT:\n assert(segment.seq === UnassignedSequenceNumber,\n 0x037 /* \"Segment already has assigned sequence number\" */);\n newOp = OpBuilder.createInsertSegmentOp(\n segmentPosition,\n segment);\n break;\n\n case ops.MergeTreeDeltaType.REMOVE:\n if (segment.localRemovedSeq !== undefined) {\n newOp = OpBuilder.createRemoveRangeOp(\n segmentPosition,\n segmentPosition + segment.cachedLength);\n }\n break;\n\n default:\n throw new Error(`Invalid op type`);\n }\n\n if (newOp) {\n const newSegmentGroup: SegmentGroup = { segments: [], localSeq: segmentGroup.localSeq };\n segment.segmentGroups.enqueue(newSegmentGroup);\n this.mergeTree.pendingSegments!.enqueue(newSegmentGroup);\n opList.push(newOp);\n }\n }\n\n return opList;\n }\n\n private applyRemoteOp(opArgs: IMergeTreeDeltaOpArgs) {\n const op = opArgs.op;\n const msg = opArgs.sequencedMessage;\n this.getOrAddShortClientId(msg!.clientId);\n switch (op.type) {\n case ops.MergeTreeDeltaType.INSERT:\n this.applyInsertOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.REMOVE:\n this.applyRemoveRangeOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.ANNOTATE:\n this.applyAnnotateRangeOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.GROUP: {\n for (const memberOp of op.ops) {\n this.applyRemoteOp({\n op: memberOp,\n groupOp: op,\n sequencedMessage: msg,\n });\n }\n break;\n }\n default:\n break;\n }\n }\n\n public applyMsg(msg: ISequencedDocumentMessage) {\n // Ensure client ID is registered\n this.getOrAddShortClientId(msg.clientId);\n // Apply if an operation message\n if (msg.type === MessageType.Operation) {\n const opArgs: IMergeTreeDeltaOpArgs = {\n op: msg.contents as ops.IMergeTreeOp,\n sequencedMessage: msg,\n };\n if (opArgs.sequencedMessage?.clientId === this.longClientId) {\n this.ackPendingSegment(opArgs);\n }\n else {\n this.applyRemoteOp(opArgs);\n }\n }\n\n this.updateSeqNumbers(msg.minimumSequenceNumber, msg.sequenceNumber);\n }\n\n public updateSeqNumbers(min: number, seq: number) {\n const collabWindow = this.mergeTree.getCollabWindow();\n // Equal is fine here due to SharedSegmentSequence<>.snapshotContent() potentially updating with same #\n assert(collabWindow.currentSeq <= seq,\n 0x038 /* \"Incoming op sequence# < local collabWindow's currentSequence#\" */);\n collabWindow.currentSeq = seq;\n assert(min <= seq, 0x039 /* \"Incoming op sequence# < minSequence#\" */);\n this.updateMinSeq(min);\n }\n\n /**\n * Resolves a remote client's position against the local sequence\n * and returns the remote client's position relative to the local\n * sequence\n * @param remoteClientPosition - The remote client's position to resolve\n * @param remoteClientRefSeq - The reference sequence number of the remote client\n * @param remoteClientId - The client id of the remote client\n */\n public resolveRemoteClientPosition(\n remoteClientPosition: number,\n remoteClientRefSeq: number,\n remoteClientId: string): number | undefined {\n const shortRemoteClientId = this.getOrAddShortClientId(remoteClientId);\n return this.mergeTree.resolveRemoteClientPosition(\n remoteClientPosition,\n remoteClientRefSeq,\n shortRemoteClientId);\n }\n\n /**\n * Given an pending operation and segment group, regenerate the op, so it\n * can be resubmitted\n * @param resetOp - The op to reset\n * @param segmentGroup - The segment group associated with the op\n */\n public regeneratePendingOp(\n resetOp: ops.IMergeTreeOp,\n segmentGroup: SegmentGroup | SegmentGroup[],\n ): ops.IMergeTreeOp {\n const trace = Trace.start();\n try {\n const opList: ops.IMergeTreeDeltaOp[] = [];\n\n if (resetOp.type === ops.MergeTreeDeltaType.GROUP) {\n if (Array.isArray(segmentGroup)) {\n assert(resetOp.ops.length === segmentGroup.length,\n 0x03a /* \"Number of ops in 'resetOp' must match the number of segment groups provided.\" */);\n\n for (let i = 0; i < resetOp.ops.length; i++) {\n opList.push(\n ...this.resetPendingDeltaToOps(resetOp.ops[i], segmentGroup[i]));\n }\n } else {\n // A group op containing a single op will pass a direct reference to 'segmentGroup'\n // rather than an array of segment groups. (See 'peekPendingSegmentGroups()')\n assert(resetOp.ops.length === 1,\n 0x03b /* \"Number of ops in 'resetOp' must match the number of segment groups provided.\" */);\n opList.push(...this.resetPendingDeltaToOps(resetOp.ops[0], segmentGroup));\n }\n } else {\n assert((resetOp.type as any) !== ops.MergeTreeDeltaType.GROUP,\n 0x03c /* \"Reset op has 'group' delta type!\" */);\n assert(!Array.isArray(segmentGroup),\n 0x03d /* \"segmentGroup is array rather than singleton!\" */);\n opList.push(\n ...this.resetPendingDeltaToOps(resetOp, segmentGroup));\n }\n return opList.length === 1 ? opList[0] : OpBuilder.createGroupOp(...opList);\n } finally {\n this.logger.sendPerformanceEvent({\n eventName: \"MergeTree:RegeneratePendingOp\",\n category: \"performance\",\n duration: elapsedMicroseconds(trace),\n });\n }\n }\n\n public createTextHelper() {\n return new MergeTreeTextHelper(this.mergeTree);\n }\n\n // TODO: Remove `catchUpMsgs` once new snapshot format is adopted as default.\n // (See https://github.com/microsoft/FluidFramework/issues/84)\n public snapshot(\n runtime: IFluidDataStoreRuntime,\n handle: IFluidHandle,\n serializer: IFluidSerializer,\n catchUpMsgs: ISequencedDocumentMessage[],\n ) {\n const deltaManager = runtime.deltaManager;\n const minSeq = deltaManager.minimumSequenceNumber;\n\n // Catch up to latest MSN, if we have not had a chance to do it.\n // Required for case where FluidDataStoreRuntime.attachChannel()\n // generates snapshot right after loading data store.\n\n this.updateSeqNumbers(minSeq, deltaManager.lastSequenceNumber);\n\n // One of the snapshots (from SPO) I observed to have chunk.chunkSequenceNumber > minSeq!\n // Not sure why - need to catch it sooner\n assert(this.getCollabWindow().minSeq === minSeq,\n 0x03e /* \"minSeq mismatch between collab window and delta manager!\" */);\n\n // TODO: Remove options flag once new snapshot format is adopted as default.\n // (See https://github.com/microsoft/FluidFramework/issues/84)\n if (this.mergeTree.options?.newMergeTreeSnapshotFormat === true) {\n assert(\n catchUpMsgs === undefined || catchUpMsgs.length === 0,\n 0x03f /* \"New format should not emit catchup ops\" */);\n const snap = new SnapshotV1(this.mergeTree, this.logger);\n snap.extractSync();\n return snap.emit(serializer, handle);\n } else {\n const snap = new SnapshotLegacy(this.mergeTree, this.logger);\n snap.extractSync();\n return snap.emit(catchUpMsgs, serializer, handle);\n }\n }\n\n public async load(\n runtime: IFluidDataStoreRuntime,\n storage: IChannelStorageService,\n serializer: IFluidSerializer,\n ): Promise<{ catchupOpsP: Promise<ISequencedDocumentMessage[]> }> {\n const loader = new SnapshotLoader(runtime, this, this.mergeTree, this.logger, serializer);\n\n return loader.initialize(storage);\n }\n\n getStackContext(startPos: number, rangeLabels: string[]) {\n return this.mergeTree.getStackContext(startPos, this.getCollabWindow().clientId, rangeLabels);\n }\n\n private getLocalSequenceNumber() {\n const segWindow = this.getCollabWindow();\n if (segWindow.collaborating) {\n return UnassignedSequenceNumber;\n }\n else {\n return UniversalSequenceNumber;\n }\n }\n localTransaction(groupOp: ops.IMergeTreeGroupMsg) {\n for (const op of groupOp.ops) {\n const opArgs: IMergeTreeDeltaOpArgs = {\n op,\n groupOp,\n };\n switch (op.type) {\n case ops.MergeTreeDeltaType.INSERT:\n this.applyInsertOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.ANNOTATE:\n this.applyAnnotateRangeOp(opArgs);\n break;\n case ops.MergeTreeDeltaType.REMOVE:\n this.applyRemoveRangeOp(opArgs);\n break;\n default:\n break;\n }\n }\n }\n updateConsensusProperty(op: ops.IMergeTreeAnnotateMsg, msg: ISequencedDocumentMessage) {\n const markerId = op.relativePos1!.id!;\n const consensusInfo = this.pendingConsensus.get(markerId);\n if (consensusInfo) {\n consensusInfo.marker.addProperties(op.props, op.combiningOp, msg.sequenceNumber);\n }\n this.mergeTree.addMinSeqListener(msg.sequenceNumber, () => consensusInfo!.callback(consensusInfo!.marker));\n }\n\n updateMinSeq(minSeq: number) {\n let trace: Trace | undefined;\n if (this.measureOps) {\n trace = Trace.start();\n }\n this.mergeTree.setMinSeq(minSeq);\n if (trace) {\n const elapsed = elapsedMicroseconds(trace);\n this.accumWindowTime += elapsed;\n if (elapsed > this.maxWindowTime) {\n this.maxWindowTime = elapsed;\n }\n }\n }\n\n getContainingSegment<T extends ISegment>(pos: number) {\n const segWindow = this.mergeTree.getCollabWindow();\n return this.mergeTree.getContainingSegment<T>(pos, segWindow.currentSeq, segWindow.clientId);\n }\n\n getPropertiesAtPosition(pos: number) {\n const segWindow = this.getCollabWindow();\n if (this.verboseOps) {\n // eslint-disable-next-line max-len\n console.log(`getPropertiesAtPosition cli ${this.getLongClientId(segWindow.clientId)} ref seq ${segWindow.currentSeq}`);\n }\n\n let propertiesAtPosition: Properties.PropertySet | undefined;\n const segoff = this.getContainingSegment(pos);\n const seg = segoff.segment;\n if (seg) {\n propertiesAtPosition = seg.properties;\n }\n return propertiesAtPosition;\n }\n getRangeExtentsOfPosition(pos: number) {\n const segWindow = this.getCollabWindow();\n if (this.verboseOps) {\n // eslint-disable-next-line max-len\n console.log(`getRangeExtentsOfPosition cli ${this.getLongClientId(segWindow.clientId)} ref seq ${segWindow.currentSeq}`);\n }\n\n let posStart: number | undefined;\n let posAfterEnd: number | undefined;\n\n const segoff = this.getContainingSegment(pos);\n const seg = segoff.segment;\n if (seg) {\n posStart = this.getPosition(seg);\n posAfterEnd = posStart + seg.cachedLength;\n }\n return { posStart, posAfterEnd };\n }\n getCurrentSeq() {\n return this.getCollabWindow().currentSeq;\n }\n getClientId() {\n return this.getCollabWindow().clientId;\n }\n\n getLength() { return this.mergeTree.length; }\n\n startOrUpdateCollaboration(longClientId: string | undefined, minSeq = 0, currentSeq = 0) {\n // we should always have a client id if we are collaborating\n // if the client id is undefined we are likely bound to a detached\n // container, so we should keep going in local mode. once\n // the container attaches this will be called again on connect with the\n // client id\n if (longClientId !== undefined) {\n if (this.longClientId === undefined) {\n this.longClientId = longClientId;\n this.addLongClientId(this.longClientId);\n this.mergeTree.startCollaboration(\n this.getShortClientId(this.longClientId), minSeq, currentSeq);\n } else {\n const oldClientId = this.longClientId;\n const oldData = this.clientNameToIds.get(oldClientId)!.data;\n this.longClientId = longClientId;\n this.clientNameToIds.put(longClientId, oldData);\n this.shortClientIdMap[oldData] = longClientId;\n }\n }\n }\n\n findTile(startPos: number, tileLabel: string, preceding = true) {\n const clientId = this.getClientId();\n return this.mergeTree.findTile(startPos, clientId, tileLabel, preceding);\n }\n}\n"]}
|
package/dist/mergeTree.d.ts
CHANGED
|
@@ -30,6 +30,9 @@ export interface ReferencePosition {
|
|
|
30
30
|
export declare type RangeStackMap = Properties.MapLike<Collections.Stack<ReferencePosition>>;
|
|
31
31
|
export interface IMergeNodeCommon {
|
|
32
32
|
parent?: IMergeBlock;
|
|
33
|
+
/**
|
|
34
|
+
* The length of the contents of the node.
|
|
35
|
+
*/
|
|
33
36
|
cachedLength: number;
|
|
34
37
|
index: number;
|
|
35
38
|
ordinal: string;
|
|
@@ -57,6 +60,9 @@ export interface IRemovalInfo {
|
|
|
57
60
|
removedClientId?: number;
|
|
58
61
|
removedClientOverlap?: number[];
|
|
59
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* A segment representing a portion of the merge tree.
|
|
65
|
+
*/
|
|
60
66
|
export interface ISegment extends IMergeNodeCommon, IRemovalInfo {
|
|
61
67
|
readonly type: string;
|
|
62
68
|
readonly segmentGroups: SegmentGroupCollection;
|
|
@@ -431,7 +437,7 @@ export declare class MergeTree {
|
|
|
431
437
|
private addOverlappingClient;
|
|
432
438
|
/**
|
|
433
439
|
* Annotate a range with properties
|
|
434
|
-
* @param start - The inclusive start
|
|
440
|
+
* @param start - The inclusive start position of the range to annotate
|
|
435
441
|
* @param end - The exclusive end position of the range to annotate
|
|
436
442
|
* @param props - The properties to annotate the range with
|
|
437
443
|
* @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
|
package/dist/mergeTree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
|
package/dist/mergeTree.js
CHANGED
|
@@ -2081,7 +2081,7 @@ class MergeTree {
|
|
|
2081
2081
|
}
|
|
2082
2082
|
/**
|
|
2083
2083
|
* Annotate a range with properties
|
|
2084
|
-
* @param start - The inclusive start
|
|
2084
|
+
* @param start - The inclusive start position of the range to annotate
|
|
2085
2085
|
* @param end - The exclusive end position of the range to annotate
|
|
2086
2086
|
* @param props - The properties to annotate the range with
|
|
2087
2087
|
* @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
|