o11y 252.2.0 → 252.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/modules/o11y/client/client.js +46 -20
  2. package/dist/modules/o11y/client/client.js.map +1 -1
  3. package/dist/modules/o11y/client/interfaces/ActivityStartOptions.d.ts +1 -0
  4. package/dist/modules/o11y/client/interfaces/ActivityStopOptions.d.ts +1 -0
  5. package/dist/modules/o11y/client/interfaces/InstrumentedAppOptions.d.ts +1 -0
  6. package/dist/modules/o11y/client/library/InstrumentationImpl.d.ts +1 -1
  7. package/dist/modules/o11y/client/library/NextgenImpl.d.ts +2 -0
  8. package/dist/modules/o11y/client/library/PerformanceObservability.d.ts +2 -0
  9. package/dist/modules/o11y/client/library/RootActivityImpl.d.ts +1 -1
  10. package/dist/modules/o11y/client/shared/Utility.d.ts +1 -1
  11. package/dist/modules/o11y/client/version.d.ts +1 -1
  12. package/dist/modules/o11y/collectors/interfaces/ActivityStartOptions.d.ts +1 -0
  13. package/dist/modules/o11y/collectors/interfaces/ActivityStopOptions.d.ts +1 -0
  14. package/dist/modules/o11y/collectors/interfaces/InstrumentedAppOptions.d.ts +1 -0
  15. package/dist/modules/o11y/collectors/library/InstrumentationImpl.d.ts +1 -1
  16. package/dist/modules/o11y/collectors/library/NextgenImpl.d.ts +2 -0
  17. package/dist/modules/o11y/collectors/library/PerformanceObservability.d.ts +2 -0
  18. package/dist/modules/o11y/collectors/library/RootActivityImpl.d.ts +1 -1
  19. package/dist/modules/o11y/collectors/shared/Utility.d.ts +1 -1
  20. package/dist/modules/o11y/collectors/version.d.ts +1 -1
  21. package/dist/modules/o11y/core_envelope/interfaces/ActivityStartOptions.d.ts +1 -0
  22. package/dist/modules/o11y/core_envelope/interfaces/ActivityStopOptions.d.ts +1 -0
  23. package/dist/modules/o11y/core_envelope/interfaces/InstrumentedAppOptions.d.ts +1 -0
  24. package/dist/modules/o11y/core_envelope/library/InstrumentationImpl.d.ts +1 -1
  25. package/dist/modules/o11y/core_envelope/library/NextgenImpl.d.ts +2 -0
  26. package/dist/modules/o11y/core_envelope/library/PerformanceObservability.d.ts +2 -0
  27. package/dist/modules/o11y/core_envelope/library/RootActivityImpl.d.ts +1 -1
  28. package/dist/modules/o11y/core_envelope/shared/Utility.d.ts +1 -1
  29. package/dist/modules/o11y/core_envelope/version.d.ts +1 -1
  30. package/dist/modules/o11y/shared/interfaces/ActivityStartOptions.d.ts +1 -0
  31. package/dist/modules/o11y/shared/interfaces/ActivityStopOptions.d.ts +1 -0
  32. package/dist/modules/o11y/shared/interfaces/InstrumentedAppOptions.d.ts +1 -0
  33. package/dist/modules/o11y/shared/library/InstrumentationImpl.d.ts +1 -1
  34. package/dist/modules/o11y/shared/library/NextgenImpl.d.ts +2 -0
  35. package/dist/modules/o11y/shared/library/PerformanceObservability.d.ts +2 -0
  36. package/dist/modules/o11y/shared/library/RootActivityImpl.d.ts +1 -1
  37. package/dist/modules/o11y/shared/shared/Utility.d.ts +1 -1
  38. package/dist/modules/o11y/shared/shared.js +7 -4
  39. package/dist/modules/o11y/shared/shared.js.map +1 -1
  40. package/dist/modules/o11y/shared/version.d.ts +1 -1
  41. package/dist/modules/o11y/simple_collector/interfaces/ActivityStartOptions.d.ts +1 -0
  42. package/dist/modules/o11y/simple_collector/interfaces/ActivityStopOptions.d.ts +1 -0
  43. package/dist/modules/o11y/simple_collector/interfaces/InstrumentedAppOptions.d.ts +1 -0
  44. package/dist/modules/o11y/simple_collector/library/InstrumentationImpl.d.ts +1 -1
  45. package/dist/modules/o11y/simple_collector/library/NextgenImpl.d.ts +2 -0
  46. package/dist/modules/o11y/simple_collector/library/PerformanceObservability.d.ts +2 -0
  47. package/dist/modules/o11y/simple_collector/library/RootActivityImpl.d.ts +1 -1
  48. package/dist/modules/o11y/simple_collector/shared/Utility.d.ts +1 -1
  49. package/dist/modules/o11y/simple_collector/version.d.ts +1 -1
  50. package/dist/modules/o11y/web_vitals/interfaces/ActivityStartOptions.d.ts +1 -0
  51. package/dist/modules/o11y/web_vitals/interfaces/ActivityStopOptions.d.ts +1 -0
  52. package/dist/modules/o11y/web_vitals/interfaces/InstrumentedAppOptions.d.ts +1 -0
  53. package/dist/modules/o11y/web_vitals/library/InstrumentationImpl.d.ts +1 -1
  54. package/dist/modules/o11y/web_vitals/library/NextgenImpl.d.ts +2 -0
  55. package/dist/modules/o11y/web_vitals/library/PerformanceObservability.d.ts +2 -0
  56. package/dist/modules/o11y/web_vitals/library/RootActivityImpl.d.ts +1 -1
  57. package/dist/modules/o11y/web_vitals/shared/Utility.d.ts +1 -1
  58. package/dist/modules/o11y/web_vitals/version.d.ts +1 -1
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sources":["../../../../src/library/TaskerImpl.ts","../../../../src/library/IdleDetectorImpl.ts","../../../../../../node_modules/o11y_schema/sfcore_performance/navigation_timing.js","../../../../../../node_modules/o11y_schema/sfcore_performance/resource_timing.js","../../../../src/library/FuzzyMapper.ts","../../../../src/library/PerformanceObservability.ts","../../../../src/library/Tracing.ts","../../../../src/library/TimerOverride.ts","../../../../src/library/ActivityImpl.ts","../../../../src/library/ActivityNoOp.ts","../../../../src/library/DomEventHelpers.ts","../../../../src/library/BucketHistogramImpl.ts","../../../../src/library/UpCounterImpl.ts","../../../../src/library/ValueRecorderImpl.ts","../../../../src/library/SizeLimitedMap.ts","../../../../src/library/MetricsImpl.ts","../../../../src/library/MockObj.ts","../../../../src/library/InstrumentationImpl.ts","../../../../src/library/RootActivityHistoryImpl.ts","../../../../src/library/RootActivityImpl.ts","../../../../src/library/RootActivityNoOp.ts","../../../../src/library/AppInstrumentationImpl.ts","../../../../src/library/AutomaticClickTracker.ts","../../../../src/library/ReceiverConnector.ts","../../../../src/library/SenderConnector.ts","../../../../src/library/MetricsStore.ts","../../../../src/sender_collector/SenderCollector.ts","../../../../src/library/NextgenImpl.ts","../../../../src/index.ts","../../../../src/console-collector/ConsoleCollector.ts","../../../../src/version.ts","../../../../src/client.ts"],"sourcesContent":["import { TaskerMulti, TaskerSingle } from '../interfaces/IdleDetector';\n\nexport type TaskDoneNotifier = () => void;\n\nexport class TaskerImpl implements TaskerSingle, TaskerMulti {\n private _busyCount = 0;\n private _isOk = true; // Once an error occurs, make operations no-op\n\n get isBusy(): boolean {\n return this._isOk ? this._busyCount > 0 : undefined;\n }\n\n constructor(\n public readonly name: string,\n initialCount: number,\n private readonly _doneCallback: TaskDoneNotifier,\n private readonly _overDoneCallback: TaskDoneNotifier\n ) {\n this._busyCount = initialCount;\n }\n\n add(): void {\n if (this._isOk) {\n this._busyCount += 1;\n }\n }\n done(): void {\n if (this._isOk) {\n if (this._busyCount > 0) {\n this._busyCount -= 1;\n if (!this._busyCount) {\n this._doneCallback();\n }\n } else {\n this._isOk = false;\n this._overDoneCallback();\n }\n }\n }\n}\n","import { IdleDetector, IdleDetectorOptions, IdleDetectorReport } from '../interfaces';\nimport {\n ErrorListener,\n IdleDetectedListener,\n IsBusyChecker,\n ReportListener,\n TaskerMulti,\n TaskerSingle\n} from '../interfaces/IdleDetector';\nimport { TaskerImpl } from './TaskerImpl';\nimport { utility } from 'o11y/shared';\n\nconst defaultLogThreshold = 300;\n\ntype TaskReportEntry = {\n name: string;\n start: number;\n end: number;\n};\n\ntype PollableReportEntry = {\n name: string;\n count: number;\n};\n\nexport class IdleDetectorImpl implements IdleDetector {\n private readonly _taskers = new Map<TaskerImpl, TaskReportEntry>();\n private readonly _listeners = new Set<IdleDetectedListener>();\n private readonly _busyCheckers = new Map<IsBusyChecker, string>();\n private readonly _logThreshold: number = defaultLogThreshold;\n private readonly _endedTasks = new Array<TaskReportEntry>();\n private readonly _pollableReport = new Array<PollableReportEntry>();\n private _firstCallbackTime: number;\n private _timerCheckQueued: NodeJS.Timeout;\n private readonly _reportListener: ReportListener;\n private readonly _errorListener: ErrorListener;\n\n constructor(options?: IdleDetectorOptions) {\n if (\n utility.requireArgumentIfDefined(\n options?.logThreshold,\n 'options.logThreshold',\n 'number'\n )\n ) {\n this._logThreshold = options.logThreshold;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.reportListener,\n 'options.reportListener',\n 'function'\n )\n ) {\n this._reportListener = options.reportListener;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.errorListener,\n 'options.errorListener',\n 'function'\n )\n ) {\n this._errorListener = options.errorListener;\n }\n }\n\n requestIdleDetectedCallback(callback: IdleDetectedListener): void {\n utility.requireArgument(callback, 'callback', 'function');\n if (this._listeners.size === 0) {\n this._firstCallbackTime = utility.time().perfNow;\n }\n this._listeners.add(callback);\n this._checkIfLoaded();\n }\n\n private _reportTaskEnded(tasker: TaskerImpl): void {\n // Report only if we have any listeners\n if (this._listeners.size) {\n const snapshot = Object.assign({}, this._taskers.get(tasker));\n this._endedTasks.push(snapshot);\n }\n }\n\n declareNotifierTaskSingle(name: string): TaskerSingle {\n utility.requireArgument(name, 'name', 'string');\n const tasker = this._addTasker(name, 1);\n\n const retVal: TaskerSingle = {\n get isBusy() {\n return tasker.isBusy;\n },\n done: () => {\n tasker.done();\n this._taskers.delete(tasker);\n }\n };\n\n return retVal;\n }\n\n declareNotifierTaskMulti(name: string, existingBusyCount = 0): TaskerMulti {\n utility.requireArgument(name, 'name', 'string');\n if (existingBusyCount !== undefined) {\n utility.requireArgument(existingBusyCount, 'existingBusyCount', 'number');\n\n if (!Number.isInteger(existingBusyCount) || existingBusyCount < 0) {\n throw new Error('existingBusyCount accepts only non-negative integers');\n }\n }\n const tasker = this._addTasker(name, existingBusyCount);\n\n const retVal: TaskerMulti = {\n get isBusy() {\n return tasker.isBusy;\n },\n add: () => {\n if (!tasker.isBusy) {\n const meta = this._taskers.get(tasker);\n meta.start = utility.time().perfNow;\n meta.end = undefined;\n }\n tasker.add();\n },\n done: tasker.done.bind(tasker) // Note: don't delete multi tasker\n };\n return retVal;\n }\n\n declarePollableTaskMulti(name: string, isBusyChecker: IsBusyChecker): void {\n utility.requireArgument(name, 'name', 'string');\n utility.requireArgument(isBusyChecker, 'isBusyChecker', 'function');\n\n this._busyCheckers.set(isBusyChecker, name);\n }\n\n private _addTasker(name: string, existingBusyCount: number): TaskerImpl {\n const tasker = new TaskerImpl(\n name,\n existingBusyCount,\n () => {\n // Done callback\n this._taskers.get(tasker).end = utility.time().perfNow;\n this._reportTaskEnded(tasker);\n this._checkIfLoaded();\n },\n () => {\n // Overdone callback\n this._errorListener?.(`Overdone: ${tasker.name}`);\n utility.noProdThrow(`Tasker '${tasker.name}' is done too many times.`);\n }\n );\n this._taskers.set(tasker, {\n name,\n start: existingBusyCount > 0 ? utility.time().perfNow : undefined,\n end: undefined\n });\n return tasker;\n }\n\n private _areAllNotifiersIdle(): boolean {\n return !Array.from(this._taskers.keys()).some((t) => t.isBusy);\n }\n\n private _getFirstBusyPollable(): string {\n const entry = Array.from(this._busyCheckers).find((entry) => {\n const isBusyChecker = entry[0];\n const name = entry[1];\n try {\n return isBusyChecker();\n } catch (e) {\n this._errorListener?.(e, `BusyChecker ${name}`);\n utility.noProdThrow(e);\n return false; // Not busy\n }\n });\n\n return entry ? entry[1] : undefined;\n }\n\n private _checkIfLoaded(): void {\n if (!this._listeners.size) {\n // bail out early. We don't have any callbacks queued\n return;\n }\n\n // We restart the idle timer check logic whenever we get an external\n // trigger that a resource was loaded since that would imply that more\n // work could be queued up and we want to be aware of that\n if (this._timerCheckQueued) {\n clearTimeout(this._timerCheckQueued);\n }\n\n if (this._areAllNotifiersIdle()) {\n // Enqueue two RAF to make sure nothing got queued in this js cycle\n // note the use of double setTimeout. We want our setTimeout to queue up after\n // any set timeouts queued within micro tasks that may run after processing this\n // xhr response.\n // Here's a sample timeline\n // .....[ Single Event Loop ].....................................\n // .....[XHR callback][checkIfLoaded][microtasks]-[1st setTimeout]....[2nd setTimeout]\n // ^\n // queue settimeout at the end of event loop --->|\n this._timerCheckQueued = setTimeout(() => {\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 40);\n }, 0);\n }\n }\n\n private _doubleCheck(): void {\n this._timerCheckQueued = undefined;\n\n if (this._areAllNotifiersIdle()) {\n const pollableName: string = this._getFirstBusyPollable();\n if (pollableName !== undefined) {\n // we'll have to keep polling until polled operations finish\n this._addToPollableReport(pollableName);\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 15);\n } else {\n // OK!! We are certified idle.\n const maxDuration = utility.time().perfNow - this._firstCallbackTime;\n\n // Take a snapshot of internal variables so that we don't get confused\n // if tasks are created or listeners or worse, get into an infinite loop\n // if idle is requested\n const listeners = Array.from(this._listeners.values());\n this._listeners.clear();\n\n this._firstCallbackTime = undefined;\n const endedTasks = this._endedTasks.splice(0);\n const pollableReport = this._pollableReport.splice(0);\n\n this._notify(listeners, maxDuration, endedTasks, pollableReport);\n }\n }\n }\n\n private _addToPollableReport(name: string): void {\n const lastEntry: PollableReportEntry = this._pollableReport.length\n ? this._pollableReport[this._pollableReport.length - 1]\n : undefined;\n\n if (lastEntry?.name === name) {\n lastEntry.count += 1;\n } else {\n this._pollableReport.push({\n name,\n count: 1\n });\n }\n }\n\n private _notify(\n listeners: IdleDetectedListener[],\n maxDuration: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): void {\n if (maxDuration >= this._logThreshold && this._reportListener) {\n const logData: IdleDetectorReport = this._getReport(\n maxDuration,\n listeners.length,\n taskReport,\n pollableReport\n );\n this._reportListener(logData);\n }\n listeners.reverse();\n\n const tsNow = utility.time().tsNow;\n for (const [index, listener] of listeners.entries()) {\n try {\n listener(tsNow);\n } catch (e) {\n this._errorListener?.(e, `Listener #${listeners.length - 1 - index}`);\n utility.noProdThrow(e);\n }\n }\n }\n\n getReport(): IdleDetectorReport {\n const perfNow = utility.time().perfNow;\n const maxDuration =\n this._firstCallbackTime > 0 ? perfNow - this._firstCallbackTime : undefined;\n\n const onGoingTasks: Array<TaskReportEntry> = Array.from(this._taskers.entries())\n .filter((e) => e[0].isBusy)\n .map((e) => ({\n name: e[1].name,\n start: e[1].start,\n end: perfNow\n }));\n return this._getReport(\n maxDuration,\n this._listeners.size,\n this._endedTasks.concat(onGoingTasks),\n this._pollableReport\n );\n }\n\n private _getReport(\n maxDuration: number,\n listenerCount: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): IdleDetectorReport {\n const sortedTaskers = taskReport\n .map((t) => ({\n name: t.name,\n duration: t.end - t.start\n }))\n .sort((a, b) => b.duration - a.duration);\n return {\n logThreshold: this._logThreshold,\n maxDuration,\n listenerCount,\n pollableCount: this._busyCheckers.size,\n busyTasks: sortedTaskers.map((t) => t.name),\n busyDurations: sortedTaskers.map((t) => t.duration),\n pollables: pollableReport.map((p) => p.name),\n pollCounts: pollableReport.map((p) => p.count)\n };\n }\n}\n","export const navigation_timing={namespace:\"sfcore.performance\",name:\"NavigationTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"NavigationTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\n\"fields\":{\"redirectCount\":{\"id\":37,\"type\":\"uint32\"},\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"unloadEventEnd\":{\"id\":40,\"type\":\"double\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"unloadEventStart\":{\"id\":39,\"type\":\"double\"},\"domContentLoadedEventStart\":{\"id\":32,\"type\":\"double\"},\"type\":{\"id\":38,\"type\":\"string\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\"id\":18,\"type\":\"double\"},\n\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\"id\":24,\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"domContentLoadedEventEnd\":{\"id\":33,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\"id\":27,\"type\":\"uint32\"},\n\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domInteractive\":{\"id\":34,\"type\":\"double\"},\"domComplete\":{\"id\":31,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\"type\":\"double\"},\"responseStatus\":{\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\n\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"loadEventStart\":{\"id\":35,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\"type\":\"string\"},\"loadEventEnd\":{\"id\":36,\"type\":\"double\"}}}}}}}}}};","export const resource_timing={namespace:\"sfcore.performance\",name:\"ResourceTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"ResourceTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\n\"fields\":{\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\"id\":18,\"type\":\"double\"},\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\"id\":24,\n\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\"id\":27,\"type\":\"uint32\"},\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\n\"type\":\"double\"},\"responseStatus\":{\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\"type\":\"string\"}}}}}}}}}};","import { utility } from 'o11y/shared';\n\ntype MapValueEntry<T> = {\n fuzzyKey: number;\n value: T;\n};\n\ntype MapValues<T> = Array<MapValueEntry<T>>;\n\n// A match is made if the strict key matches and the fuzzy key value is within the range.\n// If there are multiple such matches, the one with the smallest delta is returned.\nexport class FuzzyMapper<T> {\n private readonly _map: Map<string, MapValues<T>> = new Map();\n\n constructor(private readonly _fuzzyKeyRange: number) {\n utility.requireArgument(_fuzzyKeyRange, '_fuzzyKeyRange', 'number');\n }\n\n add(key: string, fuzzyKey: number, value: T): void {\n const mapValue = this._map.get(key);\n if (mapValue) {\n mapValue.push({ fuzzyKey, value });\n } else {\n this._map.set(key, [{ fuzzyKey, value }]);\n }\n }\n pop(key: string, fuzzyKey: number): T {\n const mapValues = this._map.get(key);\n if (mapValues?.length >= 1) {\n let minDelta = Number.POSITIVE_INFINITY;\n let minIndex = -1;\n for (let index = 0; index < mapValues.length; index++) {\n const { fuzzyKey: curFuzzyKey } = mapValues[index];\n const curDelta = Math.abs(curFuzzyKey - fuzzyKey);\n if (curDelta <= this._fuzzyKeyRange && curDelta < minDelta) {\n minDelta = curDelta;\n minIndex = index;\n }\n // keep looking for a better match\n }\n if (minIndex >= 0) {\n const { value } = mapValues.splice(minIndex, 1)[0];\n if (mapValues.length === 0) {\n this._map.delete(key);\n }\n return value;\n }\n }\n return undefined;\n }\n clear(): void {\n this._map.clear();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { resourceTimingSchema, navigationTimingSchema } from 'o11y_schema/sfcore_performance';\nimport { ActivityStopOptions, Instrumentation, Schema } from '../interfaces';\nimport {\n NavigationTiming,\n NavigationTimingOnly,\n ResourceTiming\n} from '../types/TypeDefinitions-Private';\nimport { FuzzyMapper } from './FuzzyMapper';\n\nexport const enum LogLevel {\n Basic,\n Full\n}\n\nexport type RequestMetadata = {\n requestId?: string;\n activityDuration?: number;\n};\n\nconst basicInitiatorTypes = ['fetch', 'xmlhttprequest'];\n\nexport class PerformanceObservability {\n private readonly _hasPerf: boolean;\n private readonly _boundObserverCallback: (list: PerformanceObserverEntryList) => void;\n private readonly _fuzzyMapper: FuzzyMapper<RequestMetadata>;\n private readonly _logLevel: LogLevel;\n private _resourceObserver: PerformanceObserver;\n private _navigationObserver: PerformanceObserver;\n private _isStarted = false;\n private _navTiming: PerformanceNavigationTiming;\n\n constructor(\n private readonly _instr: Instrumentation,\n fuzzyMapRange: number,\n private readonly _skipUrls: (string | RegExp)[],\n private readonly _logPerformanceActivityName?: string,\n logLevel?: string\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(fuzzyMapRange, 'fuzzyMapRange', 'number');\n utility.requireArgumentIfDefined(_skipUrls, '_skipUrls', Array);\n utility.requireArgumentIfDefined(\n _logPerformanceActivityName,\n '_logPerformanceActivityName',\n 'string'\n );\n utility.requireArgumentIfDefined(logLevel, 'logLevel', 'string');\n\n this._hasPerf =\n typeof performance !== 'undefined' && typeof PerformanceObserver === 'function';\n\n this._boundObserverCallback = this._logPerformanceEntries.bind(this);\n\n if (!logLevel || logLevel.toLowerCase() === 'full') {\n this._logLevel = LogLevel.Full;\n } else if (logLevel?.toLowerCase() === 'basic') {\n this._logLevel = LogLevel.Basic;\n } else {\n throw new Error(`Invalid log level: ${logLevel}`);\n }\n\n this._fuzzyMapper = new FuzzyMapper(fuzzyMapRange);\n }\n\n get isStarted(): boolean {\n return this._isStarted;\n }\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n start(): void {\n if (!this._hasPerf) {\n return;\n }\n if (!this._isStarted) {\n this._isStarted = true;\n this._navigationObserver = new PerformanceObserver(this._boundObserverCallback);\n this._navigationObserver.observe({ type: 'navigation', buffered: true });\n this._resourceObserver = new PerformanceObserver(this._boundObserverCallback);\n this._resourceObserver.observe({ type: 'resource', buffered: true });\n }\n }\n\n stop(): void {\n if (this._resourceObserver) {\n this._resourceObserver.disconnect();\n this._resourceObserver = undefined;\n }\n if (this._navigationObserver) {\n this._navigationObserver.disconnect();\n this._navigationObserver = undefined;\n }\n this._fuzzyMapper.clear();\n this._isStarted = false;\n }\n\n // The caller must make sure that url is absolute for exact string matching\n // as the performance API we call later uses absolute URLs.\n addEntry(absoluteUrl: string, perfTime: number, data: RequestMetadata): void {\n this._fuzzyMapper.add(absoluteUrl, perfTime, data);\n }\n\n private _resourceEntryToResourceTiming(\n prt: PerformanceResourceTiming\n ): Partial<ResourceTiming> {\n const rt: Omit<\n ResourceTiming,\n 'reqBatchCount' | 'reqActionNames' | 'srvReqId' | 'xhrDelay'\n > = {\n name: prt.name,\n startTime: prt.startTime,\n duration: prt.duration,\n initiatorType: prt.initiatorType,\n nextHopProtocol: prt.nextHopProtocol,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus\n renderBlockingStatus: prt.renderBlockingStatus,\n workerStart: prt.workerStart,\n redirectStart: prt.redirectStart,\n redirectEnd: prt.redirectEnd,\n fetchStart: prt.fetchStart,\n domainLookupStart: prt.domainLookupStart,\n domainLookupEnd: prt.domainLookupEnd,\n connectStart: prt.connectStart,\n secureConnectionStart: prt.secureConnectionStart,\n connectEnd: prt.connectEnd,\n requestStart: prt.requestStart,\n responseStart: prt.responseStart,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/firstInterimResponseStart\n firstInterimResponseStart: prt.firstInterimResponseStart,\n responseEnd: prt.responseEnd,\n transferSize: prt.transferSize,\n encodedBodySize: prt.encodedBodySize,\n decodedBodySize: prt.decodedBodySize,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus\n responseStatus: prt.responseStatus\n };\n\n const sts: ReadonlyArray<PerformanceServerTiming> = prt.serverTiming;\n if (Array.isArray(sts)) {\n rt.dbDuration = sts.find((st) => st.name === 'db')?.duration;\n rt.srvDuration = sts.find((st) => st.name === 'Total')?.duration;\n // TODO: nr.isCdnCached\n }\n\n return rt;\n }\n\n private _shouldInclude(entry: PerformanceResourceTiming): boolean {\n const isFiltered = this._skipUrls?.some((skipUrl) => {\n if (skipUrl instanceof RegExp) {\n return skipUrl.test(entry.name);\n } else {\n return entry.name === skipUrl;\n }\n });\n\n if (isFiltered) {\n return false;\n }\n\n if (this._logLevel === LogLevel.Full) {\n return true;\n }\n return (\n basicInitiatorTypes.indexOf(entry.initiatorType) >= 0 ||\n entry.entryType === 'navigation'\n );\n }\n\n private _logActivity(schema: Schema, payload: Partial<ResourceTiming>): void {\n const options: ActivityStopOptions = {\n perfStartOverride: payload.startTime,\n perfStopOverride: payload.startTime + payload.duration\n };\n\n this._instr.startActivity(this._logPerformanceActivityName).stop(schema, payload, options);\n }\n\n private _logPerformanceEntries(list: PerformanceObserverEntryList): void {\n for (const entry of list.getEntriesByType('navigation')) {\n const nt: PerformanceNavigationTiming = entry as PerformanceNavigationTiming;\n\n if (this._shouldInclude(nt)) {\n if (nt !== this._navTiming) {\n this._navTiming = nt;\n\n const payload: Partial<NavigationTiming> =\n this._resourceEntryToResourceTiming(nt);\n\n const navOnly: NavigationTimingOnly = {\n domComplete: nt.domComplete,\n domContentLoadedEventStart: nt.domContentLoadedEventStart,\n domContentLoadedEventEnd: nt.domContentLoadedEventEnd,\n domInteractive: nt.domInteractive,\n loadEventStart: nt.loadEventStart,\n loadEventEnd: nt.loadEventEnd,\n redirectCount: nt.redirectCount,\n type: nt.type,\n unloadEventStart: nt.unloadEventStart,\n unloadEventEnd: nt.unloadEventEnd\n };\n\n this._logActivity(navigationTimingSchema, Object.assign(payload, navOnly));\n }\n break; // Only log the first navigation entry (which there should only be one of)\n }\n }\n\n for (const entry of list.getEntriesByType('resource')) {\n const rt: PerformanceResourceTiming = entry as PerformanceResourceTiming;\n\n // Always pop the request info, even if we don't log it, so we don't leak memory\n const requestInfo: RequestMetadata = this._fuzzyMapper.pop(rt.name, rt.startTime);\n\n if (this._shouldInclude(rt)) {\n const payload: Partial<ResourceTiming> = this._resourceEntryToResourceTiming(rt);\n\n Object.assign(payload, {\n srvReqId: requestInfo?.requestId,\n xhrDelay: requestInfo ? requestInfo.activityDuration - rt.duration : undefined\n });\n\n this._logActivity(resourceTimingSchema, payload);\n }\n }\n }\n}\n","import { TraceHeaders, utility } from 'o11y/shared';\nimport { networkSchema } from 'o11y_schema/sf_instrumentation';\nimport {\n IdleDetector,\n Instrumentation,\n TaskerMulti,\n TracingHeadersOptions,\n NetworkInstrumentationOptions,\n Activity\n} from '../interfaces';\nimport { PerformanceObservability } from './PerformanceObservability';\n\ntype FetchType = (resource: RequestInfo | URL, options?: RequestInit) => Promise<Response>;\n\ntype O11yFetchOptions = {\n skipInstr?: boolean;\n};\n\ntype O11yFetchType = (\n resource: RequestInfo | URL,\n options?: RequestInit & { o11y?: O11yFetchOptions }\n) => Promise<Response>;\n\ntype XhrType = typeof XMLHttpRequest;\n\ntype XhrOpenType = (\n method: string,\n url: string | URL,\n async?: boolean,\n username?: string | null,\n password?: string | null\n) => void;\n\ntype XhrSetRequestHeaderType = (name: string, value: string) => void;\n\ntype XhrSendType = (body?: Document | XMLHttpRequestBodyInit | null) => void;\n\ntype O11yInfo = {\n activity?: Activity;\n method?: string;\n url?: string;\n absoluteUrl?: string;\n sendTime?: number;\n requestId?: string;\n};\ninterface O11yXhr extends XMLHttpRequest {\n _o11y: O11yInfo;\n}\n\nconst defaultTraceIdLengthW3 = 32; // 32 Characters = 128 bits\nconst defaultTraceIdLengthB3 = 16; // 16 Characters = 64 bits\nconst defaultSpanIdLength = 16; // 16 Characters = 64 bits\n\n// Headers for W3 tracing (https://www.w3.org/TR/trace-context/#traceparent-header)\nconst headerTraceParent = 'traceparent';\n\n// Headers for B3 tracing (https://github.com/openzipkin/b3-propagation)\nconst headerB3 = 'b3';\nconst headerTraceId = 'X-B3-TraceId';\nconst headerSpanId = 'X-B3-SpanId';\nconst headerSampled = 'X-B3-Sampled';\nconst headerParentSpanId = 'X-B3-ParentSpanId';\nconst headerRequestId = 'X-SFDC-Request-Id'; // This is a custom header for Salesforce\nconst defaultActivityNameForFetch = 'fetch';\nconst defaultActivityNameForXhrSend = 'xhr_send';\nconst defaultTimingActivityName = 'perf-timing';\nconst defaultFuzzyMapRange = 50; // msecs\n\nexport class Tracing {\n private static _global: typeof globalThis = utility.getGlobal();\n private static _originalFetch: FetchType;\n private static _originalXhr: XhrType;\n private static _originalXhrOpen: XhrOpenType;\n private static _originalXhrSetRequestHeader: XhrSetRequestHeaderType;\n private static _originalXhrSend: XhrSendType;\n private static _isNetworkInstrumentationEnabled = false;\n private static _reqIndex = 0;\n private static _performanceObservability: PerformanceObservability;\n\n constructor(\n private readonly _instr: Instrumentation,\n private readonly _idleDetector: IdleDetector\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(_idleDetector, '_idleDetector', 'object');\n }\n\n private static _getB3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n parentSpanId?: string\n ): string {\n // b3={TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}\n // Note: last two fields are optional\n\n let b3 = `${traceId}-${spanId}`;\n\n if (isSampled !== undefined || parentSpanId !== undefined) {\n b3 += isSampled ? '-1' : '-0';\n if (parentSpanId !== undefined) {\n b3 += `-${parentSpanId}`;\n }\n }\n return b3;\n }\n\n private static _getW3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled: boolean\n ): string {\n // traceparent={version}-{trace-id}-{parent-id}-{trace-flags}\n // \"in some tracing systems, parent-id is known as the span-id, where a span is the execution of a client request\"\n return `00-${traceId}-${spanId}-${isSampled ? '01' : '00'}`;\n }\n\n private static _conformTextAsId(text: string, numChars: number): string {\n // First validate\n text = text.toLowerCase();\n const len: number = text.length;\n for (let i = 0; i < len; i += 1) {\n const c = text[i];\n if (!(c >= 'a' && c <= 'f') && !(c >= '0' && c <= '9')) {\n throw new Error(`The text '${text}' has an invalid character at index #${i}`);\n }\n }\n\n if (len > numChars) {\n // Use the right-most characters per spec\n return text.substr(len - numChars);\n }\n if (len < numChars) {\n // Pad left with 0s per spec\n return text.padStart(numChars, '0');\n }\n return text;\n }\n\n public static getHeaders(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n options?: TracingHeadersOptions\n ): TraceHeaders {\n utility.requireArgument(traceId, 'traceId', 'string');\n utility.requireArgument(spanId, 'spanId', 'string');\n\n const useB3Headers: boolean = options?.useB3Headers;\n\n traceId = this._conformTextAsId(\n traceId,\n options?.traceIdEffectiveLength !== undefined\n ? options.traceIdEffectiveLength\n : useB3Headers\n ? defaultTraceIdLengthB3\n : defaultTraceIdLengthW3\n );\n spanId = this._conformTextAsId(spanId, defaultSpanIdLength);\n\n const parentSpanId =\n (options &&\n options.parentSpanId !== undefined &&\n this._conformTextAsId(options.parentSpanId, defaultSpanIdLength)) ||\n undefined;\n\n const headers: TraceHeaders = {};\n\n if (useB3Headers) {\n // By default, use non-compact\n const isCompact: boolean = options?.useCompactHeader;\n if (isCompact) {\n headers[headerB3] = this._getB3CompactFormat(\n traceId,\n spanId,\n isSampled,\n parentSpanId\n );\n } else {\n headers[headerTraceId] = traceId;\n headers[headerSpanId] = spanId;\n if (parentSpanId !== undefined) {\n headers[headerParentSpanId] = parentSpanId;\n }\n if (isSampled !== undefined) {\n headers[headerSampled] = isSampled ? '1' : '0';\n }\n }\n } else {\n headers[headerTraceParent] = this._getW3CompactFormat(traceId, spanId, isSampled);\n }\n\n return headers;\n }\n\n private _disableNetworkInstrumentation(): void {\n if (Tracing._isNetworkInstrumentationEnabled) {\n if (Tracing._originalFetch) {\n Tracing._global.fetch = Tracing._originalFetch;\n Tracing._originalFetch = undefined;\n }\n if (Tracing._originalXhr) {\n Tracing._global.XMLHttpRequest = Tracing._originalXhr;\n Tracing._originalXhr = undefined;\n }\n if (Tracing._originalXhrOpen) {\n Tracing._global.XMLHttpRequest.prototype.open = Tracing._originalXhrOpen;\n Tracing._originalXhrOpen = undefined;\n }\n if (Tracing._originalXhrSetRequestHeader) {\n Tracing._global.XMLHttpRequest.prototype.setRequestHeader =\n Tracing._originalXhrSetRequestHeader;\n Tracing._originalXhrSetRequestHeader = undefined;\n }\n if (Tracing._originalXhrSend) {\n Tracing._global.XMLHttpRequest.prototype.send = Tracing._originalXhrSend;\n Tracing._originalXhrSend = undefined;\n }\n if (Tracing._performanceObservability) {\n Tracing._performanceObservability.stop();\n Tracing._performanceObservability = undefined;\n }\n Tracing._isNetworkInstrumentationEnabled = false;\n }\n }\n\n private _enableNetworkInstrumentation(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti,\n logPerformance: boolean | string,\n logPerformanceActivityName: string,\n skipUrls: (string | RegExp)[],\n fuzzyMapRange: number\n ): void {\n if (typeof Tracing._global.fetch === 'function') {\n this._overrideFetch(instr, logErrors, activityName, useTracing, options, tasker);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (typeof Tracing._global.XMLHttpRequest === 'function') {\n this._overrideXhr(instr, logErrors, activityName, useTracing, options, tasker);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (logPerformance) {\n Tracing._performanceObservability = new PerformanceObservability(\n instr,\n fuzzyMapRange,\n skipUrls,\n logPerformanceActivityName,\n logPerformance === true ? 'full' : logPerformance\n );\n Tracing._performanceObservability.start();\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n }\n\n private static _getTraceHeaders(\n activity: Activity | undefined,\n options: TracingHeadersOptions | undefined,\n method: string,\n url: string\n ): TraceHeaders {\n let traceHeaders: TraceHeaders = activity?.getTraceHeaders(options) || {};\n if (typeof options?.headerProcessor === 'function') {\n traceHeaders = options.headerProcessor({\n method,\n url,\n defaultHeaders: traceHeaders\n });\n } else if (typeof window === 'object') {\n // By default, only send to the original domain on browsers\n let newUrl;\n try {\n newUrl = new URL(url); // no base argument - will throw on non-absolute URLs\n } catch {\n // Relative URL.\n }\n // Check host (not hostname) to ensure port numbers match too.\n if (newUrl && newUrl.host !== window.location.host) {\n traceHeaders = undefined;\n }\n }\n return traceHeaders || {};\n }\n\n private static _extractHeader(\n headerName: string,\n input: RequestInfo | URL,\n init?: RequestInit\n ): string {\n if (init?.headers instanceof Headers) {\n return init.headers.get(headerName);\n }\n if (Array.isArray(init?.headers)) {\n const header = init.headers.find((entry) => entry[0] === headerName);\n return header?.[1];\n }\n if (typeof init?.headers === 'object') {\n return init.headers[headerName];\n }\n if (input instanceof Request) {\n return input.headers.get(headerName);\n }\n return undefined;\n }\n\n private _overrideFetch(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n tracingHeadersOptions: TracingHeadersOptions,\n tasker: TaskerMulti\n ): void {\n Tracing._originalFetch = Tracing._global.fetch;\n const o11yFetch: O11yFetchType = async (resource, options, ...restArgs) => {\n // Note: We can't make any assumptions about the arguments before we pass them to the\n // original fetch. Invalid arguments should not cause us to throw, and be\n // passed to the original fetch as-is.\n let activity: Activity;\n let url: string;\n let absoluteUrl: string;\n let method: string;\n let fetchTime: number;\n try {\n tasker?.add();\n method = options?.method;\n const ofo: O11yFetchOptions = options?.o11y;\n\n if (!ofo?.skipInstr) {\n activity = instr.startActivity(activityName || defaultActivityNameForFetch);\n } else {\n Tracing._reqIndex += 1;\n try {\n // Best effort -- we can't modify other types of resources\n if (resource instanceof URL) {\n resource.searchParams.append('o11y', Tracing._reqIndex.toString());\n } else if (typeof resource === 'string') {\n const urlObj = new URL(resource);\n const kv = `o11y=${Tracing._reqIndex}`;\n urlObj.search += urlObj.search.startsWith('?') ? `&${kv}` : kv;\n resource = urlObj.toString();\n }\n } catch {}\n }\n delete options?.o11y;\n\n url = resource?.toString();\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n\n if (useTracing) {\n if (resource instanceof Request) {\n if (!method) {\n // the method specifed in options overrides the method in the resource\n method = resource.method;\n }\n url = resource.url;\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n }\n\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n tracingHeadersOptions,\n method,\n absoluteUrl\n );\n\n if (\n !this._applyTraceHeaders(resource, options, traceHeaders) &&\n options === undefined\n ) {\n options = {\n headers: traceHeaders\n };\n }\n }\n\n fetchTime = utility.perfNow();\n return await Tracing._originalFetch.call(\n Tracing._global,\n resource,\n options,\n ...restArgs\n );\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n throw ex;\n } finally {\n try {\n const activityDuration = Tracing._endActivity(activity, url, method);\n if (Tracing._performanceObservability?.isStarted) {\n const requestId = Tracing._extractHeader(\n headerRequestId,\n resource,\n options\n );\n\n Tracing._performanceObservability.addEntry(absoluteUrl, fetchTime, {\n requestId,\n activityDuration\n });\n }\n } finally {\n tasker?.done();\n }\n }\n };\n Tracing._global.fetch = o11yFetch;\n }\n\n private static _endActivity(activity: Activity, url: string, method: string): number {\n if (activity) {\n // We will log only if there's an error, or if we're not\n // otherwise logging as part of performance of resources\n // to avoid double logging\n if (Tracing._performanceObservability?.isStarted && activity.getErrorCount() == 0) {\n activity.discard();\n } else {\n activity.stop(networkSchema, {\n mtd: method,\n url\n });\n }\n return activity.getStopPerfTime() - activity.getStartPerfTime();\n }\n return undefined;\n }\n\n private _overrideXhr(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti\n ): void {\n Tracing._originalXhr = Tracing._global.XMLHttpRequest;\n Tracing._originalXhrOpen = Tracing._originalXhr.prototype.open;\n Tracing._originalXhrSetRequestHeader = Tracing._originalXhr.prototype.setRequestHeader;\n Tracing._originalXhrSend = Tracing._originalXhr.prototype.send;\n\n function postProcess(xhr: O11yXhr, failedAtInit?: boolean): void {\n if (xhr._o11y) {\n const activityDuration = Tracing._endActivity(\n xhr._o11y.activity,\n xhr._o11y.url,\n xhr._o11y.method\n );\n if (!failedAtInit && Tracing._performanceObservability?.isStarted) {\n Tracing._performanceObservability.addEntry(\n xhr._o11y.absoluteUrl,\n xhr._o11y.sendTime,\n {\n requestId: xhr._o11y.requestId,\n activityDuration\n }\n );\n }\n }\n }\n\n Tracing._originalXhr.prototype.open = function (\n this: O11yXhr,\n method: string,\n url: string | URL,\n async?: boolean,\n username?: string | null,\n password?: string | null\n ) {\n this._o11y = {\n method,\n url: url?.toString()\n };\n\n this._o11y.absoluteUrl = utility.tryGetAbsoluteUrl(this._o11y.url);\n Tracing._originalXhrOpen.call(this, method, url, async, username, password);\n };\n\n Tracing._originalXhr.prototype.setRequestHeader = function (\n this: O11yXhr,\n name: string,\n value: string\n ) {\n if (name?.toLowerCase?.() === headerRequestId.toLowerCase()) {\n this._o11y.requestId = value;\n }\n Tracing._originalXhrSetRequestHeader.call(this, name, value);\n };\n\n Tracing._originalXhr.prototype.send = function (this: O11yXhr, ...args) {\n let activity: Activity;\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr: O11yXhr = this;\n try {\n tasker?.add();\n xhr._o11y = xhr._o11y || {};\n xhr._o11y.activity = activity = instr.startActivity(\n activityName || defaultActivityNameForXhrSend\n );\n if (useTracing) {\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n options,\n xhr._o11y.method,\n xhr._o11y.absoluteUrl\n );\n\n Object.entries(traceHeaders).forEach((entry) => {\n xhr.setRequestHeader(entry[0], entry[1]);\n });\n }\n xhr._o11y.sendTime = utility.perfNow();\n Tracing._originalXhrSend.call(this, ...args);\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n postProcess(xhr, true);\n tasker?.done();\n throw ex;\n }\n };\n\n const xhrProxy = new Proxy<XhrType>(Tracing._originalXhr, {\n construct(target: XhrType) {\n const newXhr = new target() as O11yXhr;\n\n // Be the first in the event chain\n newXhr.addEventListener('load', () => {\n postProcess(newXhr);\n tasker?.done();\n });\n newXhr.addEventListener(\n 'error',\n (__err: ProgressEvent<XMLHttpRequestEventTarget>) => {\n try {\n const error = new Error('XHR Network-Level Error');\n if (logErrors) {\n const activity = newXhr._o11y?.activity;\n if (activity) {\n activity.error(error);\n } else {\n instr.error(error);\n }\n }\n postProcess(newXhr);\n } finally {\n tasker?.done();\n }\n }\n );\n newXhr.addEventListener('abort', () => {\n newXhr._o11y?.activity?.discard();\n tasker?.done();\n });\n return newXhr;\n }\n });\n\n Tracing._global.XMLHttpRequest = xhrProxy;\n }\n\n networkInstrumentation(options: boolean | NetworkInstrumentationOptions): void {\n utility.requireArgument(options, 'options', ['boolean', 'object']);\n\n // First disable it if necessary, so we can use the new options if it was already enabled\n this._disableNetworkInstrumentation();\n if (options) {\n const tracingOptions: NetworkInstrumentationOptions =\n typeof options === 'object' ? options : {};\n\n let tasker: TaskerMulti = undefined;\n if (utility.definedValueOrDefault(tracingOptions.useTasker, true)) {\n tasker = this._idleDetector?.declareNotifierTaskMulti('o11y network');\n }\n\n this._enableNetworkInstrumentation(\n utility.definedValueOrDefault(tracingOptions.instrumentation, this._instr),\n utility.definedValueOrDefault(tracingOptions.logErrors, true),\n tracingOptions.activityName,\n utility.definedValueOrDefault(tracingOptions.useTracing, true),\n tracingOptions.tracingHeadersOptions,\n tasker,\n utility.definedValueOrDefault(tracingOptions.logPerformance, true),\n utility.definedValueOrDefault(\n tracingOptions.logPerformanceActivityName,\n defaultTimingActivityName\n ),\n utility.definedValueOrDefault(tracingOptions.skipUrls, []),\n utility.definedValueOrDefault(tracingOptions.fuzzyMapRange, defaultFuzzyMapRange)\n );\n }\n }\n\n resetRequestCounter(): void {\n Tracing._reqIndex = 0;\n }\n\n // returns true if the headers were applied to either the options or the resource.\n private _applyTraceHeaders(\n resource: RequestInfo | URL,\n options: RequestInit,\n traceHeaders: TraceHeaders\n ): boolean {\n if (options?.headers !== undefined) {\n // if headers are defined in the options,\n // they trump any headers defined in the resource\n\n if (options.headers instanceof Headers && typeof options.headers.set === 'function') {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in\n // lib.dom.iterable.d.ts, which doesn't include the set method.\n (options.headers as Headers).set(key, value);\n });\n return true;\n }\n if (Array.isArray(options.headers)) {\n Object.entries(traceHeaders).forEach((entry) => {\n (options.headers as [string, string][]).push(entry);\n });\n return true;\n }\n if (typeof options.headers === 'object') {\n options.headers = Object.assign(options.headers, traceHeaders);\n return true;\n }\n } else if (resource instanceof Request && resource.headers instanceof Headers) {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in lib.dom.d.ts\n resource.headers.set(key, value);\n });\n return true;\n } else if (options) {\n options.headers = Object.assign({}, traceHeaders);\n return true;\n }\n return false;\n }\n}\n","export enum TimerOverride {\n none,\n start,\n stop,\n both\n}\n","import { PublicSafety, SchematizedData, TraceHeaders, utility } from 'o11y/shared';\n\nimport {\n Activity,\n ActivityDetail,\n ActivityStopOptions,\n Schema,\n TracingHeadersOptions\n} from '../interfaces';\nimport { Tracing } from './Tracing';\nimport { TimerOverride } from './TimerOverride';\nexport const timedout = 'timedout';\nexport const terminated = 'terminated';\nexport const discarded = 'discarded';\n\nconst stopReason = {\n timedout,\n terminated,\n discarded\n};\n\nexport type onActivityStop = (detail: ActivityDetail) => void;\nexport type onActivityError = (error: unknown, detail: ActivityDetail) => void;\n\nexport class ActivityImpl implements Activity {\n protected readonly _id: string;\n private readonly _safety: PublicSafety;\n private readonly _usePerf: boolean;\n protected static _count = 0;\n private readonly _perfId: string;\n private readonly _perfName: string;\n private _startTimestamp: number;\n private _startPerfTime: number;\n private _stopPerfTime: number;\n private _stopReason: string;\n private _timer: NodeJS.Timer;\n private _errorCount = 0;\n private _timerOverridden: TimerOverride = TimerOverride.none;\n\n constructor(\n protected readonly _name: string,\n protected readonly _rootId: string,\n private readonly _onStopped: onActivityStop,\n private readonly _onError: onActivityError,\n timeout?: number,\n id?: string,\n protected readonly _isSampled?: boolean,\n _startPerfTime?: number,\n protected readonly _noRerooting?: boolean\n ) {\n const { tsNow, perfNow } = utility.time();\n\n ActivityImpl._count += 1;\n this._id = id || utility.generateUniqueId();\n\n this._usePerf =\n typeof performance !== 'undefined' &&\n typeof performance.mark === 'function' &&\n typeof performance.measure === 'function';\n if (this._usePerf) {\n this._perfName = `${this._name}__${ActivityImpl._count}`;\n this._perfId = `${this._name}__${this.id}`;\n try {\n performance.mark(this._perfId);\n } catch {\n this._usePerf = false;\n }\n }\n\n this._startTimestamp = tsNow;\n this._startPerfTime = perfNow;\n this._overrideTimer(_startPerfTime);\n\n if (timeout > 0) {\n this._timer = setTimeout(() => {\n this._stopReason = this._stopReason || stopReason.timedout;\n this.stop();\n }, timeout);\n }\n this._safety = new PublicSafety();\n }\n\n get id(): string {\n return this._id;\n }\n\n getId(): string {\n return this.id;\n }\n\n getRootId(): string {\n return this._rootId;\n }\n\n get stopReason(): string {\n return this._stopReason;\n }\n\n error(error: unknown, userSchemaOrText?: Schema | string, userData?: SchematizedData): void {\n this._safety.tryCatch(() => {\n this._errorCount += 1;\n if (typeof error === 'string') {\n error = new Error(error);\n }\n this._onError(error, this._getDetail(userSchemaOrText, userData));\n });\n }\n\n stop(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n\n if (options) {\n const perfStart: number = options.perfStartOverride;\n const isStartTimeDefined = utility.requireArgumentIfDefined(\n perfStart,\n 'options.perfStartOverride',\n 'number'\n );\n\n const perfStop: number = options.perfStopOverride;\n const isStopTimeDefined = utility.requireArgumentIfDefined(\n perfStop,\n 'options.perfStopOverride',\n 'number'\n );\n\n if (isStartTimeDefined && perfStart < 0) {\n throw new Error('perfStartOverride, if defined, must be >= 0');\n }\n\n if (\n isStopTimeDefined &&\n (perfStop < 0 ||\n perfStop < (isStartTimeDefined ? perfStart : this._startPerfTime) ||\n perfStop > utility.time().perfNow + 100) // 100ms for safety\n ) {\n throw new Error(\n 'perfStopOverride, if defined, must be >= 0 and >= startTime and <= now'\n );\n }\n }\n\n this._stopInternal(userSchemaOrText, userData, options);\n });\n }\n\n private _overrideTimer(perfStartTime?: number, perfStopTime?: number): void {\n if (perfStartTime !== undefined) {\n this._startTimestamp = Math.round(\n this._startTimestamp - (this._startPerfTime - perfStartTime)\n );\n this._startPerfTime = perfStartTime;\n this._setTimerOverride(TimerOverride.start);\n }\n\n if (perfStopTime !== undefined) {\n this._stopPerfTime = perfStopTime;\n this._setTimerOverride(TimerOverride.stop);\n }\n }\n\n private _setTimerOverride(value: TimerOverride): void {\n if (\n this._timerOverridden === TimerOverride.both ||\n this._timerOverridden === value ||\n value === TimerOverride.none\n ) {\n return;\n }\n this._timerOverridden =\n this._timerOverridden === TimerOverride.none ? value : TimerOverride.both;\n }\n\n private _stopInternal(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n // First things first.\n const stopPerfTime = utility.perfNow();\n if (this._usePerf) {\n try {\n // Use a more user-friendly name for measure.\n if (this._stopReason !== stopReason.discarded) {\n performance.measure(this._perfName, this._perfId);\n }\n performance.clearMarks(this._perfId);\n performance.clearMeasures(this._perfName);\n } catch {}\n }\n\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n if (this.isStopped) {\n // Already stopped\n return;\n }\n\n if (options) {\n this._overrideTimer(options.perfStartOverride, options.perfStopOverride);\n }\n\n // We may set this already in override so check that here\n this._stopPerfTime =\n this._timerOverridden === TimerOverride.none ||\n this._timerOverridden === TimerOverride.start\n ? stopPerfTime\n : this._stopPerfTime;\n\n const activityDetail: ActivityDetail = this._getDetail(userSchemaOrText, userData);\n this._onStopped(activityDetail);\n }\n\n get isStopped(): boolean {\n return this._stopPerfTime !== undefined;\n }\n\n discard(): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.discarded;\n this.stop();\n });\n }\n\n terminate(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.terminated;\n this.stop(userSchemaOrText, userData, options);\n });\n }\n\n getIsSampled(): boolean {\n return this._isSampled || false;\n }\n\n protected _getDetail(\n userSchemaOrText: Schema | string,\n userData: SchematizedData\n ): ActivityDetail {\n return {\n id: this._id,\n rootId: this._rootId,\n name: this._name,\n userSchemaOrText: userSchemaOrText,\n userData,\n stopReason: this._stopReason,\n startTimestamp: this._startTimestamp,\n startPerfTime: this._startPerfTime,\n stopPerfTime: this._stopPerfTime,\n errorCount: this._errorCount,\n isSampled: this.getIsSampled(),\n timerOverridden: this._timerOverridden,\n noRerooting: this._noRerooting\n };\n }\n\n public getTraceHeaders(options: TracingHeadersOptions): TraceHeaders {\n // Normally, the root activity ID is the traceId.\n // If the activity is root, it's ID is (also) the traceId.\n // If the activity has no root, it's ID is (also) the traceId. i.e. It creates its own trace.\n const spanId = this.id;\n const traceId = this._rootId || spanId;\n\n return Tracing.getHeaders(traceId, spanId, this.getIsSampled(), options);\n }\n\n getStartTimestamp(): number {\n return this._startTimestamp;\n }\n\n getStartPerfTime(): number {\n return this._startPerfTime;\n }\n\n getStopPerfTime(): number {\n return this._stopPerfTime;\n }\n\n getErrorCount(): number {\n return this._errorCount;\n }\n}\n","import { Activity, TracingHeadersOptions } from '../interfaces';\n\nconst id: string = new Array(16).fill(0).join('');\nclass ActivityNoOp implements Activity {\n getId(): string {\n return id;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const activityNoOp = Object.freeze(new ActivityNoOp());\n","import { SchematizedPayload } from '../interfaces';\nimport { EventData, InstrumentedEventData, MouseEventData } from '../interfaces-private';\nimport { DomEventData, DomEventDataField } from '../types/TypeDefinitions-Private';\nimport { schemaUtil, utility } from 'o11y/shared';\n\nexport class DomEventHelpers {\n getInstrumentedEventData(\n domEventDataField: DomEventDataField,\n domEventData: DomEventData,\n handledBy: HTMLElement,\n userPayload: SchematizedPayload\n ): InstrumentedEventData {\n const instrumentedEvent: InstrumentedEventData = {\n ownerComponent: handledBy.tagName,\n parentComponent: handledBy.parentElement?.tagName || undefined,\n simplePath: utility.getXpath(handledBy)\n };\n\n switch (domEventDataField) {\n case DomEventDataField.BaseEvent:\n instrumentedEvent.baseEvent = domEventData as EventData;\n break;\n case DomEventDataField.MouseEvent:\n instrumentedEvent.mouseEvent = domEventData as MouseEventData;\n break;\n }\n\n if (userPayload) {\n instrumentedEvent.userPayload = schemaUtil.makePayload(\n userPayload.schema,\n userPayload.payload,\n true\n );\n }\n\n return instrumentedEvent;\n }\n\n getEventData(e: MouseEvent | UIEvent | Event): EventData {\n return {\n type: e.type\n };\n }\n\n getMouseEventData(e: MouseEvent): MouseEventData {\n return {\n altKey: e.altKey,\n bubbles: e.bubbles,\n button: e.button,\n buttons: e.buttons,\n cancelable: e.cancelable,\n clientX: e.clientX,\n clientY: e.clientY,\n composed: e.composed,\n defaultPrevented: e.defaultPrevented,\n detail: e.detail,\n eventPhase: e.eventPhase,\n isTrusted: e.isTrusted,\n timeStamp: e.timeStamp,\n type: e.type,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n movementX: e.movementX,\n movementY: e.movementY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n pageX: e.pageX,\n pageY: e.pageY,\n screenX: e.screenX,\n screenY: e.screenY,\n shiftKey: e.shiftKey\n };\n }\n}\n\nconst singleton = new DomEventHelpers();\nexport const domEventHelpers = singleton;\n","import { BucketHistogram } from '../interfaces/BucketHistogram';\nimport { MetricsTags, utility } from 'o11y/shared';\nimport { BucketMetric } from 'src/interfaces';\n\nexport class BucketHistogramImpl implements BucketMetric<number[]>, BucketHistogram {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n private readonly _buckets: number[],\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n getBuckets(): number[] {\n return this.buckets;\n }\n\n get buckets(): number[] {\n return this._buckets.slice(0, this._buckets.length);\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('BucketHistogram can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { UpCounter } from '../interfaces/UpCounter';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class UpCounterImpl implements Metric<number>, UpCounter {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _value = 0;\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n value?: number\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (value !== undefined) {\n this._value = value;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number {\n return this._value;\n }\n\n increment(value = 1): void {\n if (typeof value === 'number' && value > 0) {\n this._value += Math.round(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('UpCounter can only increment positive numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._value = 0;\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): Readonly<MetricsTags> {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { ValueRecorder } from '../interfaces/ValueRecorder';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class ValueRecorderImpl implements Metric<number[]>, ValueRecorder {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n // TODO: Add sampling/throttling to put a cap on the size of the array\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('ValueRecorder can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","export class SizeLimitedMap<K, V> {\n private readonly _map = new Map<K, V>();\n\n private _maxSize: number;\n constructor(maxSize: number) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get(key: K): V {\n return this._map.get(key);\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): boolean {\n if (this.has(key) || this._map.size < this.maxSize) {\n this._map.set(key, value);\n return true;\n }\n return false;\n }\n\n getElements(): V[] {\n return Array.from(this._map.values());\n }\n\n clear(): void {\n this._map.clear();\n }\n}\n","import { MetricsReporter, UpCounter, ValueRecorder } from '../interfaces';\n\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\nimport { SizeLimitedMap } from './SizeLimitedMap';\nimport { MetricsTags } from 'o11y/shared';\n\nconst maxCounters = 1000;\nconst maxValueRecorders = 500;\nconst maxBucketHistograms = 500;\n\nenum MetricType {\n Counter,\n Percentile,\n BucketHistogram\n}\n\nexport class MetricsImpl implements MetricsReporter {\n private readonly _upCounters = new SizeLimitedMap<string, UpCounterImpl>(maxCounters);\n private readonly _valueRecorders = new SizeLimitedMap<string, ValueRecorderImpl>(\n maxValueRecorders\n );\n private readonly _bucketHistograms = new SizeLimitedMap<string, BucketHistogramImpl>(\n maxBucketHistograms\n );\n\n constructor(\n private readonly _ownerName: string,\n private readonly _getOwnerAppName: () => string\n ) {}\n\n incrementCounter(\n operation: string,\n increment: number,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._upCounter(operation, tags).increment(increment);\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._tagError(tags, hasError);\n this._valueRecorder(operation, tags).record(value);\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._bucketHistogram(operation, tags, buckets).record(value);\n }\n\n private _bucketHistogram(name: string, tags: MetricsTags, buckets: number[]): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(\n name,\n tags,\n MetricType.BucketHistogram\n );\n let instrument = this._bucketHistograms.get(key);\n if (!instrument) {\n instrument = new BucketHistogramImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags,\n buckets\n );\n if (!this._bucketHistograms.set(key, instrument)) {\n throw new Error(`Max size of ${maxBucketHistograms} exceeded for BucketHistograms`);\n }\n }\n return instrument;\n }\n\n private _upCounter(name: string, tags: MetricsTags): UpCounter {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Counter);\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._upCounters.set(key, instrument)) {\n throw new Error(`Max size of ${maxCounters} exceeded for UpCounters`);\n }\n }\n return instrument;\n }\n\n private _valueRecorder(name: string, tags: MetricsTags): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Percentile);\n let instrument = this._valueRecorders.get(key);\n if (!instrument) {\n instrument = new ValueRecorderImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._valueRecorders.set(key, instrument)) {\n throw new Error(`Max size of ${maxValueRecorders} exceeded for ValueRecorders`);\n }\n }\n return instrument;\n }\n\n getUpCounters(): UpCounterImpl[] {\n return this._upCounters.getElements();\n }\n\n getValueRecorders(): ValueRecorderImpl[] {\n return this._valueRecorders.getElements();\n }\n\n getBucketHistograms(): BucketHistogramImpl[] {\n return this._bucketHistograms.getElements();\n }\n\n private _tagError(tags: MetricsTags, hasError: boolean): void {\n tags.status = hasError === true ? 'error' : 'success';\n }\n\n private _getKeyAndSortedTags(\n operation: string,\n tags: MetricsTags,\n metricType: MetricType\n ): { key: string; sortedTags: MetricsTags } {\n // This method should be called after any manipulation of tags\n const sortedTags = Object.keys(tags)\n .sort()\n .reduce((prev: MetricsTags, curr: string) => {\n prev[curr] = tags[curr];\n return prev;\n }, {});\n const key = `${MetricType[metricType]}:${operation}${JSON.stringify(sortedTags)}`;\n return {\n key,\n sortedTags\n };\n }\n}\n","export class MockBase {\n // All mock objects should extend this\n public readonly isMock = true;\n}\n","import {\n activitySchema,\n errorSchema,\n instrumentedEventSchema,\n payloadDiagsSchema,\n simpleSchema\n} from 'o11y_schema/sf_instrumentation';\n\nimport {\n LightningElement,\n LogPromptListener,\n maxStringLengthAppLimit,\n MetricsTags,\n payloadUtility,\n PublicSafety,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\nimport {\n Activity,\n ActivityApiOptions,\n ActivityDetail,\n ApiOptions,\n BucketMetric,\n DomEventApiOptions,\n Instrumentation,\n InstrumentationContext,\n Metric,\n MetricsReporter,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { ActivityData, ErrorData, InstrumentedEventData } from '../interfaces-private';\n\nimport { ActivityImpl, discarded, onActivityError, onActivityStop } from './ActivityImpl';\nimport { activityNoOp } from './ActivityNoOp';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { domEventHelpers } from './DomEventHelpers';\nimport { MetricsImpl } from './MetricsImpl';\nimport { MockBase } from './MockObj';\nimport { NextgenImpl } from './NextgenImpl';\nimport { DomEventDataField } from 'src/types/TypeDefinitions-Private';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\nimport { ActivityStartApiOptions } from 'src/interfaces/ActivityStartApiOptions';\n\n// @W-10241440, disable timeouts\nconst maxActivityDurationMsecs: number = undefined;\nconst reservedMetricCharacters = ['`'];\nconst reservedMetricNames = {\n internalError: 'o11y-error'\n};\nconst denyListMetricNames = Object.freeze(Array.from(Object.values(reservedMetricNames)));\n\nexport class InstrumentationImpl implements Instrumentation, MetricsReporter {\n protected static readonly defaultAppName = 'APP_NOT_REGISTERED';\n private readonly _metrics: MetricsImpl;\n private readonly _onActivityStoppedCallback: onActivityStop =\n this._handleActivityStop.bind(this);\n protected readonly _onActivityErrorCallback: onActivityError =\n this._handleActivityError.bind(this);\n protected readonly _safety: PublicSafety;\n private readonly _simpleTextMaxLength: number;\n\n constructor(private readonly _nextGen: NextgenImpl, private readonly _name: string) {\n for (const reservedChar of reservedMetricCharacters) {\n if (this._name.indexOf(reservedChar) >= 0) {\n throw new Error(`Name cannot include the reserved character \"${reservedChar}\"`);\n }\n }\n\n this._safety = new PublicSafety({\n increment: (increment) => this._incrementError(increment)\n });\n\n this._metrics = this._initMetrics();\n\n const simpleTextOptions = schemaUtil.getOptions(simpleSchema, 'Simple', 'text');\n this._simpleTextMaxLength = simpleTextOptions\n ? simpleTextOptions['(meta.max_length)']\n : maxStringLengthAppLimit;\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(\n this.name,\n () => this._nextGen.appName || InstrumentationImpl.defaultAppName\n );\n }\n\n private _incrementError(increment = 1): void {\n // Note: this metric was setting false for hasError until 246.3.x\n this._metrics.incrementCounter(reservedMetricNames.internalError, increment, true);\n }\n\n get name(): string {\n return this._name;\n }\n\n /**\n * This function is to allow for convenience calls to our API, where a string can\n * be provided instead of an actual Schema. In that case, we wrap the text in\n * a built-in simple schema.\n * @param userSchemaOrText Schema or string.\n * @param userData\n * @param onlyIfBoth If true, then both the schema and the data must be specified.\n * @returns\n */\n protected _wrapUserPayload(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n onlyIfBoth = false\n ): SchematizedPayload {\n let userSchema: Schema;\n if (typeof userSchemaOrText === 'string') {\n userSchema = simpleSchema;\n if (userSchemaOrText) {\n userData = {\n text: userSchemaOrText.substring(0, this._simpleTextMaxLength)\n };\n } else {\n userData = undefined;\n }\n } else {\n userSchema = userSchemaOrText;\n }\n\n return schemaUtil.makePayload(userSchema, userData, onlyIfBoth);\n }\n\n private _getEffectiveRootId(options?: ApiOptions): string {\n return (\n options?.instrumentationContext?.rootId ??\n this._nextGen.getDefaultInstrumentationContext().rootId\n );\n }\n\n /**\n *\n * @param userSchema The schema of the second argument. Also used as the basis for auto-generated\n * counters for log calls using the same schema.\n * @param userData Optional data that complies with the provided schema\n */\n log(userSchemaOrText: Schema | string, userData?: SchematizedData, options?: ApiOptions): void {\n this._safety.tryCatch(() => {\n const timestamp = utility.time().tsNow;\n utility.requireArgument(userSchemaOrText, 'userSchemaOrText', ['object', 'string']);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData);\n\n if (userPayload?.payload) {\n this._logInternal(\n this.name,\n userPayload.schema,\n userPayload.payload,\n timestamp,\n this._getEffectiveRootId(options)\n );\n }\n });\n }\n\n protected _logInternal(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId?: string\n ): number {\n const sequence = this._nextGen.addLog(loggerName, schema, data, timestamp, rootId);\n if (!utility.isProduction) {\n const extraFields: string[] = payloadUtility.getExtraFields(schema, data);\n if (!utility.isProduction && extraFields.length > 0) {\n this.error('Extra fields', payloadDiagsSchema, {\n extras: extraFields\n });\n }\n }\n return sequence;\n }\n\n error(\n error: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ApiOptions\n ): void {\n return this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const rootId: string = this._getEffectiveRootId(options);\n this._errorInternal(error, userSchemaOrText, userData, undefined, rootId);\n });\n }\n\n protected _errorInternal(\n err: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n activityId?: string,\n rootActivityId?: string\n ): number {\n const loggedTimestamp = utility.time().tsNow;\n\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n let msg: string;\n if (err === undefined || err === null || typeof err.toString !== 'function') {\n msg = 'UNKNOWN';\n } else {\n msg = err.toString();\n }\n error = new Error(msg);\n }\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData, true);\n\n const errorData: ErrorData = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n userPayload,\n activityId\n };\n\n return this._logInternal(\n this.name,\n errorSchema,\n errorData,\n loggedTimestamp,\n rootActivityId\n );\n }\n\n startActivity(name: string, options?: ActivityStartApiOptions): Activity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n let context: InstrumentationContext;\n let noRerooting = options?.perfStartOverride !== undefined;\n const rootId: string = options?.instrumentationContext?.rootId;\n if (rootId) {\n noRerooting = true; // root info is explicitly specified, do not override\n context = {\n rootId,\n isRootActivitySampled: options.instrumentationContext.isRootActivitySampled\n };\n } else {\n // By definition, an activity is sampled if root activity is sampled\n context = this._nextGen.getDefaultInstrumentationContext();\n }\n const activity: Activity = new ActivityImpl(\n name,\n context.rootId,\n this._onActivityStoppedCallback,\n this._onActivityErrorCallback,\n maxActivityDurationMsecs,\n undefined,\n context.isRootActivitySampled,\n options?.perfStartOverride,\n noRerooting\n );\n return activity;\n }, activityNoOp);\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const userPayload = this._wrapUserPayload(detail.userSchemaOrText, detail.userData, true);\n\n return {\n id: detail.id,\n name: detail.name,\n duration: detail.stopPerfTime - detail.startPerfTime,\n stopReason: detail.stopReason,\n userPayload,\n errorCount: detail.errorCount,\n isSampled: detail.isSampled,\n timerOverridden: detail.timerOverridden,\n isRerooted: detail.isRerooted\n };\n }\n\n private _handleActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n\n if (!detail.isRoot && !detail.noRerooting) {\n const rahe: RootActivityHistoryEntry = this._nextGen.getRootActivityHistoryEntryByTime(\n detail.startPerfTime\n );\n if ((!rahe && detail.rootId !== undefined) || (rahe && detail.rootId !== rahe.id)) {\n detail.rootId = rahe?.id;\n detail.isSampled = rahe?.isSampled || false;\n detail.isRerooted = true;\n\n // Note: we cannot retroactively reroot activity errors\n }\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp, detail.rootId);\n }\n\n protected _logActivity(\n activityData: ActivityData,\n startTimestamp: number,\n rootId?: string\n ): void {\n this._logInternal(this.name, activitySchema, activityData, startTimestamp, rootId);\n }\n\n private _handleActivityError(error: unknown, detail: ActivityDetail): void {\n this._errorInternal(\n error,\n detail.userSchemaOrText,\n detail.userData,\n detail.id,\n detail.rootId\n );\n }\n\n domEvent(\n event: Event,\n handledBy: HTMLElement | LightningElement,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: DomEventApiOptions\n ): void {\n this._safety.tryCatch(() => {\n const tsNow = utility.time().tsNow;\n\n utility.requireArgument(event, 'event', [Event, MockBase]);\n // TODO: Using 'object' instead of 'LightningElement' for now (no imports)\n utility.requireArgument(handledBy, 'handledBy', [HTMLElement, 'object']);\n\n let htmlElement;\n if (handledBy instanceof HTMLElement) {\n htmlElement = handledBy;\n } else {\n handledBy = handledBy as LightningElement;\n // Convenience for LightningElement developers who pass \"this\" in handledBy.\n // Get the underlying HTML element\n if (handledBy.template?.host instanceof HTMLElement) {\n htmlElement = handledBy.template.host;\n } else {\n utility.requireArgument(undefined, 'handledBy');\n }\n }\n\n const userPayload: SchematizedPayload = this._wrapUserPayload(\n userSchemaOrText,\n userData,\n true\n );\n\n const rootId: string = this._getEffectiveRootId(options);\n\n switch (event.type) {\n case 'click': {\n const mouseEvent = event as MouseEvent;\n\n // If the user has called domEvent API on this event explicitly,\n // then we don't need to log it by default.\n const acd: AutomaticClickTracker = this._nextGen.getClickTracker();\n if (acd) {\n acd.markEventHandled(mouseEvent);\n }\n\n const captureMouse = options?.captureMouseData;\n\n // Distinguish between different fields of the oneof\n const instrumentedEvent: InstrumentedEventData =\n domEventHelpers.getInstrumentedEventData(\n captureMouse\n ? DomEventDataField.MouseEvent\n : DomEventDataField.BaseEvent,\n captureMouse\n ? domEventHelpers.getMouseEventData(mouseEvent)\n : domEventHelpers.getEventData(mouseEvent),\n htmlElement,\n userPayload\n );\n instrumentedEvent.auto = options?._auto;\n\n this._logInternal(\n this.name,\n instrumentedEventSchema,\n instrumentedEvent,\n tsNow,\n rootId\n );\n break;\n }\n default:\n throw new Error(utility.notImplemented);\n }\n });\n }\n\n incrementCounter(\n operation: string,\n increment = 1,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(increment, 'increment', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n this._metrics.incrementCounter(operation, increment, hasError, tags);\n });\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.trackValue(operation, value, hasError, tags);\n });\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[] = [],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(buckets, 'buckets', Array);\n Object.entries(buckets).forEach((entry) => {\n utility.requireArgument(entry[1], `Bucket value for '${entry[0]}'`, 'number');\n });\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.bucketValue(operation, value, buckets, hasError, tags);\n });\n }\n\n getUpCounters(): Metric<number>[] {\n return this._metrics.getUpCounters().filter((m) => m.getLastUpdatedOn());\n }\n\n getValueRecorders(): Metric<number[]>[] {\n return this._metrics.getValueRecorders().filter((m) => m.getLastUpdatedOn());\n }\n\n getBucketHistograms(): BucketMetric<number[]>[] {\n return this._metrics.getBucketHistograms().filter((m) => m.getLastUpdatedOn());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n utility.requireArgument(listener, 'listener', 'function');\n this._nextGen.registerForLogPrompt(listener);\n }\n\n _getAsaOptions(options?: ActivityApiOptions): ActivityStartApiOptions {\n return options\n ? Object.assign(\n {\n instrumentationContext: options?.instrumentationContext\n },\n options.startOptions\n )\n : undefined;\n }\n\n activity<T>(name: string, execute: (act: Activity) => T, options?: ActivityApiOptions): T {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n\n async activityAsync<T>(\n name: string,\n execute: (act: Activity) => Promise<T>,\n options?: ActivityApiOptions\n ): Promise<T> {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return await execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n}\n","import { utility } from 'o11y/shared';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\n\nconst GRACE = 0.1; // 10%\nconst DEFAULT_LIMIT = 20; // Must be a positive number\n\nexport class RootActivityHistoryImpl {\n private readonly _historyMap = new Map<string, RootActivityHistoryEntry>();\n private readonly _historyList = new Array<RootActivityHistoryEntry>();\n private readonly _graceCount: number;\n private readonly _realLimit: number;\n\n constructor(limit?: number) {\n if (utility.requireArgumentIfDefined(limit, 'limit', 'number')) {\n limit = Math.ceil(limit);\n if (limit <= 0) {\n throw new Error('Limit must be a positive number');\n }\n } else {\n limit = DEFAULT_LIMIT;\n }\n this._graceCount = Math.max(1, Math.floor(limit * GRACE));\n\n // We add one to the limit because we will never delete the first root activity.\n this._realLimit = 1 + limit + this._graceCount;\n }\n\n add(entry: RootActivityHistoryEntry): void {\n if (this._historyMap.has(entry.id)) {\n throw new Error(\n `RootActivityHistoryImpl.add: entry already exists for rootId: ${entry.id}`\n );\n }\n\n this._historyMap.set(entry.id, entry);\n this._historyList.push(entry);\n\n if (this._historyList.length === this._realLimit) {\n // Start deleting from the second element because the first root activity\n // tends to be special.\n const removed = this._historyList.splice(1, this._graceCount);\n removed.forEach((e) => this._historyMap.delete(e.id));\n }\n }\n\n get count(): number {\n return this._historyList.length;\n }\n\n findById(rootId: string): RootActivityHistoryEntry {\n return this._historyMap.get(rootId);\n }\n\n findByTime(atTime: number): RootActivityHistoryEntry {\n let closest: RootActivityHistoryEntry;\n let closestDiff = Number.MAX_VALUE;\n\n // We have to iterate all the elements because we can't rely on an implicit sort\n // order of time of add, as the start time can be modified at any time.\n for (const entry of this._historyList) {\n const startDelta = atTime - entry.startPerfTime;\n const isDuringRoot =\n startDelta >= 0 &&\n (entry.stopPerfTime === undefined || atTime < entry.stopPerfTime);\n if (isDuringRoot && startDelta < closestDiff) {\n closest = entry;\n closestDiff = startDelta;\n }\n }\n return closest;\n }\n}\n","import { RootActivity, Schema } from '../interfaces';\nimport { ActivityDetail } from '../interfaces/ActivityDetail';\nimport { ActivityImpl, onActivityError, onActivityStop } from './ActivityImpl';\nimport { SchematizedData, utility } from 'o11y/shared';\n\nexport class RootActivityImpl extends ActivityImpl implements RootActivity {\n constructor(\n name: string,\n onStopped: onActivityStop,\n onError: onActivityError,\n rootId?: string,\n isSampled?: boolean,\n startPerfTime?: number\n ) {\n super(\n name,\n undefined,\n onStopped,\n onError,\n undefined,\n rootId || utility.generateUniqueId(32),\n isSampled,\n startPerfTime\n );\n }\n\n private _preRootId: string;\n get preRootId(): string {\n return this._preRootId;\n }\n set preRootId(value: string) {\n this._preRootId = value;\n }\n\n protected _getDetail(userSchema: Schema, userData: SchematizedData): ActivityDetail {\n const detail = super._getDetail(userSchema, userData);\n detail.isRoot = true;\n detail.preRootId = this.preRootId;\n return detail;\n }\n}\n","import { RootActivity, TracingHeadersOptions } from '../interfaces';\n\nconst rootId: string = new Array(32).fill(0).join('');\nclass RootActivityNoOp implements RootActivity {\n getId(): string {\n return rootId;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const rootActivityNoOp = Object.freeze(new RootActivityNoOp());\n","import { utility } from 'o11y/shared';\n\nimport { ActivityDetail, ActivityStartOptions, RootActivity } from '../interfaces';\nimport { ActivityData } from '../interfaces-private';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\nimport { discarded, onActivityStop } from './ActivityImpl';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { MetricsImpl } from './MetricsImpl';\nimport { NextgenImpl } from './NextgenImpl';\nimport { RootActivityHistoryImpl } from './RootActivityHistoryImpl';\nimport { RootActivityImpl } from './RootActivityImpl';\nimport { rootActivityNoOp } from './RootActivityNoOp';\n\nexport class AppInstrumentationImpl extends InstrumentationImpl {\n private _singleRootActivity: RootActivityImpl; // Not used when _allowMulti = true\n private _rootActivityHistory = new RootActivityHistoryImpl();\n\n private readonly _onRootActivityStoppedCallback: onActivityStop =\n this._handleRootActivityStop.bind(this);\n\n constructor(_nextGen: NextgenImpl, _name: string, private readonly _allowMulti: boolean) {\n super(_nextGen, _name);\n }\n\n startRootActivity(\n name: string,\n rootId?: string,\n isSampled?: boolean,\n options?: ActivityStartOptions\n ): RootActivity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n\n const newRootActivity = new RootActivityImpl(\n name,\n this._onRootActivityStoppedCallback,\n this._onActivityErrorCallback,\n rootId,\n isSampled,\n options?.perfStartOverride\n );\n\n if (!this._allowMulti) {\n const entry: RootActivityHistoryEntry = {\n id: newRootActivity.getId(),\n name,\n startPerfTime: newRootActivity.getStartPerfTime(),\n isSampled: newRootActivity.getIsSampled()\n };\n this._rootActivityHistory.add(entry);\n\n if (this._singleRootActivity && !this._singleRootActivity.isStopped) {\n const preRootId = this._singleRootActivity.getId();\n this._singleRootActivity.terminate();\n newRootActivity.preRootId = preRootId;\n }\n this._singleRootActivity = newRootActivity;\n }\n\n return newRootActivity as RootActivity;\n }, rootActivityNoOp);\n }\n\n private _handleRootActivityStop(detail: ActivityDetail): void {\n // If we are here, this is the first time the activity is being stopped.\n\n const historyEntry = this._rootActivityHistory.findById(detail.id);\n if (historyEntry) {\n historyEntry.stopPerfTime = detail.stopPerfTime;\n // Also, do the fields that may be overridden at stop time.\n historyEntry.startPerfTime = detail.startPerfTime;\n }\n\n if (detail.stopReason === discarded) {\n return;\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp);\n this._singleRootActivity = undefined;\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const activityData: ActivityData = super._getActivityData(detail);\n activityData.isRoot = detail.isRoot;\n activityData.preRootId = detail.preRootId;\n return activityData;\n }\n\n getSingleRootActivityId(): string {\n return this._singleRootActivity?.getId();\n }\n\n isSingleRootActivitySampled(): boolean {\n return this._singleRootActivity?.getIsSampled();\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(this.name, () => this.name);\n }\n\n getRootActivityHistoryEntry(atTime: number): RootActivityHistoryEntry {\n return this._rootActivityHistory.findByTime(atTime);\n }\n}\n","import { Instrumentation } from '../interfaces';\nimport { utility } from 'o11y/shared';\n\nconst pathLimit = 5;\n\nexport class AutomaticClickTracker {\n private _ignoredEvent: Event;\n private _isActive = false;\n private readonly _boundClickListener = this._clickListener.bind(this);\n\n constructor(private readonly _instr: Instrumentation, private readonly _doc: Document) {\n utility.requireArgument(_instr, '_instr');\n utility.requireArgument(_doc, '_doc');\n }\n\n activate(): void {\n if (!this._isActive) {\n this._doc.addEventListener('click', this._boundClickListener, true);\n this._isActive = true;\n }\n }\n\n deactivate(): void {\n if (this._isActive) {\n this._doc.removeEventListener('click', this._boundClickListener, true);\n this._isActive = false;\n }\n }\n\n markEventHandled(event: MouseEvent): void {\n this._ignoredEvent = event;\n }\n\n private _clickListener(event: MouseEvent): void {\n let eventTargets: EventTarget[] = event.composedPath?.();\n if (!eventTargets || !eventTargets.length) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n eventTargets = (event as any).path;\n }\n const handledBy: HTMLElement = this._getClickableElement(eventTargets);\n\n if (handledBy) {\n // Immediate\n setTimeout(() => {\n if (event !== this._ignoredEvent) {\n this._instr.domEvent(event, handledBy, undefined, undefined, {\n _auto: true\n });\n }\n });\n }\n }\n\n private _getClickableElement(path: EventTarget[]): HTMLElement {\n const limit = path ? Math.min(path.length, pathLimit) : 0;\n for (let x = 0; x < limit; x += 1) {\n const currentElement = path[x] as HTMLElement;\n const tagName = currentElement.tagName?.toLowerCase();\n if (tagName === 'a' || tagName === 'button') {\n return currentElement;\n }\n if (tagName === 'input') {\n const inputElement = currentElement as HTMLInputElement;\n if (inputElement.type?.toLowerCase() === 'button') {\n return inputElement;\n }\n }\n }\n return undefined;\n }\n}\n","import { utility } from 'o11y/shared';\nimport { Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n MESSAGE_TYPE_LOG,\n MESSAGE_TYPE_METRICS,\n MESSAGE_TYPE_HANDSHAKE,\n MessageChannelData\n} from './SenderConnector';\n\nexport const MESSAGE_FROM_RECEIVER = 'o11y:receiver';\n\nexport type LogCallback = (log: SenderLogMessage) => void;\nexport type MetricsCallback = (metric: SenderMetricsMessage) => void;\n\nexport type CommErrorInfo = {\n data: unknown;\n};\n// This callback will be called if we receive data that can't be serialized.\nexport type CommErrorCallback = () => void;\n\nenum CommState {\n Unknown,\n Opening\n}\n\ntype CommStatus = {\n state: CommState;\n port: MessagePort;\n};\n\nexport class ReceiverConnector {\n private _senders: Map<Communicator, CommStatus> = new Map();\n\n constructor(\n private readonly _logCallback: LogCallback,\n private readonly _metricsCallback: MetricsCallback,\n private readonly _commErrorCallback: CommErrorCallback\n ) {\n utility.requireArgument(this._logCallback, '_logCallback', 'function');\n utility.requireArgument(this._metricsCallback, '_metricsCallback', 'function');\n utility.requireArgument(this._commErrorCallback, '_commErrorCallback', 'function');\n }\n\n public openComms(sender: Communicator): void {\n utility.requireArgument(sender, 'sender', 'object');\n\n if (!this._senders.has(sender)) {\n const messageChannel = new MessageChannel();\n\n const status: CommStatus = {\n state: CommState.Opening,\n port: messageChannel.port1\n };\n this._senders.set(sender, status);\n\n status.port.onmessage = this._messagePortEventHandler.bind(this);\n // According to the docs, this error occurs on the receiving end.\n status.port.onmessageerror = this._messagePortErrorHandler.bind(this);\n\n sender.postMessage(\n {\n from: MESSAGE_FROM_RECEIVER,\n type: MESSAGE_TYPE_HANDSHAKE\n },\n '*',\n [messageChannel.port2]\n );\n }\n }\n\n public closeComms(sender: Communicator): void {\n const status = this._senders.get(sender);\n if (status) {\n status.port.onmessage = undefined;\n status.port.onmessageerror = undefined;\n this._senders.delete(sender);\n }\n }\n\n private _messagePortEventHandler(e: MessageEvent<MessageChannelData>): void {\n if (e.data.type === MESSAGE_TYPE_LOG) {\n this._logCallback(e.data.data as SenderLogMessage);\n } else if (e.data.type === MESSAGE_TYPE_METRICS) {\n this._metricsCallback(e.data.data as SenderMetricsMessage);\n }\n }\n\n private _messagePortErrorHandler(): void {\n // Not passing any error info for now\n this._commErrorCallback();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { AllowedOrigins, Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport { MESSAGE_FROM_RECEIVER } from './ReceiverConnector';\n\nexport const MESSAGE_FROM_SENDER = 'o11y:sender';\nexport const MESSAGE_TYPE_HANDSHAKE = 'handshake';\nexport const MESSAGE_TYPE_LOG = 'log';\nexport const MESSAGE_TYPE_METRICS = 'metrics';\n\nexport type HandshakeData = {\n from: string;\n type: string;\n};\n\nexport type MessageChannelData = {\n // No need for from here.\n type: string;\n data: SenderLogMessage | SenderMetricsMessage;\n};\n\n// This is typically the iframe\nexport class SenderConnector {\n private readonly _messageEventHandlerFunc = this._messageEventHandler.bind(this);\n private _otherPort: MessagePort;\n private _handshakeComplete = false;\n private _logBuffer: SenderLogMessage[] = [];\n private _metricsBuffer: SenderMetricsMessage[] = [];\n\n constructor(\n private readonly _self: Communicator,\n private readonly _allowedOrigins?: AllowedOrigins\n ) {\n utility.requireArgument(this._self, '_self', 'object');\n utility.requireArgumentIfDefined(_allowedOrigins, 'allowedOrigins', Array);\n\n // Start listening to handshake return\n this._self.addEventListener('message', this._messageEventHandlerFunc);\n }\n\n private _messageEventHandler(e: MessageEvent<HandshakeData>): void {\n // When the receiever sends the handshake, it's ready to receive data\n if (\n e.data.from === MESSAGE_FROM_RECEIVER &&\n e.data.type === MESSAGE_TYPE_HANDSHAKE &&\n e.ports[0] instanceof MessagePort &&\n utility.isAllowedOrigin(e.origin, this._allowedOrigins)\n ) {\n this._handshakeComplete = true;\n this._self.removeEventListener('message', this._messageEventHandlerFunc);\n this._otherPort = e.ports[0];\n this._emptyBuffers();\n }\n }\n\n public sendLog(log: SenderLogMessage): void {\n if (!this._handshakeComplete) {\n this._logBuffer.push(log);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_LOG,\n data: log\n });\n }\n }\n\n public sendMetrics(metrics: SenderMetricsMessage): void {\n if (!this._handshakeComplete) {\n this._metricsBuffer.push(metrics);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_METRICS,\n data: metrics\n });\n }\n }\n\n private _emptyBuffers(): void {\n this._logBuffer.forEach((log) => this.sendLog(log));\n this._metricsBuffer.forEach((metrics) => this.sendMetrics(metrics));\n this._logBuffer = undefined;\n this._metricsBuffer = undefined;\n }\n}\n","import { metricsUtility } from 'o11y/shared';\nimport { BucketMetric, Metric, MetricsReporter } from '../interfaces';\nimport {\n BucketHistogram,\n SenderMetricsMessage,\n UpCounter,\n ValueRecorder\n} from '../interfaces-private';\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\n\nexport class MetricsStore implements MetricsReporter {\n private _upCounters: UpCounterImpl[] = [];\n private _valueRecorders: ValueRecorderImpl[] = [];\n private _bucketHistograms: BucketHistogramImpl[] = [];\n\n add(senderMetrics: SenderMetricsMessage): void {\n if (senderMetrics.upCounters?.length) {\n this._upCounters.push(\n ...senderMetrics.upCounters.map(\n (it: UpCounter) =>\n new UpCounterImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.value\n )\n )\n );\n }\n\n if (senderMetrics.valueRecorders?.length) {\n this._valueRecorders.push(\n ...senderMetrics.valueRecorders.map(\n (it: ValueRecorder) =>\n new ValueRecorderImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n\n if (senderMetrics.bucketHistograms?.length) {\n this._bucketHistograms.push(\n ...senderMetrics.bucketHistograms.map(\n (it: BucketHistogram) =>\n new BucketHistogramImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.buckets,\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n }\n\n getUpCounters(): Metric<number>[] {\n // Remove any metrics that have been reset from before\n this._upCounters = this._upCounters.filter((i) => i.getLastUpdatedOn() !== undefined);\n return this._upCounters;\n }\n getValueRecorders(): Metric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._valueRecorders = this._valueRecorders.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._valueRecorders;\n }\n getBucketHistograms(): BucketMetric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._bucketHistograms = this._bucketHistograms.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._bucketHistograms;\n }\n}\n","import { SchematizedData, metricsUtility, utility } from 'o11y/shared';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n LogCollector,\n LogMeta,\n MetricsCollector,\n MetricsExtractorMethods,\n Schema\n} from '../interfaces';\nimport { SenderConnector } from '../library/SenderConnector';\n\nexport const DEFAULT_POLL_INTERVAL = 1000;\n\nexport class SenderCollector implements LogCollector, MetricsCollector {\n private readonly _pollInterval: number = DEFAULT_POLL_INTERVAL;\n private _metricsExtractors: MetricsExtractorMethods;\n\n constructor(private readonly _connector: SenderConnector, _pollInterval?: number) {\n utility.requireArgument(_connector, '_connector', 'object');\n if (\n utility.requireArgumentIfDefined(_pollInterval, '_pollInterval', 'number') &&\n _pollInterval > 0\n ) {\n this._pollInterval = _pollInterval;\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const msg: SenderLogMessage = {\n schema,\n data,\n logMeta\n };\n\n this._connector.sendLog(msg);\n }\n\n receiveMetricsExtractors(extractors: MetricsExtractorMethods): void {\n this._metricsExtractors = extractors;\n\n // Send metrics immediately after receiving extractors\n this._collectAndSendMetrics();\n setInterval(this._collectAndSendMetrics.bind(this), this._pollInterval);\n }\n\n private _collectAndSendMetrics(): void {\n const metrics: SenderMetricsMessage = {\n upCounters: metricsUtility.getUpCounters(this._metricsExtractors.getAllUpCounters()),\n valueRecorders: metricsUtility.getValueRecorders(\n this._metricsExtractors.getAllValueRecorders()\n ),\n bucketHistograms: metricsUtility.getBucketHistograms(\n this._metricsExtractors.getAllBucketHistograms()\n )\n };\n\n if (\n metrics.upCounters.length ||\n metrics.valueRecorders.length ||\n metrics.bucketHistograms.length\n ) {\n this._connector.sendMetrics(metrics);\n }\n }\n}\n","import {\n LogPromptListener,\n payloadUtility,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\nimport {\n BucketMetric,\n BufferedLog,\n IdleDetector,\n Instrumentation,\n InstrumentationContext,\n InstrumentedAppMethods,\n InstrumentedAppOptions,\n LogCollector,\n LogCollectorOptions,\n LogMeta,\n Metric,\n MetricsCollector,\n Nextgen,\n OperationMode,\n OperationModeDetector,\n PayloadProvider,\n Schema\n} from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from 'src/interfaces-private';\nimport { AppInstrumentationImpl } from './AppInstrumentationImpl';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { Tracing } from './Tracing';\nimport { SenderConnector } from './SenderConnector';\nimport { MetricsStore } from './MetricsStore';\nimport { SenderCollector } from '../sender_collector/SenderCollector';\nimport { ReceiverConnector } from './ReceiverConnector';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\n\nconst maxInstrumentationLength = 80;\nconst truncatedText = '_CUT';\nconst maxInstrumentationLengthBeforeTruncated = maxInstrumentationLength - truncatedText.length;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noOpFunc(): void {}\n\nexport class NextgenImpl implements Nextgen {\n private readonly _logCollectors = new Set<LogCollector>();\n private readonly _instruments = new Map<string, InstrumentationImpl | AppInstrumentationImpl>();\n private readonly _seqBySchema = new Map<string, number>();\n private _sequence = 0;\n private _appInstr: AppInstrumentationImpl;\n private _autoClickTracker: AutomaticClickTracker;\n private _metricsCollector: MetricsCollector;\n private _appPayloadProvider: PayloadProvider;\n private _pagePayloadProvider: PayloadProvider;\n private _forceDisabledLogCollectors = new Set<LogCollector>();\n private _logCollectorFailures = new Map<LogCollector, number>();\n private static _collectorFailureLimit = 5;\n private _isBufferingEnabled = false;\n private _buffer: BufferedLog[] = [];\n private readonly _logCollectionListeners = new Set<LogPromptListener>();\n private _clientSessionId: string;\n private _opMode: OperationMode = 'default';\n private _isSender = false;\n private _isReceiver = false;\n private _metricsStore: MetricsStore;\n private _receiverConnector: ReceiverConnector;\n private _decimalPoints: number | null = 2;\n\n get pagePayloadProvider(): PayloadProvider {\n return this._pagePayloadProvider;\n }\n set pagePayloadProvider(provider: PayloadProvider) {\n this._pagePayloadProvider = provider;\n }\n\n get appPayloadProvider(): PayloadProvider {\n return this._appPayloadProvider;\n }\n set appPayloadProvider(provider: PayloadProvider) {\n this._appPayloadProvider = provider;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {}\n\n registerApp(name: string, options?: InstrumentedAppOptions): InstrumentedAppMethods {\n utility.requireArgument(name, 'name', 'string');\n if (this._appInstr) {\n throw new Error('An app has already been registered with instrumentation.');\n }\n const instr = this._instruments.get(name);\n if (instr) {\n throw new Error(`The instrumentation name ${name} is already taken`);\n }\n\n this._initOpMode(options?.operationMode);\n this._isSender = this._opMode === 'sender';\n this._isReceiver = this._opMode === 'receiver';\n\n if (options?.decimalPoints !== undefined) {\n this._decimalPoints = options.decimalPoints;\n }\n\n this._clientSessionId = options?.clientSessionId?.toString() || utility.generateUniqueId();\n this._appInstr = new AppInstrumentationImpl(\n this,\n name,\n options?.allowMultipleRootActivities\n );\n this._instruments.set(name, this._appInstr);\n\n if (this._isSender) {\n const senderCollector = new SenderCollector(\n new SenderConnector(window, options?.allowedReceiverOrigins),\n options?.senderMetricsPollingInterval\n );\n this.registerLogCollector(senderCollector);\n this.registerMetricsCollector(senderCollector);\n } else if (this._isReceiver) {\n this._metricsStore = new MetricsStore();\n\n this._receiverConnector = new ReceiverConnector(\n (msg: SenderLogMessage) => {\n msg.logMeta.receiverClientSessionId = this._clientSessionId;\n msg.logMeta.receiverRootId = this._appInstr.getSingleRootActivityId();\n\n this._multiplex(msg.schema, msg.data, msg.logMeta);\n },\n (msg: SenderMetricsMessage) => {\n this._metricsStore.add(msg);\n },\n () => {\n this._appInstr.incrementCounter('o11y-error-receiver', 1, true);\n }\n );\n }\n\n // Skip buffering if sender mode is enabled\n this._isBufferingEnabled = !this._isSender && options?.enableBuffering;\n\n const tracing = new Tracing(this.getInstrumentation('Network'), this._idleDetector);\n\n return {\n log: this._appInstr.log.bind(this._appInstr),\n error: this._appInstr.error.bind(this._appInstr),\n startActivity: this._appInstr.startActivity.bind(this._appInstr),\n domEvent: this._appInstr.domEvent.bind(this._appInstr),\n incrementCounter: this._appInstr.incrementCounter.bind(this._appInstr),\n trackValue: this._appInstr.trackValue.bind(this._appInstr),\n bucketValue: this._appInstr.bucketValue.bind(this._appInstr),\n networkInstrumentation: tracing.networkInstrumentation.bind(tracing),\n registerForLogPrompt: this._appInstr.registerForLogPrompt.bind(this._appInstr),\n activity: this._appInstr.activity.bind(this._appInstr),\n activityAsync: this._appInstr.activityAsync.bind(this._appInstr),\n\n startRootActivity: this._appInstr.startRootActivity.bind(this._appInstr),\n registerLogCollector: this._isSender ? noOpFunc : this.registerLogCollector.bind(this),\n registerMetricsCollector: this._isSender\n ? noOpFunc\n : this.registerMetricsCollector.bind(this),\n activateClickTracker: this.activateClickTracker.bind(this),\n deactivateClickTracker: this.deactivateClickTracker.bind(this),\n disableBuffering: this.disableBuffering.bind(this),\n promptLogCollection: this.promptLogCollection.bind(this),\n getClientSessionId: this.getClientSessionId.bind(this),\n\n getOperationMode: this.getOperationMode.bind(this),\n startReceiving: this._isReceiver\n ? this._receiverConnector.openComms.bind(this._receiverConnector)\n : noOpFunc,\n stopReceiving: this._isReceiver\n ? this._receiverConnector.closeComms.bind(this._receiverConnector)\n : noOpFunc\n };\n }\n\n getInstrumentation(name: string): Instrumentation {\n utility.requireArgument(name, 'name', 'string');\n if (name.length > maxInstrumentationLength) {\n // don't throw if it's too long. just add truncated suffix, but stay within max length\n name = name.substring(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;\n }\n let instr: InstrumentationImpl | AppInstrumentationImpl = this._instruments.get(name);\n if (!instr) {\n instr = new InstrumentationImpl(this, name);\n this._instruments.set(name, instr);\n } else if (instr === this._appInstr) {\n throw new Error(`The instrumentation name ${name} is being used by the app.`);\n }\n return instr;\n }\n\n get appName(): string {\n return this._appInstr?.name;\n }\n\n getRootActivityHistoryEntryByTime(atTime: number): RootActivityHistoryEntry {\n return this._appInstr?.getRootActivityHistoryEntry(atTime);\n }\n\n // This is an internal method that needs to be public\n addLog(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId: string\n ): number {\n payloadUtility.checkInputs(schema, data);\n this._sequence += 1;\n\n // Schema sequences are per user-defined schema, not internal ones such as ActivityData\n const isInternal = schemaUtil.isInternal(schema);\n const userSchema = isInternal && data?.userPayload ? data.userPayload.schema : schema;\n const schemaId = schemaUtil.getSchemaId(userSchema);\n let schemaSequence = this._seqBySchema.get(schemaId) || 0;\n schemaSequence += 1;\n this._seqBySchema.set(schemaId, schemaSequence);\n\n const logMeta: LogMeta = {\n timestamp,\n rootId,\n sequence: this._sequence,\n schemaSequence,\n loggerName,\n pagePayload: undefined,\n appPayload: undefined,\n loggerAppName: this.appName,\n connectionType: utility.getConnectionType(),\n clientSessionId: this._clientSessionId,\n // Calculate age here rather than later to ensure we use the timeOrigin where the log was created (e.g. sender or receiver)\n age: utility.getAge(timestamp)\n };\n\n const payloadArgs = {\n schema,\n data,\n logMeta\n };\n\n // Not cloning the pagePayload and appPayload like we used to because they are\n // provided by trusted entities of the app. Want the appPayloadProvider to have\n // access to the pagePayload\n logMeta.pagePayload = payloadUtility.getPayloadFromProvider(\n this.pagePayloadProvider,\n payloadArgs\n );\n logMeta.appPayload = payloadUtility.getPayloadFromProvider(\n this.appPayloadProvider,\n payloadArgs\n );\n\n if (!this._isSender) {\n // Make a copy of the data once, lest they get mutated by the caller\n // This is not needed for sender mode since the data is already serialized\n data = utility.clone(data);\n }\n\n if (typeof this._decimalPoints === 'number') {\n utility.roundNumbersInObject(data, this._decimalPoints);\n if (isInternal) {\n utility.roundNumbersInObject(data.userPayload?.payload, this._decimalPoints);\n }\n utility.roundNumbersInObject(logMeta.pagePayload?.payload, this._decimalPoints);\n utility.roundNumbersInObject(logMeta.appPayload?.payload, this._decimalPoints);\n }\n\n if (this._isBufferingEnabled) {\n // Always push to the buffer, even if no eligible collectors\n this._buffer.push(payloadArgs);\n }\n\n this._multiplex(schema, data, logMeta);\n return this._sequence;\n }\n\n private _multiplex(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const eligibleCollectors: LogCollector[] = Array.from(this._logCollectors).filter(\n (collector: LogCollector) =>\n !this._forceDisabledLogCollectors.has(collector) &&\n !collector.getIsCollectDisabled?.()\n );\n\n if (eligibleCollectors.length > 0) {\n for (const collector of eligibleCollectors) {\n // Not cloning the data for each collector (like we used to) as they are trusted entities of the app\n let failures: number = this._logCollectorFailures.get(collector) || 0;\n\n try {\n collector.collect(schema, data, logMeta);\n // if it got here it means it succeeded/didn't throw so we want to decrement the failure count\n if (failures > 0) {\n this._logCollectorFailures.set(collector, failures - 1);\n }\n } catch (err) {\n failures += 1;\n // If a collector fails too much we just disable it\n if (failures >= NextgenImpl._collectorFailureLimit) {\n this._forceDisabledLogCollectors.add(collector);\n if (this._appInstr && (typeof err === 'string' || err instanceof Error)) {\n this._appInstr.error(err);\n }\n } else {\n this._logCollectorFailures.set(collector, failures);\n // We can't log an error here, or the same collector will immediately be called\n // again, likely resulting in repeat exceptions until the collector gets disabled.\n }\n }\n }\n }\n }\n\n getBuffer(): BufferedLog[] {\n return this._buffer;\n }\n\n disableBuffering(): void {\n this._isBufferingEnabled = false;\n this._buffer = [];\n }\n\n getClickTracker(): AutomaticClickTracker {\n return this._autoClickTracker;\n }\n\n getDefaultInstrumentationContext(): InstrumentationContext {\n return {\n rootId: this._appInstr?.getSingleRootActivityId(),\n isRootActivitySampled: this._appInstr?.isSingleRootActivitySampled()\n };\n }\n\n activateClickTracker(): void {\n if (typeof document !== 'undefined') {\n if (!this._autoClickTracker) {\n this._autoClickTracker = new AutomaticClickTracker(this._appInstr, document);\n }\n this._autoClickTracker.activate();\n }\n }\n\n deactivateClickTracker(): void {\n if (this._autoClickTracker) {\n this._autoClickTracker.deactivate();\n // In case activateClickTracker is called later with a different instrumentation\n this._autoClickTracker = undefined;\n }\n }\n\n registerLogCollector(collector: LogCollector, options?: LogCollectorOptions): void {\n utility.requireArgument(collector, 'collector');\n if (this._logCollectors.has(collector)) {\n return;\n }\n this._logCollectors.add(collector);\n this._logCollectorFailures.set(collector, 0);\n if (\n (!collector.getIsCollectDisabled || !collector.getIsCollectDisabled()) &&\n options?.retroactive\n ) {\n for (const log of this._buffer) {\n collector.collect(log.schema, log.data, log.logMeta);\n }\n }\n }\n\n registerMetricsCollector(collector: MetricsCollector): void {\n utility.requireArgument(collector, 'collector');\n if (this._metricsCollector) {\n throw new Error('A metrics Collector is already registered.');\n }\n this._metricsCollector = collector;\n this._metricsCollector.receiveMetricsExtractors({\n getAllUpCounters: this._getAllUpCounters.bind(this),\n getAllValueRecorders: this._getAllValueRecorders.bind(this),\n getAllBucketHistograms: this._getAllBucketHistograms.bind(this)\n });\n }\n\n private _getAllUpCounters(): Metric<number>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getUpCounters()\n );\n return arrOfArrs.reduce(\n (pv, cv) => pv.concat(cv),\n this._metricsStore?.getUpCounters() || []\n );\n }\n\n private _getAllValueRecorders(): Metric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getValueRecorders()\n );\n return arrOfArrs.reduce(\n (pv, cv) => pv.concat(cv),\n this._metricsStore?.getValueRecorders() || []\n );\n }\n\n private _getAllBucketHistograms(): BucketMetric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getBucketHistograms()\n );\n return arrOfArrs.reduce(\n (pv, cv) => pv.concat(cv),\n this._metricsStore?.getBucketHistograms() || []\n );\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n this._logCollectionListeners.add(listener);\n }\n\n promptLogCollection(reason: string): void {\n for (const listener of this._logCollectionListeners.keys()) {\n try {\n listener(reason);\n } catch (err) {\n if (!utility.isProduction) {\n throw err;\n }\n }\n }\n }\n\n getClientSessionId(): string {\n return this._clientSessionId;\n }\n\n private _initOpMode(opMode: OperationMode | OperationModeDetector): void {\n if (typeof opMode === 'function') {\n opMode = opMode();\n }\n if (opMode === undefined || typeof window !== 'object') {\n // Support receiver and sender mode only if window is available, othwerwise fallback to default\n opMode = 'default';\n }\n\n if (['default', 'receiver', 'sender'].indexOf(opMode) >= 0) {\n this._opMode = opMode;\n } else {\n throw new Error(`Invalid operation mode: ${opMode}`);\n }\n }\n\n getOperationMode(): OperationMode {\n return this._opMode;\n }\n}\n","import {\n IdleDetector,\n Instrumentation,\n InstrumentedAppMethods,\n InstrumentedAppOptions\n} from './interfaces';\nimport { NextgenImpl } from './library/NextgenImpl';\nimport { utility } from 'o11y/shared';\n\nexport class Index {\n private _nextgen: NextgenImpl;\n // We are lazily initializing the singleton to allow any options to be processed\n // before the instantiation.\n private get _lazyNextGen(): NextgenImpl {\n if (!this._nextgen) {\n this._nextgen = new NextgenImpl(this._idleDetector);\n }\n return this._nextgen;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {\n utility.requireArgument(_idleDetector, '_idleDetector');\n }\n\n public registerInstrumentedApp(\n name: string,\n options?: InstrumentedAppOptions\n ): InstrumentedAppMethods {\n if (!options || options.isProduction !== false) {\n // Do this before construction\n // Production by default\n utility.markProduction();\n }\n const retVal: InstrumentedAppMethods = this._lazyNextGen.registerApp(name, options);\n if (options) {\n this._nextgen.appPayloadProvider = options.appPayloadProvider;\n this._nextgen.pagePayloadProvider = options.pagePayloadProvider;\n }\n return retVal;\n }\n\n public getInstrumentation(name?: string): Instrumentation {\n return this._lazyNextGen.getInstrumentation(name);\n }\n}\n\nexport const time = utility.time.bind(utility);\n","import { Environment, LogCollector, LogMeta, Schema } from '../interfaces';\nimport { SchematizedData, schemaUtil } from 'o11y/shared';\n\nconst lightningLoggerSchemaId = 'sfcore.customCmp.CustomComponentLog';\n\ntype ColorMap = Record<string, string>;\n\nconst bgColorMap: ColorMap = {\n Error: 'Crimson',\n Activity: 'CadetBlue',\n InstrumentedEvent: 'DarkOliveGreen',\n O11ySample: 'BlueViolet'\n};\nconst colorMap: ColorMap = {\n Error: 'white',\n Activity: 'white',\n InstrumentedEvent: 'white',\n O11ySample: 'white'\n};\nconst defaultColor = 'black';\nconst defaultBgColor = 'Gainsboro';\n\nexport class ConsoleCollector implements LogCollector {\n private readonly _simpleFilters = new Set<string>();\n private readonly _regexFilters: RegExp[] = [];\n\n constructor(environment?: Environment) {\n if (environment) {\n this._log('ConsoleCollector', environment);\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const id = schemaUtil.getSchemaId(schema);\n\n if (!this._shouldLog(id)) {\n return;\n }\n\n if (id === lightningLoggerSchemaId) {\n this._logCustom(data);\n return;\n }\n\n let label, color, bgColor;\n if (schemaUtil.isInternal(schema)) {\n label = schema.name;\n color = colorMap[schema.name] || defaultColor;\n bgColor = bgColorMap[schema.name] || defaultBgColor;\n } else {\n label = id;\n }\n\n this._log(label, data, logMeta, color, bgColor);\n }\n\n private _shouldLog(schemaId: string): boolean {\n if (this._simpleFilters.size == 0 && this._regexFilters.length == 0) {\n return true;\n }\n\n return (\n this._simpleFilters.has(schemaId) || this._regexFilters.some((r) => r.test(schemaId))\n );\n }\n\n addFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n this._regexFilters.push(filter);\n } else {\n this._simpleFilters.add(filter);\n }\n }\n\n removeFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n const index = this._regexFilters.findIndex((r) => r.source === filter.source);\n if (index >= 0) {\n this._regexFilters.splice(index, 1);\n }\n } else {\n this._simpleFilters.delete(filter);\n }\n }\n\n clearFilters(): void {\n this._simpleFilters.clear();\n this._regexFilters.splice(0, this._regexFilters.length);\n }\n\n getFilters(): (string | RegExp)[] {\n const filters: (string | RegExp)[] = Array.from(this._simpleFilters);\n return filters.concat(this._regexFilters).sort();\n }\n\n private _log(\n label: string,\n first?: unknown,\n second?: unknown,\n color: string = defaultColor,\n bgColor: string = defaultBgColor\n ): void {\n const css = `color:${color};background-color:${bgColor}`;\n // eslint-disable-next-line no-console\n console.log(\n `%cO11Y%c ${label}`,\n 'color:white;background-color:#FF6600;font-weight:bold',\n css,\n first || '',\n second || ''\n );\n }\n\n private _logCustom(data?: unknown): void {\n // eslint-disable-next-line no-console\n console.log(\n '%clightning/logger',\n 'color:white;background-color:#00a1e0;font-weight:bold',\n data || ''\n );\n }\n}\n","// auto-generated\nexport const version = '252.2.0';\n","// This is the file that exports all `o11y` module level exports.\nimport { idleDetectorReportSchema } from 'o11y_schema/sf_instrumentation';\nimport { IdleDetector, IdleDetectorReport } from './interfaces';\nimport { IdleDetectorImpl } from './library/IdleDetectorImpl';\nimport { time, Index } from './index';\n\nexport const idleDetector: IdleDetector = new IdleDetectorImpl({\n logThreshold: 300,\n reportListener: (report: IdleDetectorReport) => {\n idleDetectorInstr?.log(idleDetectorReportSchema, report);\n },\n errorListener: (e: unknown, text?: string) => {\n idleDetectorInstr?.error(e, text);\n }\n});\nconst index = new Index(idleDetector); // singleton\nconst registerInstrumentedApp = index.registerInstrumentedApp.bind(index);\nconst getInstrumentation = index.getInstrumentation.bind(index);\n\nconst idleDetectorInstr = getInstrumentation('IdleDetector');\n\nexport { registerInstrumentedApp, getInstrumentation, time };\nexport { ConsoleCollector } from './console-collector/ConsoleCollector';\nexport { version as _version } from './version';\n"],"names":["navigationTimingSchema","resourceTimingSchema"],"mappings":";;;MAIa,UAAU,CAAA;AAInB,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC;KACvD;AAED,IAAA,WAAA,CACoB,IAAY,EAC5B,YAAoB,EACH,aAA+B,EAC/B,iBAAmC,EAAA;QAHpC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAEX,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QAXhD,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AAYjB,QAAA,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;KAClC;IAED,GAAG,GAAA;QACC,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AACxB,SAAA;KACJ;IACD,IAAI,GAAA;QACA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,aAAA;AACJ,SAAA;KACJ;AACJ;;AC3BD,MAAM,mBAAmB,GAAG,GAAG,CAAC;MAanB,gBAAgB,CAAA;AAYzB,IAAA,WAAA,CAAY,OAA6B,EAAA;AAXxB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;QACjD,IAAa,CAAA,aAAA,GAAW,mBAAmB,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,KAAK,EAAmB,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,KAAK,EAAuB,CAAC;AAOhE,QAAA,IACI,OAAO,CAAC,wBAAwB,CAC5B,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,EACrB,sBAAsB,EACtB,QAAQ,CACX,EACH;AACE,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AAC7C,SAAA;AAED,QAAA,IACI,OAAO,CAAC,wBAAwB,CAC5B,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,cAAc,EACvB,wBAAwB,EACxB,UAAU,CACb,EACH;AACE,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;AACjD,SAAA;AAED,QAAA,IACI,OAAO,CAAC,wBAAwB,CAC5B,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,aAAa,EACtB,uBAAuB,EACvB,UAAU,CACb,EACH;AACE,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,SAAA;KACJ;AAED,IAAA,2BAA2B,CAAC,QAA8B,EAAA;QACtD,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACpD,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAEO,IAAA,gBAAgB,CAAC,MAAkB,EAAA;AAEvC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,SAAA;KACJ;AAED,IAAA,yBAAyB,CAAC,IAAY,EAAA;QAClC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAExC,QAAA,MAAM,MAAM,GAAiB;AACzB,YAAA,IAAI,MAAM,GAAA;gBACN,OAAO,MAAM,CAAC,MAAM,CAAC;aACxB;YACD,IAAI,EAAE,MAAK;gBACP,MAAM,CAAC,IAAI,EAAE,CAAC;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAChC;SACJ,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,wBAAwB,CAAC,IAAY,EAAE,iBAAiB,GAAG,CAAC,EAAA;QACxD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACjC,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YAE1E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE;AAC/D,gBAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC3E,aAAA;AACJ,SAAA;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAExD,QAAA,MAAM,MAAM,GAAgB;AACxB,YAAA,IAAI,MAAM,GAAA;gBACN,OAAO,MAAM,CAAC,MAAM,CAAC;aACxB;YACD,GAAG,EAAE,MAAK;AACN,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACpC,oBAAA,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;AACxB,iBAAA;gBACD,MAAM,CAAC,GAAG,EAAE,CAAC;aAChB;YACD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;KACjB;IAED,wBAAwB,CAAC,IAAY,EAAE,aAA4B,EAAA;QAC/D,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KAC/C;IAEO,UAAU,CAAC,IAAY,EAAE,iBAAyB,EAAA;QACtD,MAAM,MAAM,GAAG,IAAI,UAAU,CACzB,IAAI,EACJ,iBAAiB,EACjB,MAAK;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACvD,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB,EACD,MAAK;;YAED,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAA,UAAA,EAAa,MAAM,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;YAClD,OAAO,CAAC,WAAW,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAA2B,yBAAA,CAAA,CAAC,CAAC;AAC3E,SAAC,CACJ,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,IAAI;AACJ,YAAA,KAAK,EAAE,iBAAiB,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,SAAS;AACjE,YAAA,GAAG,EAAE,SAAS;AACjB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,oBAAoB,GAAA;QACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;KAClE;IAEO,qBAAqB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;;AACxD,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI;gBACA,OAAO,aAAa,EAAE,CAAC;AAC1B,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAC,EAAE,CAAe,YAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AAChD,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvB,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;KACvC;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAEvB,OAAO;AACV,SAAA;QAKD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAU7B,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;AACrC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;oBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB,EAAE,EAAE,CAAC,CAAC;aACV,EAAE,CAAC,CAAC,CAAC;AACT,SAAA;KACJ;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AAEnC,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC7B,YAAA,MAAM,YAAY,GAAW,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC1D,IAAI,YAAY,KAAK,SAAS,EAAE;AAE5B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;oBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB,EAAE,EAAE,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AAEH,gBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAKrE,gBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAExB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEtD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AACpE,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,oBAAoB,CAAC,IAAY,EAAA;AACrC,QAAA,MAAM,SAAS,GAAwB,IAAI,CAAC,eAAe,CAAC,MAAM;AAC9D,cAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;cACrD,SAAS,CAAC;QAEhB,IAAI,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,IAAI,MAAK,IAAI,EAAE;AAC1B,YAAA,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;AACxB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACtB,IAAI;AACJ,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAEO,IAAA,OAAO,CACX,SAAiC,EACjC,WAAmB,EACnB,UAAkC,EAClC,cAA0C,EAAA;;QAE1C,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;AAC3D,YAAA,MAAM,OAAO,GAAuB,IAAI,CAAC,UAAU,CAC/C,WAAW,EACX,SAAS,CAAC,MAAM,EAChB,UAAU,EACV,cAAc,CACjB,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACjC,SAAA;QACD,SAAS,CAAC,OAAO,EAAE,CAAC;QAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACnC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YACjD,IAAI;gBACA,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnB,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAC,EAAE,CAAa,UAAA,EAAA,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAA,CAAE,CAAC,CAAC;AACtE,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAA;AACJ,SAAA;KACJ;IAED,SAAS,GAAA;QACL,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACvC,QAAA,MAAM,WAAW,GACb,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;AAEhF,QAAA,MAAM,YAAY,GAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC3E,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1B,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM;AACT,YAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACf,YAAA,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACjB,YAAA,GAAG,EAAE,OAAO;AACf,SAAA,CAAC,CAAC,CAAC;QACR,OAAO,IAAI,CAAC,UAAU,CAClB,WAAW,EACX,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,EACrC,IAAI,CAAC,eAAe,CACvB,CAAC;KACL;AAEO,IAAA,UAAU,CACd,WAAmB,EACnB,aAAqB,EACrB,UAAkC,EAClC,cAA0C,EAAA;QAE1C,MAAM,aAAa,GAAG,UAAU;AAC3B,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM;YACT,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,YAAA,QAAQ,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK;AAC5B,SAAA,CAAC,CAAC;AACF,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW;YACX,aAAa;AACb,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;AACtC,YAAA,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC3C,YAAA,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACnD,YAAA,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC5C,YAAA,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;SACjD,CAAC;KACL;AACJ;;ACzUM,MAAM,iBAAiB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACjgB,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzf,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACpgB,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACzhB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACJvY,MAAM,eAAe,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3f,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACzf,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9f,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;MCQ3e,WAAW,CAAA;AAGpB,IAAA,WAAA,CAA6B,cAAsB,EAAA;QAAtB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAQ;AAFlC,QAAA,IAAA,CAAA,IAAI,GAA8B,IAAI,GAAG,EAAE,CAAC;QAGzD,OAAO,CAAC,eAAe,CAAC,cAAc,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;KACvE;AAED,IAAA,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,KAAQ,EAAA;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C,SAAA;KACJ;IACD,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,MAAM,KAAI,CAAC,EAAE;AACxB,YAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxC,YAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;AAClB,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACnD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC;gBAClD,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,QAAQ,GAAG,QAAQ,EAAE;oBACxD,QAAQ,GAAG,QAAQ,CAAC;oBACpB,QAAQ,GAAG,KAAK,CAAC;AACpB,iBAAA;AAEJ,aAAA;YACD,IAAI,QAAQ,IAAI,CAAC,EAAE;AACf,gBAAA,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;AACJ;;ACjCD,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;MAE3C,wBAAwB,CAAA;IAUjC,WACqB,CAAA,MAAuB,EACxC,aAAqB,EACJ,SAA8B,EAC9B,2BAAoC,EACrD,QAAiB,EAAA;QAJA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAEvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqB;QAC9B,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAAS;QAPjD,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAUvB,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClE,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,CAAC,wBAAwB,CAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,QAAQ,CACX,CAAC;QACF,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,QAAQ;YACT,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,mBAAmB,KAAK,UAAU,CAAC;QAEpF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YAChD,IAAI,CAAC,SAAS,GAAA,CAAgB,CAAC;AAClC,SAAA;aAAM,IAAI,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,WAAW,EAAE,MAAK,OAAO,EAAE;YAC5C,IAAI,CAAC,SAAS,GAAA,CAAiB,CAAC;AACnC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAA,CAAE,CAAC,CAAC;AACrD,SAAA;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;KACtD;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,SAAA;KACJ;IAED,IAAI,GAAA;QACA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACtC,SAAA;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACxC,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;AAID,IAAA,QAAQ,CAAC,WAAmB,EAAE,QAAgB,EAAE,IAAqB,EAAA;QACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KACtD;AAEO,IAAA,8BAA8B,CAClC,GAA8B,EAAA;;AAE9B,QAAA,MAAM,EAAE,GAGJ;YACA,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,eAAe,EAAE,GAAG,CAAC,eAAe;YAEpC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;YAC9C,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;YAChD,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;YAEhC,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;YACxD,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,eAAe,EAAE,GAAG,CAAC,eAAe;YAEpC,cAAc,EAAE,GAAG,CAAC,cAAc;SACrC,CAAC;AAEF,QAAA,MAAM,GAAG,GAA2C,GAAG,CAAC,YAAY,CAAC;AACrE,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACpB,EAAE,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC;YAC7D,EAAE,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC;AAEpE,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACb;AAEO,IAAA,cAAc,CAAC,KAAgC,EAAA;;AACnD,QAAA,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,CAAC,OAAO,KAAI;YAChD,IAAI,OAAO,YAAY,MAAM,EAAE;gBAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,KAAA,CAAkB,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,QACI,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACrD,YAAA,KAAK,CAAC,SAAS,KAAK,YAAY,EAClC;KACL;IAEO,YAAY,CAAC,MAAc,EAAE,OAAgC,EAAA;AACjE,QAAA,MAAM,OAAO,GAAwB;YACjC,iBAAiB,EAAE,OAAO,CAAC,SAAS;AACpC,YAAA,gBAAgB,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ;SACzD,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAC9F;AAEO,IAAA,sBAAsB,CAAC,IAAkC,EAAA;QAC7D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;YACrD,MAAM,EAAE,GAAgC,KAAoC,CAAC;AAE7E,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AACzB,gBAAA,IAAI,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE;AACxB,oBAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;oBAErB,MAAM,OAAO,GACT,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;AAE5C,oBAAA,MAAM,OAAO,GAAyB;wBAClC,WAAW,EAAE,EAAE,CAAC,WAAW;wBAC3B,0BAA0B,EAAE,EAAE,CAAC,0BAA0B;wBACzD,wBAAwB,EAAE,EAAE,CAAC,wBAAwB;wBACrD,cAAc,EAAE,EAAE,CAAC,cAAc;wBACjC,cAAc,EAAE,EAAE,CAAC,cAAc;wBACjC,YAAY,EAAE,EAAE,CAAC,YAAY;wBAC7B,aAAa,EAAE,EAAE,CAAC,aAAa;wBAC/B,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;wBACrC,cAAc,EAAE,EAAE,CAAC,cAAc;qBACpC,CAAC;AAEF,oBAAA,IAAI,CAAC,YAAY,CAACA,iBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9E,iBAAA;gBACD,MAAM;AACT,aAAA;AACJ,SAAA;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,EAAE,GAA8B,KAAkC,CAAC;AAGzE,YAAA,MAAM,WAAW,GAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;AAElF,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;gBACzB,MAAM,OAAO,GAA4B,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;AAEjF,gBAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,oBAAA,QAAQ,EAAE,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,SAAS;AAChC,oBAAA,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC,gBAAgB,GAAG,EAAE,CAAC,QAAQ,GAAG,SAAS;AACjF,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,YAAY,CAACC,eAAoB,EAAE,OAAO,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;KACJ;AACJ;;ACpLD,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAG/B,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAGxC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAC/C,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAC5C,MAAM,6BAA6B,GAAG,UAAU,CAAC;AACjD,MAAM,yBAAyB,GAAG,aAAa,CAAC;AAChD,MAAM,oBAAoB,GAAG,EAAE,CAAC;MAEnB,OAAO,CAAA;IAWhB,WACqB,CAAA,MAAuB,EACvB,aAA2B,EAAA;QAD3B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;QAE5C,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;KACrE;IAEO,OAAO,mBAAmB,CAC9B,OAAe,EACf,MAAc,EACd,SAAmB,EACnB,YAAqB,EAAA;AAKrB,QAAA,IAAI,EAAE,GAAG,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;AAEhC,QAAA,IAAI,SAAS,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;YACvD,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;YAC9B,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,gBAAA,EAAE,IAAI,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE,CAAC;AAC5B,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;AAEO,IAAA,OAAO,mBAAmB,CAC9B,OAAe,EACf,MAAc,EACd,SAAkB,EAAA;AAIlB,QAAA,OAAO,CAAM,GAAA,EAAA,OAAO,CAAI,CAAA,EAAA,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;KAC/D;AAEO,IAAA,OAAO,gBAAgB,CAAC,IAAY,EAAE,QAAgB,EAAA;AAE1D,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1B,QAAA,MAAM,GAAG,GAAW,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,IAAI,CAAwC,qCAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACjF,aAAA;AACJ,SAAA;QAED,IAAI,GAAG,GAAG,QAAQ,EAAE;YAEhB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;AACtC,SAAA;QACD,IAAI,GAAG,GAAG,QAAQ,EAAE;YAEhB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,UAAU,CACpB,OAAe,EACf,MAAc,EACd,SAAmB,EACnB,OAA+B,EAAA;QAE/B,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtD,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAY,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,YAAY,CAAC;AAEpD,QAAA,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAC3B,OAAO,EACP,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB,MAAK,SAAS;cACvC,OAAO,CAAC,sBAAsB;AAChC,cAAE,YAAY;AACd,kBAAE,sBAAsB;kBACtB,sBAAsB,CAC/B,CAAC;QACF,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAE5D,MAAM,YAAY,GACd,CAAC,OAAO;YACJ,OAAO,CAAC,YAAY,KAAK,SAAS;YAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC;AACpE,YAAA,SAAS,CAAC;QAEd,MAAM,OAAO,GAAiB,EAAE,CAAC;AAEjC,QAAA,IAAI,YAAY,EAAE;YAEd,MAAM,SAAS,GAAY,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,gBAAgB,CAAC;AACrD,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,mBAAmB,CACxC,OAAO,EACP,MAAM,EACN,SAAS,EACT,YAAY,CACf,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;AACjC,gBAAA,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;gBAC/B,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,oBAAA,OAAO,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAAC;AAC9C,iBAAA;gBACD,IAAI,SAAS,KAAK,SAAS,EAAE;AACzB,oBAAA,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;IAEO,8BAA8B,GAAA;QAClC,IAAI,OAAO,CAAC,gCAAgC,EAAE;YAC1C,IAAI,OAAO,CAAC,cAAc,EAAE;gBACxB,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;AAC/C,gBAAA,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;AACtC,aAAA;YACD,IAAI,OAAO,CAAC,YAAY,EAAE;gBACtB,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;AACtD,gBAAA,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;AACpC,aAAA;YACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACzE,gBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACxC,aAAA;YACD,IAAI,OAAO,CAAC,4BAA4B,EAAE;AACtC,gBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB;oBACrD,OAAO,CAAC,4BAA4B,CAAC;AACzC,gBAAA,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC;AACpD,aAAA;YACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACzE,gBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACxC,aAAA;YACD,IAAI,OAAO,CAAC,yBAAyB,EAAE;AACnC,gBAAA,OAAO,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AACzC,gBAAA,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;AACjD,aAAA;AACD,YAAA,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;AACpD,SAAA;KACJ;AAEO,IAAA,6BAA6B,CACjC,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,OAA8B,EAC9B,MAAmB,EACnB,cAAgC,EAChC,0BAAkC,EAClC,QAA6B,EAC7B,aAAqB,EAAA;QAErB,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACjF,YAAA,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;AACnD,SAAA;QAED,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;AACtD,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/E,YAAA,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,cAAc,EAAE;YAChB,OAAO,CAAC,yBAAyB,GAAG,IAAI,wBAAwB,CAC5D,KAAK,EACL,aAAa,EACb,QAAQ,EACR,0BAA0B,EAC1B,cAAc,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CACpD,CAAC;AACF,YAAA,OAAO,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;AAC1C,YAAA,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;AACnD,SAAA;KACJ;IAEO,OAAO,gBAAgB,CAC3B,QAA8B,EAC9B,OAA0C,EAC1C,MAAc,EACd,GAAW,EAAA;AAEX,QAAA,IAAI,YAAY,GAAiB,CAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,eAAe,CAAC,OAAO,CAAC,KAAI,EAAE,CAAC;AAC1E,QAAA,IAAI,QAAO,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,eAAe,CAAA,KAAK,UAAU,EAAE;AAChD,YAAA,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;gBACnC,MAAM;gBACN,GAAG;AACH,gBAAA,cAAc,EAAE,YAAY;AAC/B,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAEnC,YAAA,IAAI,MAAM,CAAC;YACX,IAAI;AACA,gBAAA,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,aAAA;YAAC,OAAM,EAAA,EAAA;AAEP,aAAA;YAED,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAChD,YAAY,GAAG,SAAS,CAAC;AAC5B,aAAA;AACJ,SAAA;QACD,OAAO,YAAY,IAAI,EAAE,CAAC;KAC7B;AAEO,IAAA,OAAO,cAAc,CACzB,UAAkB,EAClB,KAAwB,EACxB,IAAkB,EAAA;QAElB,IAAI,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,aAAY,OAAO,EAAE;YAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAC,EAAE;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;YACrE,OAAO,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAG,CAAC,CAAC,CAAC;AACtB,SAAA;AACD,QAAA,IAAI,QAAO,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAA,KAAK,QAAQ,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnC,SAAA;QACD,IAAI,KAAK,YAAY,OAAO,EAAE;YAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,cAAc,CAClB,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,qBAA4C,EAC5C,MAAmB,EAAA;QAEnB,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/C,MAAM,SAAS,GAAkB,OAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAI;;AAItE,YAAA,IAAI,QAAkB,CAAC;AACvB,YAAA,IAAI,GAAW,CAAC;AAChB,YAAA,IAAI,WAAmB,CAAC;AACxB,YAAA,IAAI,MAAc,CAAC;AACnB,YAAA,IAAI,SAAiB,CAAC;YACtB,IAAI;AACA,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,GAAG,EAAE,CAAC;gBACd,MAAM,GAAG,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;gBACzB,MAAM,GAAG,GAAqB,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;gBAE5C,IAAI,EAAC,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,SAAS,CAAA,EAAE;oBACjB,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,2BAA2B,CAAC,CAAC;AAC/E,iBAAA;AAAM,qBAAA;AACH,oBAAA,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;oBACvB,IAAI;wBAEA,IAAI,QAAQ,YAAY,GAAG,EAAE;AACzB,4BAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtE,yBAAA;AAAM,6BAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACrC,4BAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjC,4BAAA,MAAM,EAAE,GAAG,CAAA,KAAA,EAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;4BACvC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAI,CAAA,EAAA,EAAE,EAAE,GAAG,EAAE,CAAC;AAC/D,4BAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,yBAAA;AACJ,qBAAA;AAAC,oBAAA,OAAA,EAAA,EAAM,GAAE;AACb,iBAAA;AACM,gBAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,IAAA,GAAA,OAAP,OAAO,CAAE,IAAI,CAAC;gBAErB,GAAG,GAAG,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAA,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAE7C,gBAAA,IAAI,UAAU,EAAE;oBACZ,IAAI,QAAQ,YAAY,OAAO,EAAE;wBAC7B,IAAI,CAAC,MAAM,EAAE;AAET,4BAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC5B,yBAAA;AACD,wBAAA,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACnB,wBAAA,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChD,qBAAA;AAED,oBAAA,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CACzC,QAAQ,EACR,qBAAqB,EACrB,MAAM,EACN,WAAW,CACd,CAAC;oBAEF,IACI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC;wBACzD,OAAO,KAAK,SAAS,EACvB;AACE,wBAAA,OAAO,GAAG;AACN,4BAAA,OAAO,EAAE,YAAY;yBACxB,CAAC;AACL,qBAAA;AACJ,iBAAA;AAED,gBAAA,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,gBAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CACpC,OAAO,CAAC,OAAO,EACf,QAAQ,EACR,OAAO,EACP,GAAG,QAAQ,CACd,CAAC;AACL,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACT,gBAAA,IAAI,SAAS,EAAE;AACX,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtB,qBAAA;AAAM,yBAAA;AACH,wBAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnB,qBAAA;AACJ,iBAAA;AACD,gBAAA,MAAM,EAAE,CAAC;AACZ,aAAA;AAAS,oBAAA;gBACN,IAAI;AACA,oBAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACrE,oBAAA,IAAI,MAAA,OAAO,CAAC,yBAAyB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,EAAE;AAC9C,wBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CACpC,eAAe,EACf,QAAQ,EACR,OAAO,CACV,CAAC;wBAEF,OAAO,CAAC,yBAAyB,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE;4BAC/D,SAAS;4BACT,gBAAgB;AACnB,yBAAA,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;AAAS,wBAAA;AACN,oBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AAClB,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;KACrC;AAEO,IAAA,OAAO,YAAY,CAAC,QAAkB,EAAE,GAAW,EAAE,MAAc,EAAA;;AACvE,QAAA,IAAI,QAAQ,EAAE;AAIV,YAAA,IAAI,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,yBAAyB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,KAAI,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;gBAC/E,QAAQ,CAAC,OAAO,EAAE,CAAC;AACtB,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,oBAAA,GAAG,EAAE,MAAM;oBACX,GAAG;AACN,iBAAA,CAAC,CAAC;AACN,aAAA;YACD,OAAO,QAAQ,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AACnE,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,YAAY,CAChB,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,OAA8B,EAC9B,MAAmB,EAAA;QAEnB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;QACtD,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;QAC/D,OAAO,CAAC,4BAA4B,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACvF,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;AAE/D,QAAA,SAAS,WAAW,CAAC,GAAY,EAAE,YAAsB,EAAA;;YACrD,IAAI,GAAG,CAAC,KAAK,EAAE;gBACX,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CACzC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAClB,GAAG,CAAC,KAAK,CAAC,GAAG,EACb,GAAG,CAAC,KAAK,CAAC,MAAM,CACnB,CAAC;gBACF,IAAI,CAAC,YAAY,KAAI,CAAA,EAAA,GAAA,OAAO,CAAC,yBAAyB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAA,EAAE;AAC/D,oBAAA,OAAO,CAAC,yBAAyB,CAAC,QAAQ,CACtC,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB,GAAG,CAAC,KAAK,CAAC,QAAQ,EAClB;AACI,wBAAA,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;wBAC9B,gBAAgB;AACnB,qBAAA,CACJ,CAAC;AACL,iBAAA;AACJ,aAAA;SACJ;AAED,QAAA,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,UAElC,MAAc,EACd,GAAiB,EACjB,KAAe,EACf,QAAwB,EACxB,QAAwB,EAAA;YAExB,IAAI,CAAC,KAAK,GAAG;gBACT,MAAM;gBACN,GAAG,EAAE,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAE;aACvB,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnE,YAAA,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChF,SAAC,CAAC;QAEF,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAE9C,IAAY,EACZ,KAAa,EAAA;;AAEb,YAAA,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,WAAW,oDAAI,MAAK,eAAe,CAAC,WAAW,EAAE,EAAE;AACzD,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,aAAA;YACD,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjE,SAAC,CAAC;QAEF,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,UAAyB,GAAG,IAAI,EAAA;AAClE,YAAA,IAAI,QAAkB,CAAC;YAGvB,MAAM,GAAG,GAAY,IAAI,CAAC;YAC1B,IAAI;AACA,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,GAAG,EAAE,CAAC;gBACd,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,gBAAA,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,CAC/C,YAAY,IAAI,6BAA6B,CAChD,CAAC;AACF,gBAAA,IAAI,UAAU,EAAE;oBACZ,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CACzC,QAAQ,EACR,OAAO,EACP,GAAG,CAAC,KAAK,CAAC,MAAM,EAChB,GAAG,CAAC,KAAK,CAAC,WAAW,CACxB,CAAC;oBAEF,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC3C,wBAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,qBAAC,CAAC,CAAC;AACN,iBAAA;gBACD,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAChD,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACT,gBAAA,IAAI,SAAS,EAAE;AACX,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtB,qBAAA;AAAM,yBAAA;AACH,wBAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnB,qBAAA;AACJ,iBAAA;AACD,gBAAA,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AACf,gBAAA,MAAM,EAAE,CAAC;AACZ,aAAA;AACL,SAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAU,OAAO,CAAC,YAAY,EAAE;AACtD,YAAA,SAAS,CAAC,MAAe,EAAA;AACrB,gBAAA,MAAM,MAAM,GAAG,IAAI,MAAM,EAAa,CAAC;AAGvC,gBAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;oBACjC,WAAW,CAAC,MAAM,CAAC,CAAC;AACpB,oBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AACnB,iBAAC,CAAC,CAAC;gBACH,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,CAAC,KAA+C,KAAI;;oBAChD,IAAI;AACA,wBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACnD,wBAAA,IAAI,SAAS,EAAE;4BACX,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC;AACxC,4BAAA,IAAI,QAAQ,EAAE;AACV,gCAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,6BAAA;AAAM,iCAAA;AACH,gCAAA,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,6BAAA;AACJ,yBAAA;wBACD,WAAW,CAAC,MAAM,CAAC,CAAC;AACvB,qBAAA;AAAS,4BAAA;AACN,wBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AAClB,qBAAA;AACL,iBAAC,CACJ,CAAC;AACF,gBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;;oBAClC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,0CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAClC,oBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AACnB,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,MAAM,CAAC;aACjB;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC;KAC7C;AAED,IAAA,sBAAsB,CAAC,OAAgD,EAAA;;AACnE,QAAA,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAGnE,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,cAAc,GAChB,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;YAE/C,IAAI,MAAM,GAAgB,SAAS,CAAC;YACpC,IAAI,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;gBAC/D,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,0CAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;AACzE,aAAA;YAED,IAAI,CAAC,6BAA6B,CAC9B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,EAC1E,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,EAC7D,cAAc,CAAC,YAAY,EAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,EAC9D,cAAc,CAAC,qBAAqB,EACpC,MAAM,EACN,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,EAClE,OAAO,CAAC,qBAAqB,CACzB,cAAc,CAAC,0BAA0B,EACzC,yBAAyB,CAC5B,EACD,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,EAC1D,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,aAAa,EAAE,oBAAoB,CAAC,CACpF,CAAC;AACL,SAAA;KACJ;IAED,mBAAmB,GAAA;AACf,QAAA,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;KACzB;AAGO,IAAA,kBAAkB,CACtB,QAA2B,EAC3B,OAAoB,EACpB,YAA0B,EAAA;QAE1B,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,OAAO,MAAK,SAAS,EAAE;AAIhC,YAAA,IAAI,OAAO,CAAC,OAAO,YAAY,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE;AACjF,gBAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;oBAGjD,OAAO,CAAC,OAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjD,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAChC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC1C,oBAAA,OAAO,CAAC,OAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;AACrC,gBAAA,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC/D,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;aAAM,IAAI,QAAQ,YAAY,OAAO,IAAI,QAAQ,CAAC,OAAO,YAAY,OAAO,EAAE;AAC3E,YAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;gBAElD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA,IAAI,OAAO,EAAE;YAChB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAClD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;;AAxkBc,OAAA,CAAA,OAAO,GAAsB,OAAO,CAAC,SAAS,EAAE,CAAC;AAMjD,OAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;AACzC,OAAS,CAAA,SAAA,GAAG,CAAC;;AC5EhC,IAAY,aAKX,CAAA;AALD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACR,CAAC,EALW,aAAa,KAAb,aAAa,GAKxB,EAAA,CAAA,CAAA;;ACMM,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,SAAS,GAAG,WAAW,CAAC;AAErC,MAAM,UAAU,GAAG;IACf,QAAQ;IACR,UAAU;IACV,SAAS;CACZ,CAAC;MAKW,YAAY,CAAA;AAerB,IAAA,WAAA,CACuB,KAAa,EACb,OAAe,EACjB,UAA0B,EAC1B,QAAyB,EAC1C,OAAgB,EAChB,EAAW,EACQ,UAAoB,EACvC,cAAuB,EACJ,YAAsB,EAAA;QARtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QAGvB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAU;QAEpB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAU;QAZrC,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAChB,QAAA,IAAA,CAAA,gBAAgB,GAAkB,aAAa,CAAC,IAAI,CAAC;QAazD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAE1C,QAAA,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAE5C,QAAA,IAAI,CAAC,QAAQ;YACT,OAAO,WAAW,KAAK,WAAW;AAClC,gBAAA,OAAO,WAAW,CAAC,IAAI,KAAK,UAAU;AACtC,gBAAA,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,EAAK,YAAY,CAAC,MAAM,CAAA,CAAE,CAAC;AACzD,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC;YAC3C,IAAI;AACA,gBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,aAAA;YAAC,OAAM,EAAA,EAAA;AACJ,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAEpC,IAAI,OAAO,GAAG,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAK;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC;gBAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;aACf,EAAE,OAAO,CAAC,CAAC;AACf,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,EAAE,GAAA;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,KAAK,GAAA;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;IAED,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,KAAK,CAAC,KAAc,EAAE,gBAAkC,EAAE,QAA0B,EAAA;AAChF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;AACvB,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;AACtB,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,gBAAA,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,aAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,CACA,gBAAkC,EAClC,QAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;AACvB,YAAA,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;gBACnE,QAAQ;gBACR,QAAQ;AACX,aAAA,CAAC,CAAC;YACH,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEjE,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,SAAS,GAAW,OAAO,CAAC,iBAAiB,CAAC;AACpD,gBAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CACvD,SAAS,EACT,2BAA2B,EAC3B,QAAQ,CACX,CAAC;AAEF,gBAAA,MAAM,QAAQ,GAAW,OAAO,CAAC,gBAAgB,CAAC;AAClD,gBAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,CACtD,QAAQ,EACR,0BAA0B,EAC1B,QAAQ,CACX,CAAC;AAEF,gBAAA,IAAI,kBAAkB,IAAI,SAAS,GAAG,CAAC,EAAE;AACrC,oBAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAClE,iBAAA;AAED,gBAAA,IACI,iBAAiB;qBAChB,QAAQ,GAAG,CAAC;AACT,wBAAA,QAAQ,IAAI,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;wBACjE,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,EAC9C;AACE,oBAAA,MAAM,IAAI,KAAK,CACX,wEAAwE,CAC3E,CAAC;AACL,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;KACN;IAEO,cAAc,CAAC,aAAsB,EAAE,YAAqB,EAAA;QAChE,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAC7B,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAC/D,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/C,SAAA;QAED,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAA;KACJ;AAEO,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC1C,QAAA,IACI,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI;YAC5C,IAAI,CAAC,gBAAgB,KAAK,KAAK;AAC/B,YAAA,KAAK,KAAK,aAAa,CAAC,IAAI,EAC9B;YACE,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB;AACjB,YAAA,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI,GAAG,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC;KACjF;AAEO,IAAA,aAAa,CACjB,gBAAiC,EACjC,QAAyB,EACzB,OAA6B,EAAA;AAG7B,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI;AAEA,gBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,SAAS,EAAE;oBAC3C,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,iBAAA;AACD,gBAAA,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,gBAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7C,aAAA;AAAC,YAAA,OAAA,EAAA,EAAM,GAAE;AACb,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC3B,SAAA;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAEhB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5E,SAAA;AAGD,QAAA,IAAI,CAAC,aAAa;AACd,YAAA,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,KAAK;AACzC,kBAAE,YAAY;AACd,kBAAE,IAAI,CAAC,aAAa,CAAC;QAE7B,MAAM,cAAc,GAAmB,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;KACnC;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;KAC3C;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,SAAS,CACL,gBAAkC,EAClC,QAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,UAAU,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACN;IAED,YAAY,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;KACnC;IAES,UAAU,CAChB,gBAAiC,EACjC,QAAyB,EAAA;QAEzB,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK;AAChB,YAAA,gBAAgB,EAAE,gBAAgB;YAClC,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,UAAU,EAAE,IAAI,CAAC,WAAW;AAC5B,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,WAAW,EAAE,IAAI,CAAC,YAAY;SACjC,CAAC;KACL;AAEM,IAAA,eAAe,CAAC,OAA8B,EAAA;AAIjD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;AAEvC,QAAA,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;KAC5E;IAED,iBAAiB,GAAA;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,aAAa,GAAA;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;AA3QgB,YAAM,CAAA,MAAA,GAAG,CAAC;;AC1B/B,MAAM,EAAE,GAAW,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,MAAM,YAAY,CAAA;IACd,KAAK,GAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;IACD,SAAS,GAAA;AACL,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,KAAK,MAAW;AAEhB,IAAA,IAAI,MAAW;AAEf,IAAA,OAAO,MAAW;AAElB,IAAA,SAAS,MAAW;IAEpB,YAAY,GAAA;AACR,QAAA,OAAO,KAAK,CAAC;KAChB;AACD,IAAA,eAAe,CAAC,SAAgC,EAAA;AAC5C,QAAA,OAAO,EAAE,CAAC;KACb;IACD,iBAAiB,GAAA;AACb,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,gBAAgB,GAAA;AACZ,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,eAAe,GAAA;AACX,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,aAAa,GAAA;AACT,QAAA,OAAO,CAAC,CAAC;KACZ;AACJ,CAAA;AAEM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;;MClChD,eAAe,CAAA;AACxB,IAAA,wBAAwB,CACpB,iBAAoC,EACpC,YAA0B,EAC1B,SAAsB,EACtB,WAA+B,EAAA;;AAE/B,QAAA,MAAM,iBAAiB,GAA0B;YAC7C,cAAc,EAAE,SAAS,CAAC,OAAO;YACjC,eAAe,EAAE,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,SAAS;AAC9D,YAAA,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC1C,CAAC;AAEF,QAAA,QAAQ,iBAAiB;AACrB,YAAA,KAAA,CAAA;AACI,gBAAA,iBAAiB,CAAC,SAAS,GAAG,YAAyB,CAAC;gBACxD,MAAM;AACV,YAAA,KAAA,CAAA;AACI,gBAAA,iBAAiB,CAAC,UAAU,GAAG,YAA8B,CAAC;gBAC9D,MAAM;AACb,SAAA;AAED,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,iBAAiB,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAClD,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,OAAO,EACnB,IAAI,CACP,CAAC;AACL,SAAA;AAED,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAED,IAAA,YAAY,CAAC,CAA+B,EAAA;QACxC,OAAO;YACH,IAAI,EAAE,CAAC,CAAC,IAAI;SACf,CAAC;KACL;AAED,IAAA,iBAAiB,CAAC,CAAa,EAAA;QAC3B,OAAO;YACH,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACvB,CAAC;KACL;AACJ,CAAA;AAED,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;AACjC,MAAM,eAAe,GAAG,SAAS;;MCxE3B,mBAAmB,CAAA;AAK5B,IAAA,WAAA,CACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB,EAClB,QAAkB,EACnC,SAAkB,EAClB,aAAsB,EACtB,MAAiB,EAAA;QAPA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAa;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAP/B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAU,CAAC;AAYlC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;QAC7E,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACvC,SAAA;QACD,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,SAAA;KACJ;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACvD;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrD;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;AAChB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC/D;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;MC9EY,aAAa,CAAA;AAKtB,IAAA,WAAA,CACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB,EACnC,SAAkB,EAClB,aAAsB,EACtB,KAAc,EAAA;QANG,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAa;QAN/B,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AAWf,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;QAC7E,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACvC,SAAA;QACD,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,SAAA;KACJ;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,SAAS,CAAC,KAAK,GAAG,CAAC,EAAA;QACf,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACrE;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACnB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;MCjEY,iBAAiB,CAAA;AAK1B,IAAA,WAAA,CACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB,EACnC,SAAkB,EAClB,aAAsB,EACtB,MAAiB,EAAA;QANA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAa;AAN/B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAU,CAAC;AAWlC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;QAC7E,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACvC,SAAA;QACD,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,SAAA;KAEJ;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrD;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;AAChB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC7D;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;MC1EY,cAAc,CAAA;AAIvB,IAAA,WAAA,CAAY,OAAe,EAAA;AAHV,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,GAAG,EAAQ,CAAC;QAIpC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO;AACV,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACxD;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAM,EAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;AAED,IAAA,GAAG,CAAC,GAAM,EAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAED,WAAW,GAAA;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACzC;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;AACJ;;AC/BD,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,IAAK,UAIJ,CAAA;AAJD,CAAA,UAAK,UAAU,EAAA;AACX,IAAA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe,CAAA;AACnB,CAAC,EAJI,UAAU,KAAV,UAAU,GAId,EAAA,CAAA,CAAA,CAAA;MAEY,WAAW,CAAA;IASpB,WACqB,CAAA,UAAkB,EAClB,gBAA8B,EAAA;QAD9B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAc;AAVlC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,cAAc,CAAwB,WAAW,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,cAAc,CACjD,iBAAiB,CACpB,CAAC;AACe,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,cAAc,CACnD,mBAAmB,CACtB,CAAC;KAKE;IAEJ,gBAAgB,CACZ,SAAiB,EACjB,SAAiB,EACjB,QAAQ,GAAG,KAAK,EAChB,IAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACzD;IAED,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAA,GAAoB,EAAE,EAAA;AACjF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtD;AAED,IAAA,WAAW,CACP,SAAiB,EACjB,KAAa,EACb,OAAiB,EACjB,QAAQ,GAAG,KAAK,EAChB,IAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjE;AAEO,IAAA,gBAAgB,CAAC,IAAY,EAAE,IAAiB,EAAE,OAAiB,EAAA;AACvE,QAAA,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CACjD,IAAI,EACJ,IAAI,EACJ,UAAU,CAAC,eAAe,CAC7B,CAAC;QACF,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,UAAU,GAAG,IAAI,mBAAmB,CAChC,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,EACV,OAAO,CACV,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;AAC9C,gBAAA,MAAM,IAAI,KAAK,CAAC,eAAe,mBAAmB,CAAA,8BAAA,CAAgC,CAAC,CAAC;AACvF,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;IAEO,UAAU,CAAC,IAAY,EAAE,IAAiB,EAAA;AAC9C,QAAA,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,UAAU,GAAG,IAAI,aAAa,CAC1B,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,CACb,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;AACxC,gBAAA,MAAM,IAAI,KAAK,CAAC,eAAe,WAAW,CAAA,wBAAA,CAA0B,CAAC,CAAC;AACzE,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;IAEO,cAAc,CAAC,IAAY,EAAE,IAAiB,EAAA;AAClD,QAAA,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACzF,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,UAAU,GAAG,IAAI,iBAAiB,CAC9B,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,CACb,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;AAC5C,gBAAA,MAAM,IAAI,KAAK,CAAC,eAAe,iBAAiB,CAAA,4BAAA,CAA8B,CAAC,CAAC;AACnF,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;IAED,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;KACzC;IAED,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;KAC7C;IAED,mBAAmB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;KAC/C;IAEO,SAAS,CAAC,IAAiB,EAAE,QAAiB,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;KACzD;AAEO,IAAA,oBAAoB,CACxB,SAAiB,EACjB,IAAiB,EACjB,UAAsB,EAAA;AAGtB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,aAAA,IAAI,EAAE;AACN,aAAA,MAAM,CAAC,CAAC,IAAiB,EAAE,IAAY,KAAI;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC;SACf,EAAE,EAAE,CAAC,CAAC;AACX,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,UAAU,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAClF,OAAO;YACH,GAAG;YACH,UAAU;SACb,CAAC;KACL;AACJ;;MCpJY,QAAQ,CAAA;AAArB,IAAA,WAAA,GAAA;QAEoB,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;KACjC;AAAA;;AC6CD,MAAM,wBAAwB,GAAW,SAAS,CAAC;AACnD,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,MAAM,mBAAmB,GAAG;AACxB,IAAA,aAAa,EAAE,YAAY;CAC9B,CAAC;AACF,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAE7E,mBAAmB,CAAA;IAU5B,WAA6B,CAAA,QAAqB,EAAmB,KAAa,EAAA;QAArD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QAAmB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAPjE,IAA0B,CAAA,0BAAA,GACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAwB,CAAA,wBAAA,GACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAKrC,QAAA,KAAK,MAAM,YAAY,IAAI,wBAAwB,EAAE;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACvC,gBAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,YAAY,CAAA,CAAA,CAAG,CAAC,CAAC;AACnF,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC;YAC5B,SAAS,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AAC5D,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpC,QAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,oBAAoB,GAAG,iBAAiB;AACzC,cAAE,iBAAiB,CAAC,mBAAmB,CAAC;cACtC,uBAAuB,CAAC;KACjC;IAES,YAAY,GAAA;QAClB,OAAO,IAAI,WAAW,CAClB,IAAI,CAAC,IAAI,EACT,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,mBAAmB,CAAC,cAAc,CACpE,CAAC;KACL;IAEO,eAAe,CAAC,SAAS,GAAG,CAAC,EAAA;AAEjC,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACtF;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAWS,IAAA,gBAAgB,CACtB,gBAAiC,EACjC,QAAyB,EACzB,UAAU,GAAG,KAAK,EAAA;AAElB,QAAA,IAAI,UAAkB,CAAC;AACvB,QAAA,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;YACtC,UAAU,GAAG,YAAY,CAAC;AAC1B,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,QAAQ,GAAG;oBACP,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC;iBACjE,CAAC;AACL,aAAA;AAAM,iBAAA;gBACH,QAAQ,GAAG,SAAS,CAAC;AACxB,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,UAAU,GAAG,gBAAgB,CAAC;AACjC,SAAA;QAED,OAAO,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;KACnE;AAEO,IAAA,mBAAmB,CAAC,OAAoB,EAAA;;QAC5C,QACI,MAAA,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MACvC,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,CAAC,MAAM,EACzD;KACL;AAQD,IAAA,GAAG,CAAC,gBAAiC,EAAE,QAA0B,EAAE,OAAoB,EAAA;AACnF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AACvC,YAAA,OAAO,CAAC,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAEtE,YAAA,IAAI,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE;gBACtB,IAAI,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,OAAO,EACnB,SAAS,EACT,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CACpC,CAAC;AACL,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAES,YAAY,CAClB,UAAkB,EAClB,MAAc,EACd,IAAqB,EACrB,SAAiB,EACjB,MAAe,EAAA;AAEf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACvB,MAAM,WAAW,GAAa,cAAc,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,kBAAkB,EAAE;AAC3C,oBAAA,MAAM,EAAE,WAAW;AACtB,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,KAAK,CACD,KAAc,EACd,gBAAkC,EAClC,QAA0B,EAC1B,OAAoB,EAAA;AAEpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;AAC9B,YAAA,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;gBACnE,QAAQ;gBACR,QAAQ;AACX,aAAA,CAAC,CAAC;YACH,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAW,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9E,SAAC,CAAC,CAAC;KACN;IAES,cAAc,CACpB,GAAY,EACZ,gBAAkC,EAClC,QAA0B,EAC1B,UAAmB,EACnB,cAAuB,EAAA;QAEvB,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAE7C,QAAA,IAAI,KAAY,CAAC;QACjB,IAAI,GAAG,YAAY,KAAK,EAAE;YACtB,KAAK,GAAG,GAAG,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,GAAW,CAAC;AAChB,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;gBACzE,GAAG,GAAG,SAAS,CAAC;AACnB,aAAA;AAAM,iBAAA;AACH,gBAAA,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,aAAA;AACD,YAAA,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAE5E,QAAA,MAAM,SAAS,GAAc;YACzB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW;YACX,UAAU;SACb,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,YAAY,CACpB,IAAI,CAAC,IAAI,EACT,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,CACjB,CAAC;KACL;IAED,aAAa,CAAC,IAAY,EAAE,OAAiC,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAK;;AACpC,YAAA,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE/D,YAAA,IAAI,OAA+B,CAAC;AACpC,YAAA,IAAI,WAAW,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,iBAAiB,MAAK,SAAS,CAAC;AAC3D,YAAA,MAAM,MAAM,GAAW,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;AAC/D,YAAA,IAAI,MAAM,EAAE;gBACR,WAAW,GAAG,IAAI,CAAC;AACnB,gBAAA,OAAO,GAAG;oBACN,MAAM;AACN,oBAAA,qBAAqB,EAAE,OAAO,CAAC,sBAAsB,CAAC,qBAAqB;iBAC9E,CAAC;AACL,aAAA;AAAM,iBAAA;AAEH,gBAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,CAAC;AAC9D,aAAA;AACD,YAAA,MAAM,QAAQ,GAAa,IAAI,YAAY,CACvC,IAAI,EACJ,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,wBAAwB,EAC7B,wBAAwB,EACxB,SAAS,EACT,OAAO,CAAC,qBAAqB,EAC7B,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,iBAAiB,EAC1B,WAAW,CACd,CAAC;AACF,YAAA,OAAO,QAAQ,CAAC;SACnB,EAAE,YAAY,CAAC,CAAC;KACpB;AAES,IAAA,gBAAgB,CAAC,MAAsB,EAAA;AAC7C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1F,OAAO;YACH,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa;YACpD,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW;YACX,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC;KACL;AAEO,IAAA,mBAAmB,CAAC,MAAsB,EAAA;AAC9C,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACvC,YAAA,MAAM,IAAI,GAA6B,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAClF,MAAM,CAAC,aAAa,CACvB,CAAC;YACF,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC/E,MAAM,CAAC,MAAM,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,EAAE,CAAC;AACzB,gBAAA,MAAM,CAAC,SAAS,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,SAAS,KAAI,KAAK,CAAC;AAC5C,gBAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAG5B,aAAA;AACJ,SAAA;QAED,MAAM,YAAY,GAAiB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KACzE;AAES,IAAA,YAAY,CAClB,YAA0B,EAC1B,cAAsB,EACtB,MAAe,EAAA;AAEf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;KACtF;IAEO,oBAAoB,CAAC,KAAc,EAAE,MAAsB,EAAA;QAC/D,IAAI,CAAC,cAAc,CACf,KAAK,EACL,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,MAAM,CAChB,CAAC;KACL;IAED,QAAQ,CACJ,KAAY,EACZ,SAAyC,EACzC,gBAAkC,EAClC,QAA0B,EAC1B,OAA4B,EAAA;AAE5B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAEnC,YAAA,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3D,YAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,YAAA,IAAI,WAAW,CAAC;YAChB,IAAI,SAAS,YAAY,WAAW,EAAE;gBAClC,WAAW,GAAG,SAAS,CAAC;AAC3B,aAAA;AAAM,iBAAA;gBACH,SAAS,GAAG,SAA6B,CAAC;gBAG1C,IAAI,CAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,aAAY,WAAW,EAAE;AACjD,oBAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzC,iBAAA;AAAM,qBAAA;AACH,oBAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACnD,iBAAA;AACJ,aAAA;AAED,YAAA,MAAM,WAAW,GAAuB,IAAI,CAAC,gBAAgB,CACzD,gBAAgB,EAChB,QAAQ,EACR,IAAI,CACP,CAAC;YAEF,MAAM,MAAM,GAAW,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAEzD,QAAQ,KAAK,CAAC,IAAI;gBACd,KAAK,OAAO,EAAE;oBACV,MAAM,UAAU,GAAG,KAAmB,CAAC;oBAIvC,MAAM,GAAG,GAA0B,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;AACnE,oBAAA,IAAI,GAAG,EAAE;AACL,wBAAA,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACpC,qBAAA;oBAED,MAAM,YAAY,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,gBAAgB,CAAC;AAG/C,oBAAA,MAAM,iBAAiB,GACnB,eAAe,CAAC,wBAAwB,CACpC,YAAY;0BACP,CAAA;0BACA,CAA4B,EACjC,YAAY;AACR,0BAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAC/C,0BAAE,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,EAC9C,WAAW,EACX,WAAW,CACd,CAAC;oBACN,iBAAiB,CAAC,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;AAExC,oBAAA,IAAI,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,EACT,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,EACL,MAAM,CACT,CAAC;oBACF,MAAM;AACT,iBAAA;AACD,gBAAA;AACI,oBAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC/C,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,gBAAgB,CACZ,SAAiB,EACjB,SAAS,GAAG,CAAC,EACb,QAAQ,GAAG,KAAK,EAChB,IAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;AACZ,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzE,SAAC,CAAC,CAAC;KACN;IAED,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAA,GAAoB,EAAE,EAAA;AACjF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;AACZ,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/D,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CACP,SAAiB,EACjB,KAAa,EACb,OAAA,GAAoB,EAAE,EACtB,QAAQ,GAAG,KAAK,EAChB,OAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAqB,kBAAA,EAAA,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;AACZ,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzE,SAAC,CAAC,CAAC;KACN;IAED,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC5E;IAED,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAChF;IAED,mBAAmB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAClF;AAED,IAAA,oBAAoB,CAAC,QAA2B,EAAA;QAC5C,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KAChD;AAED,IAAA,cAAc,CAAC,OAA4B,EAAA;AACvC,QAAA,OAAO,OAAO;AACV,cAAE,MAAM,CAAC,MAAM,CACT;AACI,gBAAA,sBAAsB,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB;aAC1D,EACD,OAAO,CAAC,YAAY,CACvB;cACD,SAAS,CAAC;KACnB;AAED,IAAA,QAAQ,CAAI,IAAY,EAAE,OAA6B,EAAE,OAA4B,EAAA;;QACjF,MAAM,UAAU,GAA4B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI;AACA,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC;AAC9E,YAAA,MAAM,GAAG,CAAC;AACb,SAAA;AAAS,gBAAA;AACN,YAAA,GAAG,CAAC,IAAI,CACJ,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAC5B,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,0CAAE,OAAO,EAC7B,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,CACvB,CAAC;AACL,SAAA;KACJ;AAED,IAAA,MAAM,aAAa,CACf,IAAY,EACZ,OAAsC,EACtC,OAA4B,EAAA;;QAE5B,MAAM,UAAU,GAA4B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI;AACA,YAAA,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC;AAC9E,YAAA,MAAM,GAAG,CAAC;AACb,SAAA;AAAS,gBAAA;AACN,YAAA,GAAG,CAAC,IAAI,CACJ,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAC5B,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,0CAAE,OAAO,EAC7B,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,CACvB,CAAC;AACL,SAAA;KACJ;;AA9eyB,mBAAc,CAAA,cAAA,GAAG,oBAAoB;;ACrDnE,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,aAAa,GAAG,EAAE,CAAC;MAEZ,uBAAuB,CAAA;AAMhC,IAAA,WAAA,CAAY,KAAc,EAAA;AALT,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAoC,CAAC;AAC1D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,KAAK,EAA4B,CAAC;QAKlE,IAAI,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;AAC5D,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACtD,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,KAAK,GAAG,aAAa,CAAC;AACzB,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAG1D,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;KAClD;AAED,IAAA,GAAG,CAAC,KAA+B,EAAA;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CACX,CAAA,8DAAA,EAAiE,KAAK,CAAC,EAAE,CAAE,CAAA,CAC9E,CAAC;AACL,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE;AAG9C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9D,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,SAAA;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;KACnC;AAED,IAAA,QAAQ,CAAC,MAAc,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACvC;AAED,IAAA,UAAU,CAAC,MAAc,EAAA;AACrB,QAAA,IAAI,OAAiC,CAAC;AACtC,QAAA,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AAInC,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AACnC,YAAA,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AAChD,YAAA,MAAM,YAAY,GACd,UAAU,IAAI,CAAC;AACf,iBAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACtE,YAAA,IAAI,YAAY,IAAI,UAAU,GAAG,WAAW,EAAE;gBAC1C,OAAO,GAAG,KAAK,CAAC;gBAChB,WAAW,GAAG,UAAU,CAAC;AAC5B,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AACJ;;AClEK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;IAC9C,WACI,CAAA,IAAY,EACZ,SAAyB,EACzB,OAAwB,EACxB,MAAe,EACf,SAAmB,EACnB,aAAsB,EAAA;QAEtB,KAAK,CACD,IAAI,EACJ,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,EACtC,SAAS,EACT,aAAa,CAChB,CAAC;KACL;AAGD,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAES,UAAU,CAAC,UAAkB,EAAE,QAAyB,EAAA;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACtD,QAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;ACtCD,MAAM,MAAM,GAAW,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,gBAAgB,CAAA;IAClB,KAAK,GAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IACD,SAAS,GAAA;AACL,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,KAAK,MAAW;AAGhB,IAAA,IAAI,MAAW;AAGf,IAAA,OAAO,MAAW;AAGlB,IAAA,SAAS,MAAW;IAEpB,YAAY,GAAA;AACR,QAAA,OAAO,KAAK,CAAC;KAChB;AACD,IAAA,eAAe,CAAC,SAAgC,EAAA;AAC5C,QAAA,OAAO,EAAE,CAAC;KACb;IACD,iBAAiB,GAAA;AACb,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,gBAAgB,GAAA;AACZ,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,eAAe,GAAA;AACX,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,aAAa,GAAA;AACT,QAAA,OAAO,CAAC,CAAC;KACZ;AACJ,CAAA;AAEM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;;AC7B/D,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAO3D,IAAA,WAAA,CAAY,QAAqB,EAAE,KAAa,EAAmB,WAAoB,EAAA;AACnF,QAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QADwC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAS;AAL/E,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAE5C,IAA8B,CAAA,8BAAA,GAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAI3C;AAED,IAAA,iBAAiB,CACb,IAAY,EACZ,MAAe,EACf,SAAmB,EACnB,OAA8B,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAK;AACpC,YAAA,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEtC,MAAM,eAAe,GAAG,IAAI,gBAAgB,CACxC,IAAI,EACJ,IAAI,CAAC,8BAA8B,EACnC,IAAI,CAAC,wBAAwB,EAC7B,MAAM,EACN,SAAS,EACT,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,iBAAiB,CAC7B,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,gBAAA,MAAM,KAAK,GAA6B;AACpC,oBAAA,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE;oBAC3B,IAAI;AACJ,oBAAA,aAAa,EAAE,eAAe,CAAC,gBAAgB,EAAE;AACjD,oBAAA,SAAS,EAAE,eAAe,CAAC,YAAY,EAAE;iBAC5C,CAAC;AACF,gBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAErC,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE;oBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AACnD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;AACrC,oBAAA,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;AACzC,iBAAA;AACD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC;AAC9C,aAAA;AAED,YAAA,OAAO,eAA+B,CAAC;SAC1C,EAAE,gBAAgB,CAAC,CAAC;KACxB;AAEO,IAAA,uBAAuB,CAAC,MAAsB,EAAA;AAGlD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnE,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,YAAY,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEhD,YAAA,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,OAAO;AACV,SAAA;QAED,MAAM,YAAY,GAAiB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;KACxC;AAES,IAAA,gBAAgB,CAAC,MAAsB,EAAA;QAC7C,MAAM,YAAY,GAAiB,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClE,QAAA,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAA,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1C,QAAA,OAAO,YAAY,CAAC;KACvB;IAED,uBAAuB,GAAA;;AACnB,QAAA,OAAO,MAAA,IAAI,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;KAC5C;IAED,2BAA2B,GAAA;;AACvB,QAAA,OAAO,MAAA,IAAI,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,EAAE,CAAC;KACnD;IAES,YAAY,GAAA;AAClB,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;KACtD;AAED,IAAA,2BAA2B,CAAC,MAAc,EAAA;QACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACvD;AACJ;;ACtGD,MAAM,SAAS,GAAG,CAAC,CAAC;MAEP,qBAAqB,CAAA;IAK9B,WAA6B,CAAA,MAAuB,EAAmB,IAAc,EAAA;QAAxD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAAmB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAU;QAH7E,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QACT,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAGlE,QAAA,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACzC;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,SAAA;KACJ;IAED,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAEO,IAAA,cAAc,CAAC,KAAiB,EAAA;;AACpC,QAAA,IAAI,YAAY,GAAkB,CAAA,EAAA,GAAA,KAAK,CAAC,YAAY,qDAAI,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAEvC,YAAA,YAAY,GAAI,KAAa,CAAC,IAAI,CAAC;AACtC,SAAA;QACD,MAAM,SAAS,GAAgB,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAEvE,QAAA,IAAI,SAAS,EAAE;YAEX,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;AAC9B,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;AACzD,wBAAA,KAAK,EAAE,IAAI;AACd,qBAAA,CAAC,CAAC;AACN,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAEO,IAAA,oBAAoB,CAAC,IAAmB,EAAA;;QAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YAC9C,MAAM,OAAO,GAAG,CAAA,EAAA,GAAA,cAAc,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAE,CAAC;AACtD,YAAA,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,QAAQ,EAAE;AACzC,gBAAA,OAAO,cAAc,CAAC;AACzB,aAAA;YACD,IAAI,OAAO,KAAK,OAAO,EAAE;gBACrB,MAAM,YAAY,GAAG,cAAkC,CAAC;gBACxD,IAAI,CAAA,CAAA,EAAA,GAAA,YAAY,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,QAAQ,EAAE;AAC/C,oBAAA,OAAO,YAAY,CAAC;AACvB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AACJ;;AC5DM,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAWrD,IAAK,SAGJ,CAAA;AAHD,CAAA,UAAK,SAAS,EAAA;AACV,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACX,CAAC,EAHI,SAAS,KAAT,SAAS,GAGb,EAAA,CAAA,CAAA,CAAA;MAOY,iBAAiB,CAAA;AAG1B,IAAA,WAAA,CACqB,YAAyB,EACzB,gBAAiC,EACjC,kBAAqC,EAAA;QAFrC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;QACzB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AALlD,QAAA,IAAA,CAAA,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;QAOxD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QACvE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;KACtF;AAEM,IAAA,SAAS,CAAC,MAAoB,EAAA;QACjC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAE5C,YAAA,MAAM,MAAM,GAAe;gBACvB,KAAK,EAAE,SAAS,CAAC,OAAO;gBACxB,IAAI,EAAE,cAAc,CAAC,KAAK;aAC7B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElC,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEjE,YAAA,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtE,MAAM,CAAC,WAAW,CACd;AACI,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,IAAI,EAAE,sBAAsB;aAC/B,EACD,GAAG,EACH,CAAC,cAAc,CAAC,KAAK,CAAC,CACzB,CAAC;AACL,SAAA;KACJ;AAEM,IAAA,UAAU,CAAC,MAAoB,EAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChC,SAAA;KACJ;AAEO,IAAA,wBAAwB,CAAC,CAAmC,EAAA;AAChE,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAwB,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE;YAC7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAA4B,CAAC,CAAC;AAC9D,SAAA;KACJ;IAEO,wBAAwB,GAAA;QAE5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AACJ;;ACtFM,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAC3C,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,oBAAoB,GAAG,SAAS,CAAC;MAcjC,eAAe,CAAA;IAOxB,WACqB,CAAA,KAAmB,EACnB,eAAgC,EAAA;QADhC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QACnB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QARpC,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzE,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAU,CAAA,UAAA,GAAuB,EAAE,CAAC;QACpC,IAAc,CAAA,cAAA,GAA2B,EAAE,CAAC;QAMhD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO,CAAC,wBAAwB,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAG3E,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;KACzE;AAEO,IAAA,oBAAoB,CAAC,CAA8B,EAAA;AAEvD,QAAA,IACI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,qBAAqB;AACrC,YAAA,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB;AACtC,YAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,WAAW;YACjC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,EACzD;AACE,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;AAEM,IAAA,OAAO,CAAC,GAAqB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACxB,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,IAAI,EAAE,GAAG;AACZ,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAEM,IAAA,WAAW,CAAC,OAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACxB,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,IAAI,EAAE,OAAO;AAChB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;KACnC;AACJ;;MCvEY,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACY,IAAW,CAAA,WAAA,GAAoB,EAAE,CAAC;QAClC,IAAe,CAAA,eAAA,GAAwB,EAAE,CAAC;QAC1C,IAAiB,CAAA,iBAAA,GAA0B,EAAE,CAAC;KA2EzD;AAzEG,IAAA,GAAG,CAAC,aAAmC,EAAA;;AACnC,QAAA,IAAI,MAAA,aAAa,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CACjB,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,CAC3B,CAAC,EAAa,KACV,IAAI,aAAa,CACb,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,YAAY,EACf,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EACtC,EAAE,CAAC,gBAAgB,EACnB,EAAE,CAAC,oBAAoB,EACvB,EAAE,CAAC,KAAK,CACX,CACR,CACJ,CAAC;AACL,SAAA;AAED,QAAA,IAAI,MAAA,aAAa,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,GAAG,aAAa,CAAC,cAAc,CAAC,GAAG,CAC/B,CAAC,EAAiB,KACd,IAAI,iBAAiB,CACjB,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,YAAY,EACf,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EACtC,EAAE,CAAC,gBAAgB,EACnB,EAAE,CAAC,oBAAoB,EACvB,EAAE,CAAC,MAAM,CACZ,CACR,CACJ,CAAC;AACL,SAAA;AAED,QAAA,IAAI,MAAA,aAAa,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACvB,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,CACjC,CAAC,EAAmB,KAChB,IAAI,mBAAmB,CACnB,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,YAAY,EACf,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EACtC,EAAE,CAAC,OAAO,EACV,EAAE,CAAC,gBAAgB,EACnB,EAAE,CAAC,oBAAoB,EACvB,EAAE,CAAC,MAAM,CACZ,CACR,CACJ,CAAC;AACL,SAAA;KACJ;IAED,aAAa,GAAA;QAET,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,SAAS,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,iBAAiB,GAAA;QAEb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAC9C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,SAAS,CAC5C,CAAC;QACF,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IACD,mBAAmB,GAAA;QAEf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAClD,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,SAAS,CAC5C,CAAC;QACF,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AACJ;;AC/EM,MAAM,qBAAqB,GAAG,IAAI,CAAC;MAE7B,eAAe,CAAA;IAIxB,WAA6B,CAAA,UAA2B,EAAE,aAAsB,EAAA;QAAnD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiB;QAHvC,IAAa,CAAA,aAAA,GAAW,qBAAqB,CAAC;QAI3D,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC5D,IACI,OAAO,CAAC,wBAAwB,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC;YAC1E,aAAa,GAAG,CAAC,EACnB;AACE,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACtC,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAgB,EAAA;AAC3D,QAAA,MAAM,GAAG,GAAqB;YAC1B,MAAM;YACN,IAAI;YACJ,OAAO;SACV,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAChC;AAED,IAAA,wBAAwB,CAAC,UAAmC,EAAA;AACxD,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QAGrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC3E;IAEO,sBAAsB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAyB;YAClC,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;YACpF,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAC5C,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CACjD;YACD,gBAAgB,EAAE,cAAc,CAAC,mBAAmB,CAChD,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CACnD;SACJ,CAAC;AAEF,QAAA,IACI,OAAO,CAAC,UAAU,CAAC,MAAM;YACzB,OAAO,CAAC,cAAc,CAAC,MAAM;AAC7B,YAAA,OAAO,CAAC,gBAAgB,CAAC,MAAM,EACjC;AACE,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,SAAA;KACJ;AACJ;;AC3BD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,uCAAuC,GAAG,wBAAwB,GAAG,aAAa,CAAC,MAAM,CAAC;AAGhG,SAAS,QAAQ,MAAW;MAEf,WAAW,CAAA;AAwBpB,IAAA,IAAI,mBAAmB,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IACD,IAAI,mBAAmB,CAAC,QAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;KACxC;AAED,IAAA,IAAI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IACD,IAAI,kBAAkB,CAAC,QAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;KACvC;AAED,IAAA,WAAA,CAA6B,aAA2B,EAAA;QAA3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;AArCvC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAgB,CAAC;AACzC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAwD,CAAC;AAC/E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AAMd,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,GAAG,EAAgB,CAAC;AACtD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,GAAG,EAAwB,CAAC;QAExD,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;AACnB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEhE,IAAO,CAAA,OAAA,GAAkB,SAAS,CAAC;QACnC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAGpB,IAAc,CAAA,cAAA,GAAkB,CAAC,CAAC;KAgBkB;IAE5D,WAAW,CAAC,IAAY,EAAE,OAAgC,EAAA;;QACtD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC/E,SAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAA,iBAAA,CAAmB,CAAC,CAAC;AACxE,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC;QAE/C,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,aAAa,MAAK,SAAS,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,SAAA;QAED,IAAI,CAAC,gBAAgB,GAAG,CAAA,MAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,KAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAC3F,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,CACvC,IAAI,EACJ,IAAI,EACJ,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,2BAA2B,CACvC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,eAAe,GAAG,IAAI,eAAe,CACvC,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB,CAAC,EAC5D,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,4BAA4B,CACxC,CAAC;AACF,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;AAClD,SAAA;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;YAExC,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAC3C,CAAC,GAAqB,KAAI;gBACtB,GAAG,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC5D,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;AAEtE,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACvD,aAAC,EACD,CAAC,GAAyB,KAAI;AAC1B,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC/B,EACD,MAAK;gBACD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACpE,aAAC,CACJ,CAAC;AACL,SAAA;AAGD,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAI,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,CAAA,CAAC;AAEvE,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpF,OAAO;AACH,YAAA,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5C,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,YAAA,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAChE,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,YAAA,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACtE,YAAA,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1D,YAAA,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5D,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AACpE,YAAA,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9E,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,YAAA,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAEhE,YAAA,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACxE,YAAA,oBAAoB,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtF,wBAAwB,EAAE,IAAI,CAAC,SAAS;AACpC,kBAAE,QAAQ;kBACR,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAEtD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,cAAc,EAAE,IAAI,CAAC,WAAW;AAC5B,kBAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACjE,kBAAE,QAAQ;YACd,aAAa,EAAE,IAAI,CAAC,WAAW;AAC3B,kBAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAClE,kBAAE,QAAQ;SACjB,CAAC;KACL;AAED,IAAA,kBAAkB,CAAC,IAAY,EAAA;QAC3B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE;YAExC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,uCAAuC,CAAC,GAAG,aAAa,CAAC;AACrF,SAAA;QACD,IAAI,KAAK,GAAiD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAA,0BAAA,CAA4B,CAAC,CAAC;AACjF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,IAAI,OAAO,GAAA;;AACP,QAAA,OAAO,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;KAC/B;AAED,IAAA,iCAAiC,CAAC,MAAc,EAAA;;QAC5C,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;KAC9D;IAGD,MAAM,CACF,UAAkB,EAClB,MAAc,EACd,IAAqB,EACrB,SAAiB,EACjB,MAAc,EAAA;;AAEd,QAAA,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAGpB,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,UAAU,KAAI,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,CAAA,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;QACtF,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACpD,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1D,cAAc,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAEhD,QAAA,MAAM,OAAO,GAAY;YACrB,SAAS;YACT,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,cAAc;YACd,UAAU;AACV,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE,IAAI,CAAC,OAAO;AAC3B,YAAA,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE;YAC3C,eAAe,EAAE,IAAI,CAAC,gBAAgB;AAEtC,YAAA,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;SACjC,CAAC;AAEF,QAAA,MAAM,WAAW,GAAG;YAChB,MAAM;YACN,IAAI;YACJ,OAAO;SACV,CAAC;AAKF,QAAA,OAAO,CAAC,WAAW,GAAG,cAAc,CAAC,sBAAsB,CACvD,IAAI,CAAC,mBAAmB,EACxB,WAAW,CACd,CAAC;AACF,QAAA,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,sBAAsB,CACtD,IAAI,CAAC,kBAAkB,EACvB,WAAW,CACd,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAGjB,YAAA,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACzC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxD,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,OAAO,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAChF,aAAA;AACD,YAAA,OAAO,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAChF,YAAA,OAAO,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAClF,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAE1B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAEO,IAAA,UAAU,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAgB,EAAA;AACtE,QAAA,MAAM,kBAAkB,GAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAC7E,CAAC,SAAuB,KAAI;;YACxB,OAAA,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC;AAChD,gBAAA,EAAC,CAAA,EAAA,GAAA,SAAS,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,CAAI,CAAA,CAAA;AAAA,SAAA,CAC1C,CAAC;AAEF,QAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE;AAExC,gBAAA,IAAI,QAAQ,GAAW,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAEtE,IAAI;oBACA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBAEzC,IAAI,QAAQ,GAAG,CAAC,EAAE;wBACd,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC3D,qBAAA;AACJ,iBAAA;AAAC,gBAAA,OAAO,GAAG,EAAE;oBACV,QAAQ,IAAI,CAAC,CAAC;AAEd,oBAAA,IAAI,QAAQ,IAAI,WAAW,CAAC,sBAAsB,EAAE;AAChD,wBAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,wBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,KAAK,CAAC,EAAE;AACrE,4BAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAGvD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAED,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IAED,gCAAgC,GAAA;;QAC5B,OAAO;AACH,YAAA,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,EAAE;AACjD,YAAA,qBAAqB,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,2BAA2B,EAAE;SACvE,CAAC;KACL;IAED,oBAAoB,GAAA;AAChB,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChF,aAAA;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;AACrC,SAAA;KACJ;IAED,sBAAsB,GAAA;QAClB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;AAEpC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACtC,SAAA;KACJ;IAED,oBAAoB,CAAC,SAAuB,EAAE,OAA6B,EAAA;AACvE,QAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACpC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7C,IACI,CAAC,CAAC,SAAS,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;AACrE,aAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,WAAW,CAAA,EACtB;AACE,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACxD,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,wBAAwB,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AACjE,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;YAC5C,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnD,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3D,sBAAsB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClE,SAAA,CAAC,CAAC;KACN;IAEO,iBAAiB,GAAA;;QACrB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,aAAa,EAAE,CACxB,CAAC;AACF,QAAA,OAAO,SAAS,CAAC,MAAM,CACnB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACzB,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE,KAAI,EAAE,CAC5C,CAAC;KACL;IAEO,qBAAqB,GAAA;;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,iBAAiB,EAAE,CAC5B,CAAC;AACF,QAAA,OAAO,SAAS,CAAC,MAAM,CACnB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACzB,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,EAAE,KAAI,EAAE,CAChD,CAAC;KACL;IAEO,uBAAuB,GAAA;;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,mBAAmB,EAAE,CAC9B,CAAC;AACF,QAAA,OAAO,SAAS,CAAC,MAAM,CACnB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACzB,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,EAAE,KAAI,EAAE,CAClD,CAAC;KACL;AAED,IAAA,oBAAoB,CAAC,QAA2B,EAAA;AAC5C,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC9C;AAED,IAAA,mBAAmB,CAAC,MAAc,EAAA;QAC9B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI;gBACA,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpB,aAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACV,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACvB,oBAAA,MAAM,GAAG,CAAC;AACb,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAED,kBAAkB,GAAA;QACd,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAEO,IAAA,WAAW,CAAC,MAA6C,EAAA;AAC7D,QAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;YAC9B,MAAM,GAAG,MAAM,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAEpD,MAAM,GAAG,SAAS,CAAC;AACtB,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAA,CAAE,CAAC,CAAC;AACxD,SAAA;KACJ;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;;AAtYc,WAAsB,CAAA,sBAAA,GAAG,CAAC;;MC/ChC,KAAK,CAAA;AAId,IAAA,IAAY,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvD,SAAA;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,WAAA,CAA6B,aAA2B,EAAA;QAA3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;AACpD,QAAA,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;KAC3D;IAEM,uBAAuB,CAC1B,IAAY,EACZ,OAAgC,EAAA;QAEhC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE;YAG5C,OAAO,CAAC,cAAc,EAAE,CAAC;AAC5B,SAAA;AACD,QAAA,MAAM,MAAM,GAA2B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpF,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;AACnE,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,kBAAkB,CAAC,IAAa,EAAA;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KACrD;AACJ,CAAA;AAEM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;;AC3C7C,MAAM,uBAAuB,GAAG,qCAAqC,CAAC;AAItE,MAAM,UAAU,GAAa;AACzB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,iBAAiB,EAAE,gBAAgB;AACnC,IAAA,UAAU,EAAE,YAAY;CAC3B,CAAC;AACF,MAAM,QAAQ,GAAa;AACvB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,iBAAiB,EAAE,OAAO;AAC1B,IAAA,UAAU,EAAE,OAAO;CACtB,CAAC;AACF,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,cAAc,GAAG,WAAW,CAAC;MAEtB,gBAAgB,CAAA;AAIzB,IAAA,WAAA,CAAY,WAAyB,EAAA;AAHpB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAa,CAAA,aAAA,GAAa,EAAE,CAAC;AAG1C,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAC9C,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAgB,EAAA;QAC3D,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAE1C,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YACtB,OAAO;AACV,SAAA;QAED,IAAI,EAAE,KAAK,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;AAC1B,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC/B,YAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;YACpB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;YAC9C,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;AACvD,SAAA;AAAM,aAAA;YACH,KAAK,GAAG,EAAE,CAAC;AACd,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KACnD;AAEO,IAAA,UAAU,CAAC,QAAgB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;AACjE,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,QACI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EACvF;KACL;AAED,IAAA,SAAS,CAAC,MAAuB,EAAA;QAC7B,IAAI,MAAM,YAAY,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,SAAA;KACJ;AAED,IAAA,YAAY,CAAC,MAAuB,EAAA;QAChC,IAAI,MAAM,YAAY,MAAM,EAAE;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9E,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,SAAA;KACJ;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;KAC3D;IAED,UAAU,GAAA;QACN,MAAM,OAAO,GAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;KACpD;IAEO,IAAI,CACR,KAAa,EACb,KAAe,EACf,MAAgB,EAChB,KAAgB,GAAA,YAAY,EAC5B,OAAA,GAAkB,cAAc,EAAA;AAEhC,QAAA,MAAM,GAAG,GAAG,CAAA,MAAA,EAAS,KAAK,CAAqB,kBAAA,EAAA,OAAO,EAAE,CAAC;AAEzD,QAAA,OAAO,CAAC,GAAG,CACP,YAAY,KAAK,CAAA,CAAE,EACnB,uDAAuD,EACvD,GAAG,EACH,KAAK,IAAI,EAAE,EACX,MAAM,IAAI,EAAE,CACf,CAAC;KACL;AAEO,IAAA,UAAU,CAAC,IAAc,EAAA;QAE7B,OAAO,CAAC,GAAG,CACP,oBAAoB,EACpB,uDAAuD,EACvD,IAAI,IAAI,EAAE,CACb,CAAC;KACL;AACJ;;ACxHM,MAAM,OAAO,GAAG;;ACKV,MAAA,YAAY,GAAiB,IAAI,gBAAgB,CAAC;AAC3D,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,cAAc,EAAE,CAAC,MAA0B,KAAI;QAC3C,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;KAC5D;AACD,IAAA,aAAa,EAAE,CAAC,CAAU,EAAE,IAAa,KAAI;QACzC,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACrC;AACJ,CAAA,EAAE;AACH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,MAAA,uBAAuB,GAAG,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE;AACpE,MAAA,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE;AAEhE,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,cAAc,CAAC;;;;"}
1
+ {"version":3,"file":"client.js","sources":["../../../../src/library/TaskerImpl.ts","../../../../src/library/IdleDetectorImpl.ts","../../../../../../node_modules/o11y_schema/sfcore_performance/navigation_timing.js","../../../../../../node_modules/o11y_schema/sfcore_performance/resource_timing.js","../../../../src/library/FuzzyMapper.ts","../../../../src/library/PerformanceObservability.ts","../../../../src/library/Tracing.ts","../../../../src/library/TimerOverride.ts","../../../../src/library/ActivityImpl.ts","../../../../src/library/ActivityNoOp.ts","../../../../src/library/DomEventHelpers.ts","../../../../src/library/BucketHistogramImpl.ts","../../../../src/library/UpCounterImpl.ts","../../../../src/library/ValueRecorderImpl.ts","../../../../src/library/SizeLimitedMap.ts","../../../../src/library/MetricsImpl.ts","../../../../src/library/MockObj.ts","../../../../src/library/InstrumentationImpl.ts","../../../../src/library/RootActivityHistoryImpl.ts","../../../../src/library/RootActivityImpl.ts","../../../../src/library/RootActivityNoOp.ts","../../../../src/library/AppInstrumentationImpl.ts","../../../../src/library/AutomaticClickTracker.ts","../../../../src/library/ReceiverConnector.ts","../../../../src/library/SenderConnector.ts","../../../../src/library/MetricsStore.ts","../../../../src/sender_collector/SenderCollector.ts","../../../../src/library/NextgenImpl.ts","../../../../src/index.ts","../../../../src/console-collector/ConsoleCollector.ts","../../../../src/version.ts","../../../../src/client.ts"],"sourcesContent":["import { TaskerMulti, TaskerSingle } from '../interfaces/IdleDetector';\n\nexport type TaskDoneNotifier = () => void;\n\nexport class TaskerImpl implements TaskerSingle, TaskerMulti {\n private _busyCount = 0;\n private _isOk = true; // Once an error occurs, make operations no-op\n\n get isBusy(): boolean {\n return this._isOk ? this._busyCount > 0 : undefined;\n }\n\n constructor(\n public readonly name: string,\n initialCount: number,\n private readonly _doneCallback: TaskDoneNotifier,\n private readonly _overDoneCallback: TaskDoneNotifier\n ) {\n this._busyCount = initialCount;\n }\n\n add(): void {\n if (this._isOk) {\n this._busyCount += 1;\n }\n }\n done(): void {\n if (this._isOk) {\n if (this._busyCount > 0) {\n this._busyCount -= 1;\n if (!this._busyCount) {\n this._doneCallback();\n }\n } else {\n this._isOk = false;\n this._overDoneCallback();\n }\n }\n }\n}\n","import { IdleDetector, IdleDetectorOptions, IdleDetectorReport } from '../interfaces';\nimport {\n ErrorListener,\n IdleDetectedListener,\n IsBusyChecker,\n ReportListener,\n TaskerMulti,\n TaskerSingle\n} from '../interfaces/IdleDetector';\nimport { TaskerImpl } from './TaskerImpl';\nimport { utility } from 'o11y/shared';\n\nconst defaultLogThreshold = 300;\n\ntype TaskReportEntry = {\n name: string;\n start: number;\n end: number;\n};\n\ntype PollableReportEntry = {\n name: string;\n count: number;\n};\n\nexport class IdleDetectorImpl implements IdleDetector {\n private readonly _taskers = new Map<TaskerImpl, TaskReportEntry>();\n private readonly _listeners = new Set<IdleDetectedListener>();\n private readonly _busyCheckers = new Map<IsBusyChecker, string>();\n private readonly _logThreshold: number = defaultLogThreshold;\n private readonly _endedTasks = new Array<TaskReportEntry>();\n private readonly _pollableReport = new Array<PollableReportEntry>();\n private _firstCallbackTime: number;\n private _timerCheckQueued: NodeJS.Timeout;\n private readonly _reportListener: ReportListener;\n private readonly _errorListener: ErrorListener;\n\n constructor(options?: IdleDetectorOptions) {\n if (\n utility.requireArgumentIfDefined(\n options?.logThreshold,\n 'options.logThreshold',\n 'number'\n )\n ) {\n this._logThreshold = options.logThreshold;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.reportListener,\n 'options.reportListener',\n 'function'\n )\n ) {\n this._reportListener = options.reportListener;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.errorListener,\n 'options.errorListener',\n 'function'\n )\n ) {\n this._errorListener = options.errorListener;\n }\n }\n\n requestIdleDetectedCallback(callback: IdleDetectedListener): void {\n utility.requireArgument(callback, 'callback', 'function');\n if (this._listeners.size === 0) {\n this._firstCallbackTime = utility.time().perfNow;\n }\n this._listeners.add(callback);\n this._checkIfLoaded();\n }\n\n private _reportTaskEnded(tasker: TaskerImpl): void {\n // Report only if we have any listeners\n if (this._listeners.size) {\n const snapshot = Object.assign({}, this._taskers.get(tasker));\n this._endedTasks.push(snapshot);\n }\n }\n\n declareNotifierTaskSingle(name: string): TaskerSingle {\n utility.requireArgument(name, 'name', 'string');\n const tasker = this._addTasker(name, 1);\n\n const retVal: TaskerSingle = {\n get isBusy() {\n return tasker.isBusy;\n },\n done: () => {\n tasker.done();\n this._taskers.delete(tasker);\n }\n };\n\n return retVal;\n }\n\n declareNotifierTaskMulti(name: string, existingBusyCount = 0): TaskerMulti {\n utility.requireArgument(name, 'name', 'string');\n if (existingBusyCount !== undefined) {\n utility.requireArgument(existingBusyCount, 'existingBusyCount', 'number');\n\n if (!Number.isInteger(existingBusyCount) || existingBusyCount < 0) {\n throw new Error('existingBusyCount accepts only non-negative integers');\n }\n }\n const tasker = this._addTasker(name, existingBusyCount);\n\n const retVal: TaskerMulti = {\n get isBusy() {\n return tasker.isBusy;\n },\n add: () => {\n if (!tasker.isBusy) {\n const meta = this._taskers.get(tasker);\n meta.start = utility.time().perfNow;\n meta.end = undefined;\n }\n tasker.add();\n },\n done: tasker.done.bind(tasker) // Note: don't delete multi tasker\n };\n return retVal;\n }\n\n declarePollableTaskMulti(name: string, isBusyChecker: IsBusyChecker): void {\n utility.requireArgument(name, 'name', 'string');\n utility.requireArgument(isBusyChecker, 'isBusyChecker', 'function');\n\n this._busyCheckers.set(isBusyChecker, name);\n }\n\n private _addTasker(name: string, existingBusyCount: number): TaskerImpl {\n const tasker = new TaskerImpl(\n name,\n existingBusyCount,\n () => {\n // Done callback\n this._taskers.get(tasker).end = utility.time().perfNow;\n this._reportTaskEnded(tasker);\n this._checkIfLoaded();\n },\n () => {\n // Overdone callback\n this._errorListener?.(`Overdone: ${tasker.name}`);\n utility.noProdThrow(`Tasker '${tasker.name}' is done too many times.`);\n }\n );\n this._taskers.set(tasker, {\n name,\n start: existingBusyCount > 0 ? utility.time().perfNow : undefined,\n end: undefined\n });\n return tasker;\n }\n\n private _areAllNotifiersIdle(): boolean {\n return !Array.from(this._taskers.keys()).some((t) => t.isBusy);\n }\n\n private _getFirstBusyPollable(): string {\n const entry = Array.from(this._busyCheckers).find((entry) => {\n const isBusyChecker = entry[0];\n const name = entry[1];\n try {\n return isBusyChecker();\n } catch (e) {\n this._errorListener?.(e, `BusyChecker ${name}`);\n utility.noProdThrow(e);\n return false; // Not busy\n }\n });\n\n return entry ? entry[1] : undefined;\n }\n\n private _checkIfLoaded(): void {\n if (!this._listeners.size) {\n // bail out early. We don't have any callbacks queued\n return;\n }\n\n // We restart the idle timer check logic whenever we get an external\n // trigger that a resource was loaded since that would imply that more\n // work could be queued up and we want to be aware of that\n if (this._timerCheckQueued) {\n clearTimeout(this._timerCheckQueued);\n }\n\n if (this._areAllNotifiersIdle()) {\n // Enqueue two RAF to make sure nothing got queued in this js cycle\n // note the use of double setTimeout. We want our setTimeout to queue up after\n // any set timeouts queued within micro tasks that may run after processing this\n // xhr response.\n // Here's a sample timeline\n // .....[ Single Event Loop ].....................................\n // .....[XHR callback][checkIfLoaded][microtasks]-[1st setTimeout]....[2nd setTimeout]\n // ^\n // queue settimeout at the end of event loop --->|\n this._timerCheckQueued = setTimeout(() => {\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 40);\n }, 0);\n }\n }\n\n private _doubleCheck(): void {\n this._timerCheckQueued = undefined;\n\n if (this._areAllNotifiersIdle()) {\n const pollableName: string = this._getFirstBusyPollable();\n if (pollableName !== undefined) {\n // we'll have to keep polling until polled operations finish\n this._addToPollableReport(pollableName);\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 15);\n } else {\n // OK!! We are certified idle.\n const maxDuration = utility.time().perfNow - this._firstCallbackTime;\n\n // Take a snapshot of internal variables so that we don't get confused\n // if tasks are created or listeners or worse, get into an infinite loop\n // if idle is requested\n const listeners = Array.from(this._listeners.values());\n this._listeners.clear();\n\n this._firstCallbackTime = undefined;\n const endedTasks = this._endedTasks.splice(0);\n const pollableReport = this._pollableReport.splice(0);\n\n this._notify(listeners, maxDuration, endedTasks, pollableReport);\n }\n }\n }\n\n private _addToPollableReport(name: string): void {\n const lastEntry: PollableReportEntry = this._pollableReport.length\n ? this._pollableReport[this._pollableReport.length - 1]\n : undefined;\n\n if (lastEntry?.name === name) {\n lastEntry.count += 1;\n } else {\n this._pollableReport.push({\n name,\n count: 1\n });\n }\n }\n\n private _notify(\n listeners: IdleDetectedListener[],\n maxDuration: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): void {\n if (maxDuration >= this._logThreshold && this._reportListener) {\n const logData: IdleDetectorReport = this._getReport(\n maxDuration,\n listeners.length,\n taskReport,\n pollableReport\n );\n this._reportListener(logData);\n }\n listeners.reverse();\n\n const tsNow = utility.time().tsNow;\n for (const [index, listener] of listeners.entries()) {\n try {\n listener(tsNow);\n } catch (e) {\n this._errorListener?.(e, `Listener #${listeners.length - 1 - index}`);\n utility.noProdThrow(e);\n }\n }\n }\n\n getReport(): IdleDetectorReport {\n const perfNow = utility.time().perfNow;\n const maxDuration =\n this._firstCallbackTime > 0 ? perfNow - this._firstCallbackTime : undefined;\n\n const onGoingTasks: Array<TaskReportEntry> = Array.from(this._taskers.entries())\n .filter((e) => e[0].isBusy)\n .map((e) => ({\n name: e[1].name,\n start: e[1].start,\n end: perfNow\n }));\n return this._getReport(\n maxDuration,\n this._listeners.size,\n this._endedTasks.concat(onGoingTasks),\n this._pollableReport\n );\n }\n\n private _getReport(\n maxDuration: number,\n listenerCount: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): IdleDetectorReport {\n const sortedTaskers = taskReport\n .map((t) => ({\n name: t.name,\n duration: t.end - t.start\n }))\n .sort((a, b) => b.duration - a.duration);\n return {\n logThreshold: this._logThreshold,\n maxDuration,\n listenerCount,\n pollableCount: this._busyCheckers.size,\n busyTasks: sortedTaskers.map((t) => t.name),\n busyDurations: sortedTaskers.map((t) => t.duration),\n pollables: pollableReport.map((p) => p.name),\n pollCounts: pollableReport.map((p) => p.count)\n };\n }\n}\n","export const navigation_timing={namespace:\"sfcore.performance\",name:\"NavigationTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"NavigationTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\n\"fields\":{\"redirectCount\":{\"id\":37,\"type\":\"uint32\"},\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"unloadEventEnd\":{\"id\":40,\"type\":\"double\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"unloadEventStart\":{\"id\":39,\"type\":\"double\"},\"domContentLoadedEventStart\":{\"id\":32,\"type\":\"double\"},\"type\":{\"id\":38,\"type\":\"string\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\"id\":18,\"type\":\"double\"},\n\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\"id\":24,\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"domContentLoadedEventEnd\":{\"id\":33,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\"id\":27,\"type\":\"uint32\"},\n\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domInteractive\":{\"id\":34,\"type\":\"double\"},\"domComplete\":{\"id\":31,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\"type\":\"double\"},\"responseStatus\":{\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\n\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"loadEventStart\":{\"id\":35,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\"type\":\"string\"},\"loadEventEnd\":{\"id\":36,\"type\":\"double\"}}}}}}}}}};","export const resource_timing={namespace:\"sfcore.performance\",name:\"ResourceTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"ResourceTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\n\"fields\":{\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\"id\":18,\"type\":\"double\"},\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\"id\":24,\n\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\"id\":27,\"type\":\"uint32\"},\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\n\"type\":\"double\"},\"responseStatus\":{\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\"type\":\"string\"}}}}}}}}}};","import { utility } from 'o11y/shared';\n\ntype MapValueEntry<T> = {\n fuzzyKey: number;\n value: T;\n};\n\ntype MapValues<T> = Array<MapValueEntry<T>>;\n\n// A match is made if the strict key matches and the fuzzy key value is within the range.\n// If there are multiple such matches, the one with the smallest delta is returned.\nexport class FuzzyMapper<T> {\n private readonly _map: Map<string, MapValues<T>> = new Map();\n\n constructor(private readonly _fuzzyKeyRange: number) {\n utility.requireArgument(_fuzzyKeyRange, '_fuzzyKeyRange', 'number');\n }\n\n add(key: string, fuzzyKey: number, value: T): void {\n const mapValue = this._map.get(key);\n if (mapValue) {\n mapValue.push({ fuzzyKey, value });\n } else {\n this._map.set(key, [{ fuzzyKey, value }]);\n }\n }\n pop(key: string, fuzzyKey: number): T {\n const mapValues = this._map.get(key);\n if (mapValues?.length >= 1) {\n let minDelta = Number.POSITIVE_INFINITY;\n let minIndex = -1;\n for (let index = 0; index < mapValues.length; index++) {\n const { fuzzyKey: curFuzzyKey } = mapValues[index];\n const curDelta = Math.abs(curFuzzyKey - fuzzyKey);\n if (curDelta <= this._fuzzyKeyRange && curDelta < minDelta) {\n minDelta = curDelta;\n minIndex = index;\n }\n // keep looking for a better match\n }\n if (minIndex >= 0) {\n const { value } = mapValues.splice(minIndex, 1)[0];\n if (mapValues.length === 0) {\n this._map.delete(key);\n }\n return value;\n }\n }\n return undefined;\n }\n clear(): void {\n this._map.clear();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { resourceTimingSchema, navigationTimingSchema } from 'o11y_schema/sfcore_performance';\nimport {\n ActivityStartApiOptions,\n ActivityStopOptions,\n Instrumentation,\n Schema\n} from '../interfaces';\nimport {\n NavigationTiming,\n NavigationTimingOnly,\n ResourceTiming\n} from '../types/TypeDefinitions-Private';\nimport { FuzzyMapper } from './FuzzyMapper';\n\nexport const enum LogLevel {\n Basic,\n Full\n}\n\nexport type RequestMetadata = {\n requestId?: string;\n activityDuration?: number;\n activityId?: string;\n errorCount?: number;\n};\n\nconst basicInitiatorTypes = ['fetch', 'xmlhttprequest'];\n\nexport class PerformanceObservability {\n private readonly _hasPerf: boolean;\n private readonly _boundObserverCallback: (list: PerformanceObserverEntryList) => void;\n private readonly _fuzzyMapper: FuzzyMapper<RequestMetadata>;\n private readonly _logLevel: LogLevel;\n private _resourceObserver: PerformanceObserver;\n private _navigationObserver: PerformanceObserver;\n private _isStarted = false;\n private _navTiming: PerformanceNavigationTiming;\n\n constructor(\n private readonly _instr: Instrumentation,\n fuzzyMapRange: number,\n private readonly _skipUrls: (string | RegExp)[],\n private readonly _logPerformanceActivityName?: string,\n logLevel?: string\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(fuzzyMapRange, 'fuzzyMapRange', 'number');\n utility.requireArgumentIfDefined(_skipUrls, '_skipUrls', Array);\n utility.requireArgumentIfDefined(\n _logPerformanceActivityName,\n '_logPerformanceActivityName',\n 'string'\n );\n utility.requireArgumentIfDefined(logLevel, 'logLevel', 'string');\n\n this._hasPerf =\n typeof performance !== 'undefined' && typeof PerformanceObserver === 'function';\n\n this._boundObserverCallback = this._logPerformanceEntries.bind(this);\n\n if (!logLevel || logLevel.toLowerCase() === 'full') {\n this._logLevel = LogLevel.Full;\n } else if (logLevel?.toLowerCase() === 'basic') {\n this._logLevel = LogLevel.Basic;\n } else {\n throw new Error(`Invalid log level: ${logLevel}`);\n }\n\n this._fuzzyMapper = new FuzzyMapper(fuzzyMapRange);\n }\n\n get isStarted(): boolean {\n return this._isStarted;\n }\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n start(): void {\n if (!this._hasPerf) {\n return;\n }\n if (!this._isStarted) {\n this._isStarted = true;\n this._navigationObserver = new PerformanceObserver(this._boundObserverCallback);\n this._navigationObserver.observe({ type: 'navigation', buffered: true });\n this._resourceObserver = new PerformanceObserver(this._boundObserverCallback);\n this._resourceObserver.observe({ type: 'resource', buffered: true });\n }\n }\n\n stop(): void {\n if (this._resourceObserver) {\n this._resourceObserver.disconnect();\n this._resourceObserver = undefined;\n }\n if (this._navigationObserver) {\n this._navigationObserver.disconnect();\n this._navigationObserver = undefined;\n }\n this._fuzzyMapper.clear();\n this._isStarted = false;\n }\n\n // The caller must make sure that url is absolute for exact string matching\n // as the performance API we call later uses absolute URLs.\n addEntry(absoluteUrl: string, perfTime: number, data: RequestMetadata): void {\n this._fuzzyMapper.add(absoluteUrl, perfTime, data);\n }\n\n private _resourceEntryToResourceTiming(\n prt: PerformanceResourceTiming\n ): Partial<ResourceTiming> {\n const rt: Omit<\n ResourceTiming,\n 'reqBatchCount' | 'reqActionNames' | 'srvReqId' | 'xhrDelay'\n > = {\n name: prt.name,\n startTime: prt.startTime,\n duration: prt.duration,\n initiatorType: prt.initiatorType,\n nextHopProtocol: prt.nextHopProtocol,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus\n renderBlockingStatus: prt.renderBlockingStatus,\n workerStart: prt.workerStart,\n redirectStart: prt.redirectStart,\n redirectEnd: prt.redirectEnd,\n fetchStart: prt.fetchStart,\n domainLookupStart: prt.domainLookupStart,\n domainLookupEnd: prt.domainLookupEnd,\n connectStart: prt.connectStart,\n secureConnectionStart: prt.secureConnectionStart,\n connectEnd: prt.connectEnd,\n requestStart: prt.requestStart,\n responseStart: prt.responseStart,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/firstInterimResponseStart\n firstInterimResponseStart: prt.firstInterimResponseStart,\n responseEnd: prt.responseEnd,\n transferSize: prt.transferSize,\n encodedBodySize: prt.encodedBodySize,\n decodedBodySize: prt.decodedBodySize,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus\n responseStatus: prt.responseStatus\n };\n\n const sts: ReadonlyArray<PerformanceServerTiming> = prt.serverTiming;\n if (Array.isArray(sts)) {\n rt.dbDuration = sts.find((st) => st.name === 'db')?.duration;\n rt.srvDuration = sts.find((st) => st.name === 'Total')?.duration;\n // TODO: nr.isCdnCached\n }\n\n return rt;\n }\n\n private _shouldInclude(entry: PerformanceResourceTiming): boolean {\n const isFiltered = this._skipUrls?.some((skipUrl) => {\n if (skipUrl instanceof RegExp) {\n return skipUrl.test(entry.name);\n } else {\n return entry.name === skipUrl;\n }\n });\n\n if (isFiltered) {\n return false;\n }\n\n if (this._logLevel === LogLevel.Full) {\n return true;\n }\n return (\n basicInitiatorTypes.indexOf(entry.initiatorType) >= 0 ||\n entry.entryType === 'navigation'\n );\n }\n\n private _logActivity(\n schema: Schema,\n payload: Partial<ResourceTiming>,\n activityId?: string,\n errorCount?: number\n ): void {\n const startOptions: ActivityStartApiOptions = {\n id: activityId\n };\n const stopOptions: ActivityStopOptions = {\n perfStartOverride: payload.startTime,\n perfStopOverride: payload.startTime + payload.duration,\n errorCount\n };\n\n this._instr\n .startActivity(this._logPerformanceActivityName, startOptions)\n .stop(schema, payload, stopOptions);\n }\n\n private _logPerformanceEntries(list: PerformanceObserverEntryList): void {\n for (const entry of list.getEntriesByType('navigation')) {\n const nt: PerformanceNavigationTiming = entry as PerformanceNavigationTiming;\n\n if (this._shouldInclude(nt)) {\n if (nt !== this._navTiming) {\n this._navTiming = nt;\n\n const payload: Partial<NavigationTiming> =\n this._resourceEntryToResourceTiming(nt);\n\n const navOnly: NavigationTimingOnly = {\n domComplete: nt.domComplete,\n domContentLoadedEventStart: nt.domContentLoadedEventStart,\n domContentLoadedEventEnd: nt.domContentLoadedEventEnd,\n domInteractive: nt.domInteractive,\n loadEventStart: nt.loadEventStart,\n loadEventEnd: nt.loadEventEnd,\n redirectCount: nt.redirectCount,\n type: nt.type,\n unloadEventStart: nt.unloadEventStart,\n unloadEventEnd: nt.unloadEventEnd\n };\n\n this._logActivity(navigationTimingSchema, Object.assign(payload, navOnly));\n }\n break; // Only log the first navigation entry (which there should only be one of)\n }\n }\n\n for (const entry of list.getEntriesByType('resource')) {\n const rt: PerformanceResourceTiming = entry as PerformanceResourceTiming;\n\n // Always pop the request info, even if we don't log it, so we don't leak memory\n const requestInfo: RequestMetadata = this._fuzzyMapper.pop(rt.name, rt.startTime);\n\n if (this._shouldInclude(rt)) {\n const payload: Partial<ResourceTiming> = this._resourceEntryToResourceTiming(rt);\n\n Object.assign(payload, {\n srvReqId: requestInfo?.requestId,\n xhrDelay: requestInfo ? requestInfo.activityDuration - rt.duration : undefined\n });\n\n this._logActivity(\n resourceTimingSchema,\n payload,\n requestInfo?.activityId,\n requestInfo?.errorCount\n );\n }\n }\n }\n}\n","import { TraceHeaders, utility } from 'o11y/shared';\nimport { networkSchema } from 'o11y_schema/sf_instrumentation';\nimport {\n IdleDetector,\n Instrumentation,\n TaskerMulti,\n TracingHeadersOptions,\n NetworkInstrumentationOptions,\n Activity\n} from '../interfaces';\nimport { PerformanceObservability } from './PerformanceObservability';\n\ntype FetchType = (resource: RequestInfo | URL, options?: RequestInit) => Promise<Response>;\n\ntype O11yFetchOptions = {\n skipInstr?: boolean;\n};\n\ntype O11yFetchType = (\n resource: RequestInfo | URL,\n options?: RequestInit & { o11y?: O11yFetchOptions }\n) => Promise<Response>;\n\ntype XhrType = typeof XMLHttpRequest;\n\ntype XhrOpenType = (\n method: string,\n url: string | URL,\n async?: boolean,\n username?: string | null,\n password?: string | null\n) => void;\n\ntype XhrSetRequestHeaderType = (name: string, value: string) => void;\n\ntype XhrSendType = (body?: Document | XMLHttpRequestBodyInit | null) => void;\n\ntype O11yInfo = {\n activity?: Activity;\n method?: string;\n url?: string;\n absoluteUrl?: string;\n sendTime?: number;\n requestId?: string;\n};\ninterface O11yXhr extends XMLHttpRequest {\n _o11y: O11yInfo;\n}\n\nconst defaultTraceIdLengthW3 = 32; // 32 Characters = 128 bits\nconst defaultTraceIdLengthB3 = 16; // 16 Characters = 64 bits\nconst defaultSpanIdLength = 16; // 16 Characters = 64 bits\n\n// Headers for W3 tracing (https://www.w3.org/TR/trace-context/#traceparent-header)\nconst headerTraceParent = 'traceparent';\n\n// Headers for B3 tracing (https://github.com/openzipkin/b3-propagation)\nconst headerB3 = 'b3';\nconst headerTraceId = 'X-B3-TraceId';\nconst headerSpanId = 'X-B3-SpanId';\nconst headerSampled = 'X-B3-Sampled';\nconst headerParentSpanId = 'X-B3-ParentSpanId';\nconst headerRequestId = 'X-SFDC-Request-Id'; // This is a custom header for Salesforce\nconst defaultActivityNameForFetch = 'fetch';\nconst defaultActivityNameForXhrSend = 'xhr_send';\nconst defaultTimingActivityName = 'perf-timing';\nconst defaultFuzzyMapRange = 50; // msecs\n\nexport class Tracing {\n private static _global: typeof globalThis = utility.getGlobal();\n private static _originalFetch: FetchType;\n private static _originalXhr: XhrType;\n private static _originalXhrOpen: XhrOpenType;\n private static _originalXhrSetRequestHeader: XhrSetRequestHeaderType;\n private static _originalXhrSend: XhrSendType;\n private static _isNetworkInstrumentationEnabled = false;\n private static _reqIndex = 0;\n private static _performanceObservability: PerformanceObservability;\n\n constructor(\n private readonly _instr: Instrumentation,\n private readonly _idleDetector: IdleDetector\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(_idleDetector, '_idleDetector', 'object');\n }\n\n private static _getB3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n parentSpanId?: string\n ): string {\n // b3={TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}\n // Note: last two fields are optional\n\n let b3 = `${traceId}-${spanId}`;\n\n if (isSampled !== undefined || parentSpanId !== undefined) {\n b3 += isSampled ? '-1' : '-0';\n if (parentSpanId !== undefined) {\n b3 += `-${parentSpanId}`;\n }\n }\n return b3;\n }\n\n private static _getW3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled: boolean\n ): string {\n // traceparent={version}-{trace-id}-{parent-id}-{trace-flags}\n // \"in some tracing systems, parent-id is known as the span-id, where a span is the execution of a client request\"\n return `00-${traceId}-${spanId}-${isSampled ? '01' : '00'}`;\n }\n\n private static _conformTextAsId(text: string, numChars: number): string {\n // First validate\n text = text.toLowerCase();\n const len: number = text.length;\n for (let i = 0; i < len; i += 1) {\n const c = text[i];\n if (!(c >= 'a' && c <= 'f') && !(c >= '0' && c <= '9')) {\n throw new Error(`The text '${text}' has an invalid character at index #${i}`);\n }\n }\n\n if (len > numChars) {\n // Use the right-most characters per spec\n return text.substr(len - numChars);\n }\n if (len < numChars) {\n // Pad left with 0s per spec\n return text.padStart(numChars, '0');\n }\n return text;\n }\n\n public static getHeaders(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n options?: TracingHeadersOptions\n ): TraceHeaders {\n utility.requireArgument(traceId, 'traceId', 'string');\n utility.requireArgument(spanId, 'spanId', 'string');\n\n const useB3Headers: boolean = options?.useB3Headers;\n\n traceId = this._conformTextAsId(\n traceId,\n options?.traceIdEffectiveLength !== undefined\n ? options.traceIdEffectiveLength\n : useB3Headers\n ? defaultTraceIdLengthB3\n : defaultTraceIdLengthW3\n );\n spanId = this._conformTextAsId(spanId, defaultSpanIdLength);\n\n const parentSpanId =\n (options &&\n options.parentSpanId !== undefined &&\n this._conformTextAsId(options.parentSpanId, defaultSpanIdLength)) ||\n undefined;\n\n const headers: TraceHeaders = {};\n\n if (useB3Headers) {\n // By default, use non-compact\n const isCompact: boolean = options?.useCompactHeader;\n if (isCompact) {\n headers[headerB3] = this._getB3CompactFormat(\n traceId,\n spanId,\n isSampled,\n parentSpanId\n );\n } else {\n headers[headerTraceId] = traceId;\n headers[headerSpanId] = spanId;\n if (parentSpanId !== undefined) {\n headers[headerParentSpanId] = parentSpanId;\n }\n if (isSampled !== undefined) {\n headers[headerSampled] = isSampled ? '1' : '0';\n }\n }\n } else {\n headers[headerTraceParent] = this._getW3CompactFormat(traceId, spanId, isSampled);\n }\n\n return headers;\n }\n\n private _disableNetworkInstrumentation(): void {\n if (Tracing._isNetworkInstrumentationEnabled) {\n if (Tracing._originalFetch) {\n Tracing._global.fetch = Tracing._originalFetch;\n Tracing._originalFetch = undefined;\n }\n if (Tracing._originalXhr) {\n Tracing._global.XMLHttpRequest = Tracing._originalXhr;\n Tracing._originalXhr = undefined;\n }\n if (Tracing._originalXhrOpen) {\n Tracing._global.XMLHttpRequest.prototype.open = Tracing._originalXhrOpen;\n Tracing._originalXhrOpen = undefined;\n }\n if (Tracing._originalXhrSetRequestHeader) {\n Tracing._global.XMLHttpRequest.prototype.setRequestHeader =\n Tracing._originalXhrSetRequestHeader;\n Tracing._originalXhrSetRequestHeader = undefined;\n }\n if (Tracing._originalXhrSend) {\n Tracing._global.XMLHttpRequest.prototype.send = Tracing._originalXhrSend;\n Tracing._originalXhrSend = undefined;\n }\n if (Tracing._performanceObservability) {\n Tracing._performanceObservability.stop();\n Tracing._performanceObservability = undefined;\n }\n Tracing._isNetworkInstrumentationEnabled = false;\n }\n }\n\n private _enableNetworkInstrumentation(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti,\n logPerformance: boolean | string,\n logPerformanceActivityName: string,\n skipUrls: (string | RegExp)[],\n fuzzyMapRange: number\n ): void {\n if (typeof Tracing._global.fetch === 'function') {\n this._overrideFetch(instr, logErrors, activityName, useTracing, options, tasker);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (typeof Tracing._global.XMLHttpRequest === 'function') {\n this._overrideXhr(instr, logErrors, activityName, useTracing, options, tasker);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (logPerformance) {\n Tracing._performanceObservability = new PerformanceObservability(\n instr,\n fuzzyMapRange,\n skipUrls,\n logPerformanceActivityName,\n logPerformance === true ? 'full' : logPerformance\n );\n Tracing._performanceObservability.start();\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n }\n\n private static _getTraceHeaders(\n activity: Activity | undefined,\n options: TracingHeadersOptions | undefined,\n method: string,\n url: string\n ): TraceHeaders {\n let traceHeaders: TraceHeaders = activity?.getTraceHeaders(options) || {};\n if (typeof options?.headerProcessor === 'function') {\n traceHeaders = options.headerProcessor({\n method,\n url,\n defaultHeaders: traceHeaders\n });\n } else if (typeof window === 'object') {\n // By default, only send to the original domain on browsers\n let newUrl;\n try {\n newUrl = new URL(url); // no base argument - will throw on non-absolute URLs\n } catch {\n // Relative URL.\n }\n // Check host (not hostname) to ensure port numbers match too.\n if (newUrl && newUrl.host !== window.location.host) {\n traceHeaders = undefined;\n }\n }\n return traceHeaders || {};\n }\n\n private static _extractHeader(\n headerName: string,\n input: RequestInfo | URL,\n init?: RequestInit\n ): string {\n if (init?.headers instanceof Headers) {\n return init.headers.get(headerName);\n }\n if (Array.isArray(init?.headers)) {\n const header = init.headers.find((entry) => entry[0] === headerName);\n return header?.[1];\n }\n if (typeof init?.headers === 'object') {\n return init.headers[headerName];\n }\n if (input instanceof Request) {\n return input.headers.get(headerName);\n }\n return undefined;\n }\n\n private _overrideFetch(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n tracingHeadersOptions: TracingHeadersOptions,\n tasker: TaskerMulti\n ): void {\n Tracing._originalFetch = Tracing._global.fetch;\n const o11yFetch: O11yFetchType = async (resource, options, ...restArgs) => {\n // Note: We can't make any assumptions about the arguments before we pass them to the\n // original fetch. Invalid arguments should not cause us to throw, and be\n // passed to the original fetch as-is.\n let activity: Activity;\n let url: string;\n let absoluteUrl: string;\n let method: string;\n let fetchTime: number;\n try {\n tasker?.add();\n method = options?.method;\n const ofo: O11yFetchOptions = options?.o11y;\n\n if (!ofo?.skipInstr) {\n activity = instr.startActivity(activityName || defaultActivityNameForFetch);\n } else {\n Tracing._reqIndex += 1;\n try {\n // Best effort -- we can't modify other types of resources\n if (resource instanceof URL) {\n resource.searchParams.append('o11y', Tracing._reqIndex.toString());\n } else if (typeof resource === 'string') {\n const urlObj = new URL(resource);\n const kv = `o11y=${Tracing._reqIndex}`;\n urlObj.search += urlObj.search.startsWith('?') ? `&${kv}` : kv;\n resource = urlObj.toString();\n }\n } catch {}\n }\n delete options?.o11y;\n\n url = resource?.toString();\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n\n if (useTracing) {\n if (resource instanceof Request) {\n if (!method) {\n // the method specifed in options overrides the method in the resource\n method = resource.method;\n }\n url = resource.url;\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n }\n\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n tracingHeadersOptions,\n method,\n absoluteUrl\n );\n\n if (\n !this._applyTraceHeaders(resource, options, traceHeaders) &&\n options === undefined\n ) {\n options = {\n headers: traceHeaders\n };\n }\n }\n\n fetchTime = utility.perfNow();\n return await Tracing._originalFetch.call(\n Tracing._global,\n resource,\n options,\n ...restArgs\n );\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n throw ex;\n } finally {\n try {\n const activityDuration = Tracing._endActivity(activity, url, method);\n if (Tracing._performanceObservability?.isStarted) {\n const requestId = Tracing._extractHeader(\n headerRequestId,\n resource,\n options\n );\n\n Tracing._performanceObservability.addEntry(absoluteUrl, fetchTime, {\n requestId,\n activityDuration,\n activityId: activity?.getId(),\n errorCount: activity?.getErrorCount()\n });\n }\n } finally {\n tasker?.done();\n }\n }\n };\n Tracing._global.fetch = o11yFetch;\n }\n\n private static _endActivity(activity: Activity, url: string, method: string): number {\n if (activity) {\n // We will not log the activity if performance observability is started\n // because we are using the ID of the wrapper activity in the performance observability\n // activity and don't want duplication. Any errors generated for the first activity\n // will be linked to the other one.\n if (Tracing._performanceObservability?.isStarted) {\n activity.discard();\n } else {\n activity.stop(networkSchema, {\n mtd: method,\n url\n });\n }\n return activity.getStopPerfTime() - activity.getStartPerfTime();\n }\n return undefined;\n }\n\n private _overrideXhr(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti\n ): void {\n Tracing._originalXhr = Tracing._global.XMLHttpRequest;\n Tracing._originalXhrOpen = Tracing._originalXhr.prototype.open;\n Tracing._originalXhrSetRequestHeader = Tracing._originalXhr.prototype.setRequestHeader;\n Tracing._originalXhrSend = Tracing._originalXhr.prototype.send;\n\n function postProcess(xhr: O11yXhr, failedAtInit?: boolean): void {\n if (xhr._o11y) {\n const activity: Activity = xhr._o11y.activity;\n const activityDuration = Tracing._endActivity(\n activity,\n xhr._o11y.url,\n xhr._o11y.method\n );\n if (!failedAtInit && Tracing._performanceObservability?.isStarted) {\n Tracing._performanceObservability.addEntry(\n xhr._o11y.absoluteUrl,\n xhr._o11y.sendTime,\n {\n requestId: xhr._o11y.requestId,\n activityDuration,\n activityId: activity?.getId(),\n errorCount: activity?.getErrorCount()\n }\n );\n }\n }\n }\n\n Tracing._originalXhr.prototype.open = function (\n this: O11yXhr,\n method: string,\n url: string | URL,\n async?: boolean,\n username?: string | null,\n password?: string | null\n ) {\n this._o11y = {\n method,\n url: url?.toString()\n };\n\n this._o11y.absoluteUrl = utility.tryGetAbsoluteUrl(this._o11y.url);\n Tracing._originalXhrOpen.call(this, method, url, async, username, password);\n };\n\n Tracing._originalXhr.prototype.setRequestHeader = function (\n this: O11yXhr,\n name: string,\n value: string\n ) {\n if (name?.toLowerCase?.() === headerRequestId.toLowerCase()) {\n this._o11y.requestId = value;\n }\n Tracing._originalXhrSetRequestHeader.call(this, name, value);\n };\n\n Tracing._originalXhr.prototype.send = function (this: O11yXhr, ...args) {\n let activity: Activity;\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr: O11yXhr = this;\n try {\n tasker?.add();\n xhr._o11y = xhr._o11y || {};\n xhr._o11y.activity = activity = instr.startActivity(\n activityName || defaultActivityNameForXhrSend\n );\n if (useTracing) {\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n options,\n xhr._o11y.method,\n xhr._o11y.absoluteUrl\n );\n\n Object.entries(traceHeaders).forEach((entry) => {\n xhr.setRequestHeader(entry[0], entry[1]);\n });\n }\n xhr._o11y.sendTime = utility.perfNow();\n Tracing._originalXhrSend.call(this, ...args);\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n postProcess(xhr, true);\n tasker?.done();\n throw ex;\n }\n };\n\n const xhrProxy = new Proxy<XhrType>(Tracing._originalXhr, {\n construct(target: XhrType) {\n const newXhr = new target() as O11yXhr;\n\n // Be the first in the event chain\n newXhr.addEventListener('load', () => {\n postProcess(newXhr);\n tasker?.done();\n });\n newXhr.addEventListener(\n 'error',\n (__err: ProgressEvent<XMLHttpRequestEventTarget>) => {\n try {\n const error = new Error('XHR Network-Level Error');\n if (logErrors) {\n const activity = newXhr._o11y?.activity;\n if (activity) {\n activity.error(error);\n } else {\n instr.error(error);\n }\n }\n postProcess(newXhr);\n } finally {\n tasker?.done();\n }\n }\n );\n newXhr.addEventListener('abort', () => {\n newXhr._o11y?.activity?.discard();\n tasker?.done();\n });\n return newXhr;\n }\n });\n\n Tracing._global.XMLHttpRequest = xhrProxy;\n }\n\n networkInstrumentation(options: boolean | NetworkInstrumentationOptions): void {\n utility.requireArgument(options, 'options', ['boolean', 'object']);\n\n // First disable it if necessary, so we can use the new options if it was already enabled\n this._disableNetworkInstrumentation();\n if (options) {\n const tracingOptions: NetworkInstrumentationOptions =\n typeof options === 'object' ? options : {};\n\n let tasker: TaskerMulti = undefined;\n if (utility.definedValueOrDefault(tracingOptions.useTasker, true)) {\n tasker = this._idleDetector?.declareNotifierTaskMulti('o11y network');\n }\n\n this._enableNetworkInstrumentation(\n utility.definedValueOrDefault(tracingOptions.instrumentation, this._instr),\n utility.definedValueOrDefault(tracingOptions.logErrors, true),\n tracingOptions.activityName,\n utility.definedValueOrDefault(tracingOptions.useTracing, true),\n tracingOptions.tracingHeadersOptions,\n tasker,\n utility.definedValueOrDefault(tracingOptions.logPerformance, true),\n utility.definedValueOrDefault(\n tracingOptions.logPerformanceActivityName,\n defaultTimingActivityName\n ),\n utility.definedValueOrDefault(tracingOptions.skipUrls, []),\n utility.definedValueOrDefault(tracingOptions.fuzzyMapRange, defaultFuzzyMapRange)\n );\n }\n }\n\n resetRequestCounter(): void {\n Tracing._reqIndex = 0;\n }\n\n // returns true if the headers were applied to either the options or the resource.\n private _applyTraceHeaders(\n resource: RequestInfo | URL,\n options: RequestInit,\n traceHeaders: TraceHeaders\n ): boolean {\n if (options?.headers !== undefined) {\n // if headers are defined in the options,\n // they trump any headers defined in the resource\n\n if (options.headers instanceof Headers && typeof options.headers.set === 'function') {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in\n // lib.dom.iterable.d.ts, which doesn't include the set method.\n (options.headers as Headers).set(key, value);\n });\n return true;\n }\n if (Array.isArray(options.headers)) {\n Object.entries(traceHeaders).forEach((entry) => {\n (options.headers as [string, string][]).push(entry);\n });\n return true;\n }\n if (typeof options.headers === 'object') {\n options.headers = Object.assign(options.headers, traceHeaders);\n return true;\n }\n } else if (resource instanceof Request && resource.headers instanceof Headers) {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in lib.dom.d.ts\n resource.headers.set(key, value);\n });\n return true;\n } else if (options) {\n options.headers = Object.assign({}, traceHeaders);\n return true;\n }\n return false;\n }\n}\n","export enum TimerOverride {\n none,\n start,\n stop,\n both\n}\n","import { PublicSafety, SchematizedData, TraceHeaders, utility } from 'o11y/shared';\n\nimport {\n Activity,\n ActivityDetail,\n ActivityStopOptions,\n Schema,\n TracingHeadersOptions\n} from '../interfaces';\nimport { Tracing } from './Tracing';\nimport { TimerOverride } from './TimerOverride';\nexport const timedout = 'timedout';\nexport const terminated = 'terminated';\nexport const discarded = 'discarded';\n\nconst stopReason = {\n timedout,\n terminated,\n discarded\n};\n\nexport type onActivityStop = (detail: ActivityDetail) => void;\nexport type onActivityError = (error: unknown, detail: ActivityDetail) => void;\n\nexport class ActivityImpl implements Activity {\n protected readonly _id: string;\n private readonly _safety: PublicSafety;\n private readonly _usePerf: boolean;\n protected static _count = 0;\n private readonly _perfId: string;\n private readonly _perfName: string;\n private _startTimestamp: number;\n private _startPerfTime: number;\n private _stopPerfTime: number;\n private _stopReason: string;\n private _timer: NodeJS.Timer;\n private _errorCount = 0;\n private _timerOverridden: TimerOverride = TimerOverride.none;\n\n constructor(\n protected readonly _name: string,\n protected readonly _rootId: string,\n private readonly _onStopped: onActivityStop,\n private readonly _onError: onActivityError,\n timeout?: number,\n id?: string,\n protected readonly _isSampled?: boolean,\n _startPerfTime?: number,\n protected readonly _noRerooting?: boolean\n ) {\n const { tsNow, perfNow } = utility.time();\n\n ActivityImpl._count += 1;\n this._id = id || utility.generateUniqueId();\n\n this._usePerf =\n typeof performance !== 'undefined' &&\n typeof performance.mark === 'function' &&\n typeof performance.measure === 'function';\n if (this._usePerf) {\n this._perfName = `${this._name}__${ActivityImpl._count}`;\n this._perfId = `${this._name}__${this.id}`;\n try {\n performance.mark(this._perfId);\n } catch {\n this._usePerf = false;\n }\n }\n\n this._startTimestamp = tsNow;\n this._startPerfTime = perfNow;\n this._overrideTimer(_startPerfTime);\n\n if (timeout > 0) {\n this._timer = setTimeout(() => {\n this._stopReason = this._stopReason || stopReason.timedout;\n this.stop();\n }, timeout);\n }\n this._safety = new PublicSafety();\n }\n\n get id(): string {\n return this._id;\n }\n\n getId(): string {\n return this.id;\n }\n\n getRootId(): string {\n return this._rootId;\n }\n\n get stopReason(): string {\n return this._stopReason;\n }\n\n error(error: unknown, userSchemaOrText?: Schema | string, userData?: SchematizedData): void {\n this._safety.tryCatch(() => {\n this._errorCount += 1;\n if (typeof error === 'string') {\n error = new Error(error);\n }\n this._onError(error, this._getDetail(userSchemaOrText, userData));\n });\n }\n\n stop(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n\n if (options) {\n const perfStart: number = options.perfStartOverride;\n const isStartTimeDefined = utility.requireArgumentIfDefined(\n perfStart,\n 'options.perfStartOverride',\n 'number'\n );\n\n const perfStop: number = options.perfStopOverride;\n const isStopTimeDefined = utility.requireArgumentIfDefined(\n perfStop,\n 'options.perfStopOverride',\n 'number'\n );\n\n const errorCount: number = options.errorCount;\n if (utility.requireArgumentIfDefined(errorCount, 'options.errorCount', 'number')) {\n this._errorCount = errorCount;\n }\n\n if (isStartTimeDefined && perfStart < 0) {\n throw new Error('perfStartOverride, if defined, must be >= 0');\n }\n\n if (\n isStopTimeDefined &&\n (perfStop < 0 ||\n perfStop < (isStartTimeDefined ? perfStart : this._startPerfTime) ||\n perfStop > utility.time().perfNow + 100) // 100ms for safety\n ) {\n throw new Error(\n 'perfStopOverride, if defined, must be >= 0 and >= startTime and <= now'\n );\n }\n }\n\n this._stopInternal(userSchemaOrText, userData, options);\n });\n }\n\n private _overrideTimer(perfStartTime?: number, perfStopTime?: number): void {\n if (perfStartTime !== undefined) {\n this._startTimestamp = Math.round(\n this._startTimestamp - (this._startPerfTime - perfStartTime)\n );\n this._startPerfTime = perfStartTime;\n this._setTimerOverride(TimerOverride.start);\n }\n\n if (perfStopTime !== undefined) {\n this._stopPerfTime = perfStopTime;\n this._setTimerOverride(TimerOverride.stop);\n }\n }\n\n private _setTimerOverride(value: TimerOverride): void {\n if (\n this._timerOverridden === TimerOverride.both ||\n this._timerOverridden === value ||\n value === TimerOverride.none\n ) {\n return;\n }\n this._timerOverridden =\n this._timerOverridden === TimerOverride.none ? value : TimerOverride.both;\n }\n\n private _stopInternal(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n // First things first.\n const stopPerfTime = utility.perfNow();\n if (this._usePerf) {\n try {\n // Use a more user-friendly name for measure.\n if (this._stopReason !== stopReason.discarded) {\n performance.measure(this._perfName, this._perfId);\n }\n performance.clearMarks(this._perfId);\n performance.clearMeasures(this._perfName);\n } catch {}\n }\n\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n if (this.isStopped) {\n // Already stopped\n return;\n }\n\n if (options) {\n this._overrideTimer(options.perfStartOverride, options.perfStopOverride);\n }\n\n // We may set this already in override so check that here\n this._stopPerfTime =\n this._timerOverridden === TimerOverride.none ||\n this._timerOverridden === TimerOverride.start\n ? stopPerfTime\n : this._stopPerfTime;\n\n const activityDetail: ActivityDetail = this._getDetail(userSchemaOrText, userData);\n this._onStopped(activityDetail);\n }\n\n get isStopped(): boolean {\n return this._stopPerfTime !== undefined;\n }\n\n discard(): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.discarded;\n this.stop();\n });\n }\n\n terminate(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.terminated;\n this.stop(userSchemaOrText, userData, options);\n });\n }\n\n getIsSampled(): boolean {\n return this._isSampled || false;\n }\n\n protected _getDetail(\n userSchemaOrText: Schema | string,\n userData: SchematizedData\n ): ActivityDetail {\n return {\n id: this._id,\n rootId: this._rootId,\n name: this._name,\n userSchemaOrText: userSchemaOrText,\n userData,\n stopReason: this._stopReason,\n startTimestamp: this._startTimestamp,\n startPerfTime: this._startPerfTime,\n stopPerfTime: this._stopPerfTime,\n errorCount: this._errorCount,\n isSampled: this.getIsSampled(),\n timerOverridden: this._timerOverridden,\n noRerooting: this._noRerooting\n };\n }\n\n public getTraceHeaders(options: TracingHeadersOptions): TraceHeaders {\n // Normally, the root activity ID is the traceId.\n // If the activity is root, it's ID is (also) the traceId.\n // If the activity has no root, it's ID is (also) the traceId. i.e. It creates its own trace.\n const spanId = this.id;\n const traceId = this._rootId || spanId;\n\n return Tracing.getHeaders(traceId, spanId, this.getIsSampled(), options);\n }\n\n getStartTimestamp(): number {\n return this._startTimestamp;\n }\n\n getStartPerfTime(): number {\n return this._startPerfTime;\n }\n\n getStopPerfTime(): number {\n return this._stopPerfTime;\n }\n\n getErrorCount(): number {\n return this._errorCount;\n }\n}\n","import { Activity, TracingHeadersOptions } from '../interfaces';\n\nconst id: string = new Array(16).fill(0).join('');\nclass ActivityNoOp implements Activity {\n getId(): string {\n return id;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const activityNoOp = Object.freeze(new ActivityNoOp());\n","import { SchematizedPayload } from '../interfaces';\nimport { EventData, InstrumentedEventData, MouseEventData } from '../interfaces-private';\nimport { DomEventData, DomEventDataField } from '../types/TypeDefinitions-Private';\nimport { schemaUtil, utility } from 'o11y/shared';\n\nexport class DomEventHelpers {\n getInstrumentedEventData(\n domEventDataField: DomEventDataField,\n domEventData: DomEventData,\n handledBy: HTMLElement,\n userPayload: SchematizedPayload\n ): InstrumentedEventData {\n const instrumentedEvent: InstrumentedEventData = {\n ownerComponent: handledBy.tagName,\n parentComponent: handledBy.parentElement?.tagName || undefined,\n simplePath: utility.getXpath(handledBy)\n };\n\n switch (domEventDataField) {\n case DomEventDataField.BaseEvent:\n instrumentedEvent.baseEvent = domEventData as EventData;\n break;\n case DomEventDataField.MouseEvent:\n instrumentedEvent.mouseEvent = domEventData as MouseEventData;\n break;\n }\n\n if (userPayload) {\n instrumentedEvent.userPayload = schemaUtil.makePayload(\n userPayload.schema,\n userPayload.payload,\n true\n );\n }\n\n return instrumentedEvent;\n }\n\n getEventData(e: MouseEvent | UIEvent | Event): EventData {\n return {\n type: e.type\n };\n }\n\n getMouseEventData(e: MouseEvent): MouseEventData {\n return {\n altKey: e.altKey,\n bubbles: e.bubbles,\n button: e.button,\n buttons: e.buttons,\n cancelable: e.cancelable,\n clientX: e.clientX,\n clientY: e.clientY,\n composed: e.composed,\n defaultPrevented: e.defaultPrevented,\n detail: e.detail,\n eventPhase: e.eventPhase,\n isTrusted: e.isTrusted,\n timeStamp: e.timeStamp,\n type: e.type,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n movementX: e.movementX,\n movementY: e.movementY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n pageX: e.pageX,\n pageY: e.pageY,\n screenX: e.screenX,\n screenY: e.screenY,\n shiftKey: e.shiftKey\n };\n }\n}\n\nconst singleton = new DomEventHelpers();\nexport const domEventHelpers = singleton;\n","import { BucketHistogram } from '../interfaces/BucketHistogram';\nimport { MetricsTags, utility } from 'o11y/shared';\nimport { BucketMetric } from 'src/interfaces';\n\nexport class BucketHistogramImpl implements BucketMetric<number[]>, BucketHistogram {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n private readonly _buckets: number[],\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n getBuckets(): number[] {\n return this.buckets;\n }\n\n get buckets(): number[] {\n return this._buckets.slice(0, this._buckets.length);\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('BucketHistogram can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { UpCounter } from '../interfaces/UpCounter';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class UpCounterImpl implements Metric<number>, UpCounter {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _value = 0;\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n value?: number\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (value !== undefined) {\n this._value = value;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number {\n return this._value;\n }\n\n increment(value = 1): void {\n if (typeof value === 'number' && value > 0) {\n this._value += Math.round(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('UpCounter can only increment positive numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._value = 0;\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): Readonly<MetricsTags> {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { ValueRecorder } from '../interfaces/ValueRecorder';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class ValueRecorderImpl implements Metric<number[]>, ValueRecorder {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n // TODO: Add sampling/throttling to put a cap on the size of the array\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('ValueRecorder can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","export class SizeLimitedMap<K, V> {\n private readonly _map = new Map<K, V>();\n\n private _maxSize: number;\n constructor(maxSize: number) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get(key: K): V {\n return this._map.get(key);\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): boolean {\n if (this.has(key) || this._map.size < this.maxSize) {\n this._map.set(key, value);\n return true;\n }\n return false;\n }\n\n getElements(): V[] {\n return Array.from(this._map.values());\n }\n\n clear(): void {\n this._map.clear();\n }\n}\n","import { MetricsReporter, UpCounter, ValueRecorder } from '../interfaces';\n\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\nimport { SizeLimitedMap } from './SizeLimitedMap';\nimport { MetricsTags } from 'o11y/shared';\n\nconst maxCounters = 1000;\nconst maxValueRecorders = 500;\nconst maxBucketHistograms = 500;\n\nenum MetricType {\n Counter,\n Percentile,\n BucketHistogram\n}\n\nexport class MetricsImpl implements MetricsReporter {\n private readonly _upCounters = new SizeLimitedMap<string, UpCounterImpl>(maxCounters);\n private readonly _valueRecorders = new SizeLimitedMap<string, ValueRecorderImpl>(\n maxValueRecorders\n );\n private readonly _bucketHistograms = new SizeLimitedMap<string, BucketHistogramImpl>(\n maxBucketHistograms\n );\n\n constructor(\n private readonly _ownerName: string,\n private readonly _getOwnerAppName: () => string\n ) {}\n\n incrementCounter(\n operation: string,\n increment: number,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._upCounter(operation, tags).increment(increment);\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._tagError(tags, hasError);\n this._valueRecorder(operation, tags).record(value);\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._bucketHistogram(operation, tags, buckets).record(value);\n }\n\n private _bucketHistogram(name: string, tags: MetricsTags, buckets: number[]): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(\n name,\n tags,\n MetricType.BucketHistogram\n );\n let instrument = this._bucketHistograms.get(key);\n if (!instrument) {\n instrument = new BucketHistogramImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags,\n buckets\n );\n if (!this._bucketHistograms.set(key, instrument)) {\n throw new Error(`Max size of ${maxBucketHistograms} exceeded for BucketHistograms`);\n }\n }\n return instrument;\n }\n\n private _upCounter(name: string, tags: MetricsTags): UpCounter {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Counter);\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._upCounters.set(key, instrument)) {\n throw new Error(`Max size of ${maxCounters} exceeded for UpCounters`);\n }\n }\n return instrument;\n }\n\n private _valueRecorder(name: string, tags: MetricsTags): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Percentile);\n let instrument = this._valueRecorders.get(key);\n if (!instrument) {\n instrument = new ValueRecorderImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._valueRecorders.set(key, instrument)) {\n throw new Error(`Max size of ${maxValueRecorders} exceeded for ValueRecorders`);\n }\n }\n return instrument;\n }\n\n getUpCounters(): UpCounterImpl[] {\n return this._upCounters.getElements();\n }\n\n getValueRecorders(): ValueRecorderImpl[] {\n return this._valueRecorders.getElements();\n }\n\n getBucketHistograms(): BucketHistogramImpl[] {\n return this._bucketHistograms.getElements();\n }\n\n private _tagError(tags: MetricsTags, hasError: boolean): void {\n tags.status = hasError === true ? 'error' : 'success';\n }\n\n private _getKeyAndSortedTags(\n operation: string,\n tags: MetricsTags,\n metricType: MetricType\n ): { key: string; sortedTags: MetricsTags } {\n // This method should be called after any manipulation of tags\n const sortedTags = Object.keys(tags)\n .sort()\n .reduce((prev: MetricsTags, curr: string) => {\n prev[curr] = tags[curr];\n return prev;\n }, {});\n const key = `${MetricType[metricType]}:${operation}${JSON.stringify(sortedTags)}`;\n return {\n key,\n sortedTags\n };\n }\n}\n","export class MockBase {\n // All mock objects should extend this\n public readonly isMock = true;\n}\n","import {\n activitySchema,\n errorSchema,\n instrumentedEventSchema,\n payloadDiagsSchema,\n simpleSchema\n} from 'o11y_schema/sf_instrumentation';\n\nimport {\n LightningElement,\n LogPromptListener,\n maxStringLengthAppLimit,\n MetricsTags,\n payloadUtility,\n PublicSafety,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\nimport {\n Activity,\n ActivityApiOptions,\n ActivityDetail,\n ApiOptions,\n BucketMetric,\n DomEventApiOptions,\n Instrumentation,\n InstrumentationContext,\n Metric,\n MetricsReporter,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { ActivityData, ErrorData, InstrumentedEventData } from '../interfaces-private';\n\nimport { ActivityImpl, discarded, onActivityError, onActivityStop } from './ActivityImpl';\nimport { activityNoOp } from './ActivityNoOp';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { domEventHelpers } from './DomEventHelpers';\nimport { MetricsImpl } from './MetricsImpl';\nimport { MockBase } from './MockObj';\nimport { NextgenImpl } from './NextgenImpl';\nimport { DomEventDataField } from 'src/types/TypeDefinitions-Private';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\nimport { ActivityStartApiOptions } from 'src/interfaces/ActivityStartApiOptions';\n\n// @W-10241440, disable timeouts\nconst maxActivityDurationMsecs: number = undefined;\nconst reservedMetricCharacters = ['`'];\nconst reservedMetricNames = {\n internalError: 'o11y-error'\n};\nconst denyListMetricNames = Object.freeze(Array.from(Object.values(reservedMetricNames)));\n\nexport class InstrumentationImpl implements Instrumentation, MetricsReporter {\n protected static readonly defaultAppName = 'APP_NOT_REGISTERED';\n private readonly _metrics: MetricsImpl;\n private readonly _onActivityStoppedCallback: onActivityStop =\n this._handleActivityStop.bind(this);\n protected readonly _onActivityErrorCallback: onActivityError =\n this._handleActivityError.bind(this);\n protected readonly _safety: PublicSafety;\n private readonly _simpleTextMaxLength: number;\n\n constructor(protected readonly _nextGen: NextgenImpl, private readonly _name: string) {\n for (const reservedChar of reservedMetricCharacters) {\n if (this._name.indexOf(reservedChar) >= 0) {\n throw new Error(`Name cannot include the reserved character \"${reservedChar}\"`);\n }\n }\n\n this._safety = new PublicSafety({\n increment: (increment) => this._incrementError(increment)\n });\n\n this._metrics = this._initMetrics();\n\n const simpleTextOptions = schemaUtil.getOptions(simpleSchema, 'Simple', 'text');\n this._simpleTextMaxLength = simpleTextOptions\n ? simpleTextOptions['(meta.max_length)']\n : maxStringLengthAppLimit;\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(\n this.name,\n () => this._nextGen.appName || InstrumentationImpl.defaultAppName\n );\n }\n\n private _incrementError(increment = 1): void {\n // Note: this metric was setting false for hasError until 246.3.x\n this._metrics.incrementCounter(reservedMetricNames.internalError, increment, true);\n }\n\n get name(): string {\n return this._name;\n }\n\n /**\n * This function is to allow for convenience calls to our API, where a string can\n * be provided instead of an actual Schema. In that case, we wrap the text in\n * a built-in simple schema.\n * @param userSchemaOrText Schema or string.\n * @param userData\n * @param onlyIfBoth If true, then both the schema and the data must be specified.\n * @returns\n */\n protected _wrapUserPayload(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n onlyIfBoth = false\n ): SchematizedPayload {\n let userSchema: Schema;\n if (typeof userSchemaOrText === 'string') {\n userSchema = simpleSchema;\n if (userSchemaOrText) {\n userData = {\n text: userSchemaOrText.substring(0, this._simpleTextMaxLength)\n };\n } else {\n userData = undefined;\n }\n } else {\n userSchema = userSchemaOrText;\n }\n\n return schemaUtil.makePayload(userSchema, userData, onlyIfBoth);\n }\n\n private _getEffectiveRootId(options?: ApiOptions): string {\n return (\n options?.instrumentationContext?.rootId ??\n this._nextGen.getDefaultInstrumentationContext().rootId\n );\n }\n\n /**\n *\n * @param userSchema The schema of the second argument. Also used as the basis for auto-generated\n * counters for log calls using the same schema.\n * @param userData Optional data that complies with the provided schema\n */\n log(userSchemaOrText: Schema | string, userData?: SchematizedData, options?: ApiOptions): void {\n this._safety.tryCatch(() => {\n const timestamp = utility.time().tsNow;\n utility.requireArgument(userSchemaOrText, 'userSchemaOrText', ['object', 'string']);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData);\n\n if (userPayload?.payload) {\n this._logInternal(\n this.name,\n userPayload.schema,\n userPayload.payload,\n timestamp,\n this._getEffectiveRootId(options)\n );\n }\n });\n }\n\n protected _logInternal(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId?: string\n ): number {\n const sequence = this._nextGen.addLog(loggerName, schema, data, timestamp, rootId);\n if (!utility.isProduction) {\n const extraFields: string[] = payloadUtility.getExtraFields(schema, data);\n if (!utility.isProduction && extraFields.length > 0) {\n this.error('Extra fields', payloadDiagsSchema, {\n extras: extraFields\n });\n }\n }\n return sequence;\n }\n\n error(\n error: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ApiOptions\n ): void {\n return this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const rootId: string = this._getEffectiveRootId(options);\n this._errorInternal(error, userSchemaOrText, userData, undefined, rootId);\n });\n }\n\n protected _errorInternal(\n err: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n activityId?: string,\n rootActivityId?: string\n ): number {\n const loggedTimestamp = utility.time().tsNow;\n\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n let msg: string;\n if (err === undefined || err === null || typeof err.toString !== 'function') {\n msg = 'UNKNOWN';\n } else {\n msg = err.toString();\n }\n error = new Error(msg);\n }\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData, true);\n\n const errorData: ErrorData = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n userPayload,\n activityId\n };\n\n return this._logInternal(\n this.name,\n errorSchema,\n errorData,\n loggedTimestamp,\n rootActivityId\n );\n }\n\n startActivity(name: string, options?: ActivityStartApiOptions): Activity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n let context: InstrumentationContext;\n let noRerooting = options?.perfStartOverride !== undefined;\n const rootId: string = options?.instrumentationContext?.rootId;\n if (rootId) {\n noRerooting = true; // root info is explicitly specified, do not override\n context = {\n rootId,\n isRootActivitySampled: options.instrumentationContext.isRootActivitySampled\n };\n } else {\n // By definition, an activity is sampled if root activity is sampled\n context = this._nextGen.getDefaultInstrumentationContext();\n }\n const activity: Activity = new ActivityImpl(\n name,\n context.rootId,\n this._onActivityStoppedCallback,\n this._onActivityErrorCallback,\n maxActivityDurationMsecs,\n options?.id,\n context.isRootActivitySampled,\n options?.perfStartOverride,\n noRerooting\n );\n return activity;\n }, activityNoOp);\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const userPayload = this._wrapUserPayload(detail.userSchemaOrText, detail.userData, true);\n\n return {\n id: detail.id,\n name: detail.name,\n duration: detail.stopPerfTime - detail.startPerfTime,\n stopReason: detail.stopReason,\n userPayload,\n errorCount: detail.errorCount,\n isSampled: detail.isSampled,\n timerOverridden: detail.timerOverridden,\n isRerooted: detail.isRerooted\n };\n }\n\n private _handleActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n\n if (!detail.isRoot && !detail.noRerooting) {\n const rahe: RootActivityHistoryEntry = this._nextGen.getRootActivityHistoryEntryByTime(\n detail.startPerfTime\n );\n if ((!rahe && detail.rootId !== undefined) || (rahe && detail.rootId !== rahe.id)) {\n detail.rootId = rahe?.id;\n detail.isSampled = rahe?.isSampled || false;\n detail.isRerooted = true;\n\n // Note: we cannot retroactively reroot activity errors\n }\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp, detail.rootId);\n }\n\n protected _logActivity(\n activityData: ActivityData,\n startTimestamp: number,\n rootId?: string\n ): void {\n this._logInternal(this.name, activitySchema, activityData, startTimestamp, rootId);\n }\n\n private _handleActivityError(error: unknown, detail: ActivityDetail): void {\n this._errorInternal(\n error,\n detail.userSchemaOrText,\n detail.userData,\n detail.id,\n detail.rootId\n );\n }\n\n domEvent(\n event: Event,\n handledBy: HTMLElement | LightningElement,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: DomEventApiOptions\n ): void {\n this._safety.tryCatch(() => {\n const tsNow = utility.time().tsNow;\n\n utility.requireArgument(event, 'event', [Event, MockBase]);\n // TODO: Using 'object' instead of 'LightningElement' for now (no imports)\n utility.requireArgument(handledBy, 'handledBy', [HTMLElement, 'object']);\n\n let htmlElement;\n if (handledBy instanceof HTMLElement) {\n htmlElement = handledBy;\n } else {\n handledBy = handledBy as LightningElement;\n // Convenience for LightningElement developers who pass \"this\" in handledBy.\n // Get the underlying HTML element\n if (handledBy.template?.host instanceof HTMLElement) {\n htmlElement = handledBy.template.host;\n } else {\n utility.requireArgument(undefined, 'handledBy');\n }\n }\n\n const userPayload: SchematizedPayload = this._wrapUserPayload(\n userSchemaOrText,\n userData,\n true\n );\n\n const rootId: string = this._getEffectiveRootId(options);\n\n switch (event.type) {\n case 'click': {\n const mouseEvent = event as MouseEvent;\n\n // If the user has called domEvent API on this event explicitly,\n // then we don't need to log it by default.\n const acd: AutomaticClickTracker = this._nextGen.getClickTracker();\n if (acd) {\n acd.markEventHandled(mouseEvent);\n }\n\n const captureMouse = options?.captureMouseData;\n\n // Distinguish between different fields of the oneof\n const instrumentedEvent: InstrumentedEventData =\n domEventHelpers.getInstrumentedEventData(\n captureMouse\n ? DomEventDataField.MouseEvent\n : DomEventDataField.BaseEvent,\n captureMouse\n ? domEventHelpers.getMouseEventData(mouseEvent)\n : domEventHelpers.getEventData(mouseEvent),\n htmlElement,\n userPayload\n );\n instrumentedEvent.auto = options?._auto;\n\n this._logInternal(\n this.name,\n instrumentedEventSchema,\n instrumentedEvent,\n tsNow,\n rootId\n );\n break;\n }\n default:\n throw new Error(utility.notImplemented);\n }\n });\n }\n\n incrementCounter(\n operation: string,\n increment = 1,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(increment, 'increment', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n this._metrics.incrementCounter(operation, increment, hasError, tags);\n });\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.trackValue(operation, value, hasError, tags);\n });\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[] = [],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(buckets, 'buckets', Array);\n Object.entries(buckets).forEach((entry) => {\n utility.requireArgument(entry[1], `Bucket value for '${entry[0]}'`, 'number');\n });\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.bucketValue(operation, value, buckets, hasError, tags);\n });\n }\n\n getUpCounters(): Metric<number>[] {\n return this._metrics.getUpCounters().filter((m) => m.getLastUpdatedOn());\n }\n\n getValueRecorders(): Metric<number[]>[] {\n return this._metrics.getValueRecorders().filter((m) => m.getLastUpdatedOn());\n }\n\n getBucketHistograms(): BucketMetric<number[]>[] {\n return this._metrics.getBucketHistograms().filter((m) => m.getLastUpdatedOn());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n utility.requireArgument(listener, 'listener', 'function');\n this._nextGen.registerForLogPrompt(listener);\n }\n\n _getAsaOptions(options?: ActivityApiOptions): ActivityStartApiOptions {\n return options\n ? Object.assign(\n {\n instrumentationContext: options?.instrumentationContext\n },\n options.startOptions\n )\n : undefined;\n }\n\n activity<T>(name: string, execute: (act: Activity) => T, options?: ActivityApiOptions): T {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n\n async activityAsync<T>(\n name: string,\n execute: (act: Activity) => Promise<T>,\n options?: ActivityApiOptions\n ): Promise<T> {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return await execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n}\n","import { utility } from 'o11y/shared';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\n\nconst GRACE = 0.1; // 10%\nconst DEFAULT_LIMIT = 20; // Must be a positive number\n\nexport class RootActivityHistoryImpl {\n private readonly _historyMap = new Map<string, RootActivityHistoryEntry>();\n private readonly _historyList = new Array<RootActivityHistoryEntry>();\n private readonly _graceCount: number;\n private readonly _realLimit: number;\n\n constructor(limit?: number) {\n if (utility.requireArgumentIfDefined(limit, 'limit', 'number')) {\n limit = Math.ceil(limit);\n if (limit <= 0) {\n throw new Error('Limit must be a positive number');\n }\n } else {\n limit = DEFAULT_LIMIT;\n }\n this._graceCount = Math.max(1, Math.floor(limit * GRACE));\n\n // We add one to the limit because we will never delete the first root activity.\n this._realLimit = 1 + limit + this._graceCount;\n }\n\n add(entry: RootActivityHistoryEntry): void {\n if (this._historyMap.has(entry.id)) {\n throw new Error(\n `RootActivityHistoryImpl.add: entry already exists for rootId: ${entry.id}`\n );\n }\n\n this._historyMap.set(entry.id, entry);\n this._historyList.push(entry);\n\n if (this._historyList.length === this._realLimit) {\n // Start deleting from the second element because the first root activity\n // tends to be special.\n const removed = this._historyList.splice(1, this._graceCount);\n removed.forEach((e) => this._historyMap.delete(e.id));\n }\n }\n\n get count(): number {\n return this._historyList.length;\n }\n\n findById(rootId: string): RootActivityHistoryEntry {\n return this._historyMap.get(rootId);\n }\n\n findByTime(atTime: number): RootActivityHistoryEntry {\n let closest: RootActivityHistoryEntry;\n let closestDiff = Number.MAX_VALUE;\n\n // We have to iterate all the elements because we can't rely on an implicit sort\n // order of time of add, as the start time can be modified at any time.\n for (const entry of this._historyList) {\n const startDelta = atTime - entry.startPerfTime;\n const isDuringRoot =\n startDelta >= 0 &&\n (entry.stopPerfTime === undefined || atTime < entry.stopPerfTime);\n if (isDuringRoot && startDelta < closestDiff) {\n closest = entry;\n closestDiff = startDelta;\n }\n }\n return closest;\n }\n}\n","import { RootActivity, Schema } from '../interfaces';\nimport { ActivityDetail } from '../interfaces/ActivityDetail';\nimport { ActivityImpl, onActivityError, onActivityStop } from './ActivityImpl';\nimport { SchematizedData, utility } from 'o11y/shared';\n\nexport class RootActivityImpl extends ActivityImpl implements RootActivity {\n constructor(\n name: string,\n onStopped: onActivityStop,\n onError: onActivityError,\n rootId?: string,\n isSampled?: boolean,\n startPerfTime?: number,\n generatedRootIdLength?: number // Used only if rootId isn't specified\n ) {\n super(\n name,\n undefined,\n onStopped,\n onError,\n undefined,\n rootId || utility.generateUniqueId(generatedRootIdLength ?? 32),\n isSampled,\n startPerfTime\n );\n }\n\n private _preRootId: string;\n get preRootId(): string {\n return this._preRootId;\n }\n set preRootId(value: string) {\n this._preRootId = value;\n }\n\n protected _getDetail(userSchema: Schema, userData: SchematizedData): ActivityDetail {\n const detail = super._getDetail(userSchema, userData);\n detail.isRoot = true;\n detail.preRootId = this.preRootId;\n return detail;\n }\n}\n","import { RootActivity, TracingHeadersOptions } from '../interfaces';\n\nconst rootId: string = new Array(32).fill(0).join('');\nclass RootActivityNoOp implements RootActivity {\n getId(): string {\n return rootId;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const rootActivityNoOp = Object.freeze(new RootActivityNoOp());\n","import { utility } from 'o11y/shared';\n\nimport { ActivityDetail, ActivityStartOptions, RootActivity } from '../interfaces';\nimport { ActivityData } from '../interfaces-private';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\nimport { discarded, onActivityStop } from './ActivityImpl';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { MetricsImpl } from './MetricsImpl';\nimport { NextgenImpl } from './NextgenImpl';\nimport { RootActivityHistoryImpl } from './RootActivityHistoryImpl';\nimport { RootActivityImpl } from './RootActivityImpl';\nimport { rootActivityNoOp } from './RootActivityNoOp';\n\nexport class AppInstrumentationImpl extends InstrumentationImpl {\n private _singleRootActivity: RootActivityImpl; // Not used when _allowMulti = true\n private _rootActivityHistory = new RootActivityHistoryImpl();\n\n private readonly _onRootActivityStoppedCallback: onActivityStop =\n this._handleRootActivityStop.bind(this);\n\n constructor(_nextGen: NextgenImpl, _name: string, private readonly _allowMulti: boolean) {\n super(_nextGen, _name);\n }\n\n startRootActivity(\n name: string,\n rootId?: string,\n isSampled?: boolean,\n options?: ActivityStartOptions\n ): RootActivity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n\n if (options?.id !== undefined) {\n throw new Error('Cannot specify id for root activity, use rootId argument instead');\n }\n\n const newRootActivity = new RootActivityImpl(\n name,\n this._onRootActivityStoppedCallback,\n this._onActivityErrorCallback,\n rootId,\n isSampled,\n options?.perfStartOverride,\n this._nextGen.preferredRootIdLength\n );\n\n if (!this._allowMulti) {\n const entry: RootActivityHistoryEntry = {\n id: newRootActivity.getId(),\n name,\n startPerfTime: newRootActivity.getStartPerfTime(),\n isSampled: newRootActivity.getIsSampled()\n };\n this._rootActivityHistory.add(entry);\n\n if (this._singleRootActivity && !this._singleRootActivity.isStopped) {\n const preRootId = this._singleRootActivity.getId();\n this._singleRootActivity.terminate();\n newRootActivity.preRootId = preRootId;\n }\n this._singleRootActivity = newRootActivity;\n }\n\n return newRootActivity as RootActivity;\n }, rootActivityNoOp);\n }\n\n private _handleRootActivityStop(detail: ActivityDetail): void {\n // If we are here, this is the first time the activity is being stopped.\n\n const historyEntry = this._rootActivityHistory.findById(detail.id);\n if (historyEntry) {\n historyEntry.stopPerfTime = detail.stopPerfTime;\n // Also, do the fields that may be overridden at stop time.\n historyEntry.startPerfTime = detail.startPerfTime;\n }\n\n if (detail.stopReason === discarded) {\n return;\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp);\n this._singleRootActivity = undefined;\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const activityData: ActivityData = super._getActivityData(detail);\n activityData.isRoot = detail.isRoot;\n activityData.preRootId = detail.preRootId;\n return activityData;\n }\n\n getSingleRootActivityId(): string {\n return this._singleRootActivity?.getId();\n }\n\n isSingleRootActivitySampled(): boolean {\n return this._singleRootActivity?.getIsSampled();\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(this.name, () => this.name);\n }\n\n getRootActivityHistoryEntry(atTime: number): RootActivityHistoryEntry {\n return this._rootActivityHistory.findByTime(atTime);\n }\n}\n","import { Instrumentation } from '../interfaces';\nimport { utility } from 'o11y/shared';\n\nconst pathLimit = 5;\n\nexport class AutomaticClickTracker {\n private _ignoredEvent: Event;\n private _isActive = false;\n private readonly _boundClickListener = this._clickListener.bind(this);\n\n constructor(private readonly _instr: Instrumentation, private readonly _doc: Document) {\n utility.requireArgument(_instr, '_instr');\n utility.requireArgument(_doc, '_doc');\n }\n\n activate(): void {\n if (!this._isActive) {\n this._doc.addEventListener('click', this._boundClickListener, true);\n this._isActive = true;\n }\n }\n\n deactivate(): void {\n if (this._isActive) {\n this._doc.removeEventListener('click', this._boundClickListener, true);\n this._isActive = false;\n }\n }\n\n markEventHandled(event: MouseEvent): void {\n this._ignoredEvent = event;\n }\n\n private _clickListener(event: MouseEvent): void {\n let eventTargets: EventTarget[] = event.composedPath?.();\n if (!eventTargets || !eventTargets.length) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n eventTargets = (event as any).path;\n }\n const handledBy: HTMLElement = this._getClickableElement(eventTargets);\n\n if (handledBy) {\n // Immediate\n setTimeout(() => {\n if (event !== this._ignoredEvent) {\n this._instr.domEvent(event, handledBy, undefined, undefined, {\n _auto: true\n });\n }\n });\n }\n }\n\n private _getClickableElement(path: EventTarget[]): HTMLElement {\n const limit = path ? Math.min(path.length, pathLimit) : 0;\n for (let x = 0; x < limit; x += 1) {\n const currentElement = path[x] as HTMLElement;\n const tagName = currentElement.tagName?.toLowerCase();\n if (tagName === 'a' || tagName === 'button') {\n return currentElement;\n }\n if (tagName === 'input') {\n const inputElement = currentElement as HTMLInputElement;\n if (inputElement.type?.toLowerCase() === 'button') {\n return inputElement;\n }\n }\n }\n return undefined;\n }\n}\n","import { utility } from 'o11y/shared';\nimport { Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n MESSAGE_TYPE_LOG,\n MESSAGE_TYPE_METRICS,\n MESSAGE_TYPE_HANDSHAKE,\n MessageChannelData\n} from './SenderConnector';\n\nexport const MESSAGE_FROM_RECEIVER = 'o11y:receiver';\n\nexport type LogCallback = (log: SenderLogMessage) => void;\nexport type MetricsCallback = (metric: SenderMetricsMessage) => void;\n\nexport type CommErrorInfo = {\n data: unknown;\n};\n// This callback will be called if we receive data that can't be serialized.\nexport type CommErrorCallback = () => void;\n\nenum CommState {\n Unknown,\n Opening\n}\n\ntype CommStatus = {\n state: CommState;\n port: MessagePort;\n};\n\nexport class ReceiverConnector {\n private _senders: Map<Communicator, CommStatus> = new Map();\n\n constructor(\n private readonly _logCallback: LogCallback,\n private readonly _metricsCallback: MetricsCallback,\n private readonly _commErrorCallback: CommErrorCallback\n ) {\n utility.requireArgument(this._logCallback, '_logCallback', 'function');\n utility.requireArgument(this._metricsCallback, '_metricsCallback', 'function');\n utility.requireArgument(this._commErrorCallback, '_commErrorCallback', 'function');\n }\n\n public openComms(sender: Communicator): void {\n utility.requireArgument(sender, 'sender', 'object');\n\n if (!this._senders.has(sender)) {\n const messageChannel = new MessageChannel();\n\n const status: CommStatus = {\n state: CommState.Opening,\n port: messageChannel.port1\n };\n this._senders.set(sender, status);\n\n status.port.onmessage = this._messagePortEventHandler.bind(this);\n // According to the docs, this error occurs on the receiving end.\n status.port.onmessageerror = this._messagePortErrorHandler.bind(this);\n\n sender.postMessage(\n {\n from: MESSAGE_FROM_RECEIVER,\n type: MESSAGE_TYPE_HANDSHAKE\n },\n '*',\n [messageChannel.port2]\n );\n }\n }\n\n public closeComms(sender: Communicator): void {\n const status = this._senders.get(sender);\n if (status) {\n status.port.onmessage = undefined;\n status.port.onmessageerror = undefined;\n this._senders.delete(sender);\n }\n }\n\n private _messagePortEventHandler(e: MessageEvent<MessageChannelData>): void {\n if (e.data.type === MESSAGE_TYPE_LOG) {\n this._logCallback(e.data.data as SenderLogMessage);\n } else if (e.data.type === MESSAGE_TYPE_METRICS) {\n this._metricsCallback(e.data.data as SenderMetricsMessage);\n }\n }\n\n private _messagePortErrorHandler(): void {\n // Not passing any error info for now\n this._commErrorCallback();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { AllowedOrigins, Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport { MESSAGE_FROM_RECEIVER } from './ReceiverConnector';\n\nexport const MESSAGE_FROM_SENDER = 'o11y:sender';\nexport const MESSAGE_TYPE_HANDSHAKE = 'handshake';\nexport const MESSAGE_TYPE_LOG = 'log';\nexport const MESSAGE_TYPE_METRICS = 'metrics';\n\nexport type HandshakeData = {\n from: string;\n type: string;\n};\n\nexport type MessageChannelData = {\n // No need for from here.\n type: string;\n data: SenderLogMessage | SenderMetricsMessage;\n};\n\n// This is typically the iframe\nexport class SenderConnector {\n private readonly _messageEventHandlerFunc = this._messageEventHandler.bind(this);\n private _otherPort: MessagePort;\n private _handshakeComplete = false;\n private _logBuffer: SenderLogMessage[] = [];\n private _metricsBuffer: SenderMetricsMessage[] = [];\n\n constructor(\n private readonly _self: Communicator,\n private readonly _allowedOrigins?: AllowedOrigins\n ) {\n utility.requireArgument(this._self, '_self', 'object');\n utility.requireArgumentIfDefined(_allowedOrigins, 'allowedOrigins', Array);\n\n // Start listening to handshake return\n this._self.addEventListener('message', this._messageEventHandlerFunc);\n }\n\n private _messageEventHandler(e: MessageEvent<HandshakeData>): void {\n // When the receiever sends the handshake, it's ready to receive data\n if (\n e.data.from === MESSAGE_FROM_RECEIVER &&\n e.data.type === MESSAGE_TYPE_HANDSHAKE &&\n e.ports[0] instanceof MessagePort &&\n utility.isAllowedOrigin(e.origin, this._allowedOrigins)\n ) {\n this._handshakeComplete = true;\n this._self.removeEventListener('message', this._messageEventHandlerFunc);\n this._otherPort = e.ports[0];\n this._emptyBuffers();\n }\n }\n\n public sendLog(log: SenderLogMessage): void {\n if (!this._handshakeComplete) {\n this._logBuffer.push(log);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_LOG,\n data: log\n });\n }\n }\n\n public sendMetrics(metrics: SenderMetricsMessage): void {\n if (!this._handshakeComplete) {\n this._metricsBuffer.push(metrics);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_METRICS,\n data: metrics\n });\n }\n }\n\n private _emptyBuffers(): void {\n this._logBuffer.forEach((log) => this.sendLog(log));\n this._metricsBuffer.forEach((metrics) => this.sendMetrics(metrics));\n this._logBuffer = undefined;\n this._metricsBuffer = undefined;\n }\n}\n","import { metricsUtility } from 'o11y/shared';\nimport { BucketMetric, Metric, MetricsReporter } from '../interfaces';\nimport {\n BucketHistogram,\n SenderMetricsMessage,\n UpCounter,\n ValueRecorder\n} from '../interfaces-private';\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\n\nexport class MetricsStore implements MetricsReporter {\n private _upCounters: UpCounterImpl[] = [];\n private _valueRecorders: ValueRecorderImpl[] = [];\n private _bucketHistograms: BucketHistogramImpl[] = [];\n\n add(senderMetrics: SenderMetricsMessage): void {\n if (senderMetrics.upCounters?.length) {\n this._upCounters.push(\n ...senderMetrics.upCounters.map(\n (it: UpCounter) =>\n new UpCounterImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.value\n )\n )\n );\n }\n\n if (senderMetrics.valueRecorders?.length) {\n this._valueRecorders.push(\n ...senderMetrics.valueRecorders.map(\n (it: ValueRecorder) =>\n new ValueRecorderImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n\n if (senderMetrics.bucketHistograms?.length) {\n this._bucketHistograms.push(\n ...senderMetrics.bucketHistograms.map(\n (it: BucketHistogram) =>\n new BucketHistogramImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.buckets,\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n }\n\n getUpCounters(): Metric<number>[] {\n // Remove any metrics that have been reset from before\n this._upCounters = this._upCounters.filter((i) => i.getLastUpdatedOn() !== undefined);\n return this._upCounters;\n }\n getValueRecorders(): Metric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._valueRecorders = this._valueRecorders.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._valueRecorders;\n }\n getBucketHistograms(): BucketMetric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._bucketHistograms = this._bucketHistograms.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._bucketHistograms;\n }\n}\n","import { SchematizedData, metricsUtility, utility } from 'o11y/shared';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n LogCollector,\n LogMeta,\n MetricsCollector,\n MetricsExtractorMethods,\n Schema\n} from '../interfaces';\nimport { SenderConnector } from '../library/SenderConnector';\n\nexport const DEFAULT_POLL_INTERVAL = 1000;\n\nexport class SenderCollector implements LogCollector, MetricsCollector {\n private readonly _pollInterval: number = DEFAULT_POLL_INTERVAL;\n private _metricsExtractors: MetricsExtractorMethods;\n\n constructor(private readonly _connector: SenderConnector, _pollInterval?: number) {\n utility.requireArgument(_connector, '_connector', 'object');\n if (\n utility.requireArgumentIfDefined(_pollInterval, '_pollInterval', 'number') &&\n _pollInterval > 0\n ) {\n this._pollInterval = _pollInterval;\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const msg: SenderLogMessage = {\n schema,\n data,\n logMeta\n };\n\n this._connector.sendLog(msg);\n }\n\n receiveMetricsExtractors(extractors: MetricsExtractorMethods): void {\n this._metricsExtractors = extractors;\n\n // Send metrics immediately after receiving extractors\n this._collectAndSendMetrics();\n setInterval(this._collectAndSendMetrics.bind(this), this._pollInterval);\n }\n\n private _collectAndSendMetrics(): void {\n const metrics: SenderMetricsMessage = {\n upCounters: metricsUtility.getUpCounters(this._metricsExtractors.getAllUpCounters()),\n valueRecorders: metricsUtility.getValueRecorders(\n this._metricsExtractors.getAllValueRecorders()\n ),\n bucketHistograms: metricsUtility.getBucketHistograms(\n this._metricsExtractors.getAllBucketHistograms()\n )\n };\n\n if (\n metrics.upCounters.length ||\n metrics.valueRecorders.length ||\n metrics.bucketHistograms.length\n ) {\n this._connector.sendMetrics(metrics);\n }\n }\n}\n","import {\n LogPromptListener,\n payloadUtility,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\nimport {\n BucketMetric,\n BufferedLog,\n IdleDetector,\n Instrumentation,\n InstrumentationContext,\n InstrumentedAppMethods,\n InstrumentedAppOptions,\n LogCollector,\n LogCollectorOptions,\n LogMeta,\n Metric,\n MetricsCollector,\n Nextgen,\n OperationMode,\n OperationModeDetector,\n PayloadProvider,\n PayloadProviderArgs,\n Schema\n} from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from 'src/interfaces-private';\nimport { AppInstrumentationImpl } from './AppInstrumentationImpl';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { Tracing } from './Tracing';\nimport { SenderConnector } from './SenderConnector';\nimport { MetricsStore } from './MetricsStore';\nimport { SenderCollector } from '../sender_collector/SenderCollector';\nimport { ReceiverConnector } from './ReceiverConnector';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\n\nconst maxInstrumentationLength = 80;\nconst defaultRootIdLength = 32;\nconst truncatedText = '_CUT';\nconst maxInstrumentationLengthBeforeTruncated = maxInstrumentationLength - truncatedText.length;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noOpFunc(): void {}\n\nexport class NextgenImpl implements Nextgen {\n private readonly _logCollectors = new Set<LogCollector>();\n private readonly _instruments = new Map<string, InstrumentationImpl | AppInstrumentationImpl>();\n private readonly _seqBySchema = new Map<string, number>();\n private _sequence = 0;\n private _appInstr: AppInstrumentationImpl;\n private _autoClickTracker: AutomaticClickTracker;\n private _metricsCollector: MetricsCollector;\n private _appPayloadProvider: PayloadProvider;\n private _pagePayloadProvider: PayloadProvider;\n private _forceDisabledLogCollectors = new Set<LogCollector>();\n private _logCollectorFailures = new Map<LogCollector, number>();\n private static _collectorFailureLimit = 5;\n private _isBufferingEnabled = false;\n private _buffer: BufferedLog[] = [];\n private readonly _logCollectionListeners = new Set<LogPromptListener>();\n private _clientSessionId: string;\n private _opMode: OperationMode = 'default';\n private _isSender = false;\n private _isReceiver = false;\n private _metricsStore: MetricsStore;\n private _receiverConnector: ReceiverConnector;\n private _decimalPoints: number | null = 2;\n private _preferredRootIdLength: number;\n\n get preferredRootIdLength(): number {\n return this._preferredRootIdLength;\n }\n\n get pagePayloadProvider(): PayloadProvider {\n return this._pagePayloadProvider;\n }\n set pagePayloadProvider(provider: PayloadProvider) {\n this._pagePayloadProvider = provider;\n }\n\n get appPayloadProvider(): PayloadProvider {\n return this._appPayloadProvider;\n }\n set appPayloadProvider(provider: PayloadProvider) {\n this._appPayloadProvider = provider;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {}\n\n registerApp(name: string, options?: InstrumentedAppOptions): InstrumentedAppMethods {\n utility.requireArgument(name, 'name', 'string');\n if (this._appInstr) {\n throw new Error('An app has already been registered with instrumentation.');\n }\n const instr = this._instruments.get(name);\n if (instr) {\n throw new Error(`The instrumentation name ${name} is already taken`);\n }\n\n this._initOpMode(options?.operationMode);\n this._isSender = this._opMode === 'sender';\n this._isReceiver = this._opMode === 'receiver';\n\n if (options?.decimalPoints !== undefined) {\n this._decimalPoints = options.decimalPoints;\n }\n\n this._preferredRootIdLength = options?.preferredRootIdLength ?? defaultRootIdLength;\n\n this._clientSessionId = options?.clientSessionId?.toString() || utility.generateUniqueId();\n this._appInstr = new AppInstrumentationImpl(\n this,\n name,\n options?.allowMultipleRootActivities\n );\n this._instruments.set(name, this._appInstr);\n\n if (this._isSender) {\n const senderCollector = new SenderCollector(\n new SenderConnector(window, options?.allowedReceiverOrigins),\n options?.senderMetricsPollingInterval\n );\n this.registerLogCollector(senderCollector);\n this.registerMetricsCollector(senderCollector);\n } else if (this._isReceiver) {\n this._metricsStore = new MetricsStore();\n\n this._receiverConnector = new ReceiverConnector(\n (msg: SenderLogMessage) => {\n msg.logMeta.receiverClientSessionId = this._clientSessionId;\n msg.logMeta.receiverRootId = this._appInstr.getSingleRootActivityId();\n\n this._multiplex(msg.schema, msg.data, msg.logMeta);\n },\n (msg: SenderMetricsMessage) => {\n this._metricsStore.add(msg);\n },\n () => {\n this._appInstr.incrementCounter('o11y-error-receiver', 1, true);\n }\n );\n }\n\n // Skip buffering if sender mode is enabled\n this._isBufferingEnabled = !this._isSender && options?.enableBuffering;\n\n const tracing = new Tracing(this.getInstrumentation('Network'), this._idleDetector);\n\n return {\n log: this._appInstr.log.bind(this._appInstr),\n error: this._appInstr.error.bind(this._appInstr),\n startActivity: this._appInstr.startActivity.bind(this._appInstr),\n domEvent: this._appInstr.domEvent.bind(this._appInstr),\n incrementCounter: this._appInstr.incrementCounter.bind(this._appInstr),\n trackValue: this._appInstr.trackValue.bind(this._appInstr),\n bucketValue: this._appInstr.bucketValue.bind(this._appInstr),\n networkInstrumentation: tracing.networkInstrumentation.bind(tracing),\n registerForLogPrompt: this._appInstr.registerForLogPrompt.bind(this._appInstr),\n activity: this._appInstr.activity.bind(this._appInstr),\n activityAsync: this._appInstr.activityAsync.bind(this._appInstr),\n\n startRootActivity: this._appInstr.startRootActivity.bind(this._appInstr),\n registerLogCollector: this._isSender ? noOpFunc : this.registerLogCollector.bind(this),\n registerMetricsCollector: this._isSender\n ? noOpFunc\n : this.registerMetricsCollector.bind(this),\n activateClickTracker: this.activateClickTracker.bind(this),\n deactivateClickTracker: this.deactivateClickTracker.bind(this),\n disableBuffering: this.disableBuffering.bind(this),\n promptLogCollection: this.promptLogCollection.bind(this),\n getClientSessionId: this.getClientSessionId.bind(this),\n\n getOperationMode: this.getOperationMode.bind(this),\n startReceiving: this._isReceiver\n ? this._receiverConnector.openComms.bind(this._receiverConnector)\n : noOpFunc,\n stopReceiving: this._isReceiver\n ? this._receiverConnector.closeComms.bind(this._receiverConnector)\n : noOpFunc\n };\n }\n\n getInstrumentation(name: string): Instrumentation {\n utility.requireArgument(name, 'name', 'string');\n if (name.length > maxInstrumentationLength) {\n // don't throw if it's too long. just add truncated suffix, but stay within max length\n name = name.substring(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;\n }\n let instr: InstrumentationImpl | AppInstrumentationImpl = this._instruments.get(name);\n if (!instr) {\n instr = new InstrumentationImpl(this, name);\n this._instruments.set(name, instr);\n } else if (instr === this._appInstr) {\n throw new Error(`The instrumentation name ${name} is being used by the app.`);\n }\n return instr;\n }\n\n get appName(): string {\n return this._appInstr?.name;\n }\n\n getRootActivityHistoryEntryByTime(atTime: number): RootActivityHistoryEntry {\n return this._appInstr?.getRootActivityHistoryEntry(atTime);\n }\n\n // This is an internal method that needs to be public\n addLog(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId: string\n ): number {\n payloadUtility.checkInputs(schema, data);\n this._sequence += 1;\n\n // Schema sequences are per user-defined schema, not internal ones such as ActivityData\n const isInternal = schemaUtil.isInternal(schema);\n const userSchema = isInternal && data?.userPayload ? data.userPayload.schema : schema;\n const schemaId = schemaUtil.getSchemaId(userSchema);\n let schemaSequence = this._seqBySchema.get(schemaId) || 0;\n schemaSequence += 1;\n this._seqBySchema.set(schemaId, schemaSequence);\n\n const logMeta: LogMeta = {\n timestamp,\n rootId,\n sequence: this._sequence,\n schemaSequence,\n loggerName,\n pagePayload: undefined,\n appPayload: undefined,\n loggerAppName: this.appName,\n connectionType: utility.getConnectionType(),\n clientSessionId: this._clientSessionId,\n // Calculate age here rather than later to ensure we use the timeOrigin where the log was created (e.g. sender or receiver)\n age: utility.getAge(timestamp)\n };\n\n const payloadArgs: PayloadProviderArgs = {\n schema,\n data,\n logMeta\n };\n\n // We want the appPayloadProvider to have access to the pagePayload via logMeta, so the order is important.\n // We are not cloning the pagePayload and appPayload like we used to because they are\n // provided by trusted entities of the app: The payloadArgs object must not be mutated,\n // although *careful* mutation of the underlying data and logMeta objects is allowed.\n logMeta.pagePayload = payloadUtility.getPayloadFromProvider(\n this.pagePayloadProvider,\n payloadArgs\n );\n logMeta.appPayload = payloadUtility.getPayloadFromProvider(\n this.appPayloadProvider,\n payloadArgs\n );\n\n if (!this._isSender) {\n // Make a copy of the data once, lest they get mutated by the caller\n // This is not needed for sender mode since the data is already serialized\n data = utility.clone(data);\n }\n\n if (typeof this._decimalPoints === 'number') {\n utility.roundNumbersInObject(data, this._decimalPoints);\n if (isInternal) {\n utility.roundNumbersInObject(data.userPayload?.payload, this._decimalPoints);\n }\n utility.roundNumbersInObject(logMeta.pagePayload?.payload, this._decimalPoints);\n utility.roundNumbersInObject(logMeta.appPayload?.payload, this._decimalPoints);\n }\n\n if (this._isBufferingEnabled) {\n const bufferedLog: BufferedLog = {\n schema,\n data,\n logMeta\n };\n // Always push to the buffer, even if no eligible collectors\n this._buffer.push(bufferedLog);\n }\n\n this._multiplex(schema, data, logMeta);\n return this._sequence;\n }\n\n private _multiplex(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const eligibleCollectors: LogCollector[] = Array.from(this._logCollectors).filter(\n (collector: LogCollector) =>\n !this._forceDisabledLogCollectors.has(collector) &&\n !collector.getIsCollectDisabled?.()\n );\n\n if (eligibleCollectors.length > 0) {\n for (const collector of eligibleCollectors) {\n // Not cloning the data for each collector (like we used to) as they are trusted entities of the app\n let failures: number = this._logCollectorFailures.get(collector) || 0;\n\n try {\n collector.collect(schema, data, logMeta);\n // if it got here it means it succeeded/didn't throw so we want to decrement the failure count\n if (failures > 0) {\n this._logCollectorFailures.set(collector, failures - 1);\n }\n } catch (err) {\n failures += 1;\n // If a collector fails too much we just disable it\n if (failures >= NextgenImpl._collectorFailureLimit) {\n this._forceDisabledLogCollectors.add(collector);\n if (this._appInstr && (typeof err === 'string' || err instanceof Error)) {\n this._appInstr.error(err);\n }\n } else {\n this._logCollectorFailures.set(collector, failures);\n // We can't log an error here, or the same collector will immediately be called\n // again, likely resulting in repeat exceptions until the collector gets disabled.\n }\n }\n }\n }\n }\n\n getBuffer(): BufferedLog[] {\n return this._buffer;\n }\n\n disableBuffering(): void {\n this._isBufferingEnabled = false;\n this._buffer = [];\n }\n\n getClickTracker(): AutomaticClickTracker {\n return this._autoClickTracker;\n }\n\n getDefaultInstrumentationContext(): InstrumentationContext {\n return {\n rootId: this._appInstr?.getSingleRootActivityId(),\n isRootActivitySampled: this._appInstr?.isSingleRootActivitySampled()\n };\n }\n\n activateClickTracker(): void {\n if (typeof document !== 'undefined') {\n if (!this._autoClickTracker) {\n this._autoClickTracker = new AutomaticClickTracker(this._appInstr, document);\n }\n this._autoClickTracker.activate();\n }\n }\n\n deactivateClickTracker(): void {\n if (this._autoClickTracker) {\n this._autoClickTracker.deactivate();\n // In case activateClickTracker is called later with a different instrumentation\n this._autoClickTracker = undefined;\n }\n }\n\n registerLogCollector(collector: LogCollector, options?: LogCollectorOptions): void {\n utility.requireArgument(collector, 'collector');\n if (this._logCollectors.has(collector)) {\n return;\n }\n this._logCollectors.add(collector);\n this._logCollectorFailures.set(collector, 0);\n if (\n (!collector.getIsCollectDisabled || !collector.getIsCollectDisabled()) &&\n options?.retroactive\n ) {\n for (const log of this._buffer) {\n collector.collect(log.schema, log.data, log.logMeta);\n }\n }\n }\n\n registerMetricsCollector(collector: MetricsCollector): void {\n utility.requireArgument(collector, 'collector');\n if (this._metricsCollector) {\n throw new Error('A metrics Collector is already registered.');\n }\n this._metricsCollector = collector;\n this._metricsCollector.receiveMetricsExtractors({\n getAllUpCounters: this._getAllUpCounters.bind(this),\n getAllValueRecorders: this._getAllValueRecorders.bind(this),\n getAllBucketHistograms: this._getAllBucketHistograms.bind(this)\n });\n }\n\n private _getAllUpCounters(): Metric<number>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getUpCounters()\n );\n return arrOfArrs.reduce(\n (pv, cv) => pv.concat(cv),\n this._metricsStore?.getUpCounters() || []\n );\n }\n\n private _getAllValueRecorders(): Metric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getValueRecorders()\n );\n return arrOfArrs.reduce(\n (pv, cv) => pv.concat(cv),\n this._metricsStore?.getValueRecorders() || []\n );\n }\n\n private _getAllBucketHistograms(): BucketMetric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getBucketHistograms()\n );\n return arrOfArrs.reduce(\n (pv, cv) => pv.concat(cv),\n this._metricsStore?.getBucketHistograms() || []\n );\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n this._logCollectionListeners.add(listener);\n }\n\n promptLogCollection(reason: string): void {\n for (const listener of this._logCollectionListeners.keys()) {\n try {\n listener(reason);\n } catch (err) {\n if (!utility.isProduction) {\n throw err;\n }\n }\n }\n }\n\n getClientSessionId(): string {\n return this._clientSessionId;\n }\n\n private _initOpMode(opMode: OperationMode | OperationModeDetector): void {\n if (typeof opMode === 'function') {\n opMode = opMode();\n }\n if (opMode === undefined || typeof window !== 'object') {\n // Support receiver and sender mode only if window is available, othwerwise fallback to default\n opMode = 'default';\n }\n\n if (['default', 'receiver', 'sender'].indexOf(opMode) >= 0) {\n this._opMode = opMode;\n } else {\n throw new Error(`Invalid operation mode: ${opMode}`);\n }\n }\n\n getOperationMode(): OperationMode {\n return this._opMode;\n }\n}\n","import {\n IdleDetector,\n Instrumentation,\n InstrumentedAppMethods,\n InstrumentedAppOptions\n} from './interfaces';\nimport { NextgenImpl } from './library/NextgenImpl';\nimport { utility } from 'o11y/shared';\n\nexport class Index {\n private _nextgen: NextgenImpl;\n // We are lazily initializing the singleton to allow any options to be processed\n // before the instantiation.\n private get _lazyNextGen(): NextgenImpl {\n if (!this._nextgen) {\n this._nextgen = new NextgenImpl(this._idleDetector);\n }\n return this._nextgen;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {\n utility.requireArgument(_idleDetector, '_idleDetector');\n }\n\n public registerInstrumentedApp(\n name: string,\n options?: InstrumentedAppOptions\n ): InstrumentedAppMethods {\n const retVal: InstrumentedAppMethods = this._lazyNextGen.registerApp(name, options);\n if (options) {\n utility.markProduction(options.isProduction);\n this._nextgen.appPayloadProvider = options.appPayloadProvider;\n this._nextgen.pagePayloadProvider = options.pagePayloadProvider;\n }\n return retVal;\n }\n\n public getInstrumentation(name?: string): Instrumentation {\n return this._lazyNextGen.getInstrumentation(name);\n }\n}\n\nexport const time = utility.time.bind(utility);\n","import { Environment, LogCollector, LogMeta, Schema } from '../interfaces';\nimport { SchematizedData, schemaUtil } from 'o11y/shared';\n\nconst lightningLoggerSchemaId = 'sfcore.customCmp.CustomComponentLog';\n\ntype ColorMap = Record<string, string>;\n\nconst bgColorMap: ColorMap = {\n Error: 'Crimson',\n Activity: 'CadetBlue',\n InstrumentedEvent: 'DarkOliveGreen',\n O11ySample: 'BlueViolet'\n};\nconst colorMap: ColorMap = {\n Error: 'white',\n Activity: 'white',\n InstrumentedEvent: 'white',\n O11ySample: 'white'\n};\nconst defaultColor = 'black';\nconst defaultBgColor = 'Gainsboro';\n\nexport class ConsoleCollector implements LogCollector {\n private readonly _simpleFilters = new Set<string>();\n private readonly _regexFilters: RegExp[] = [];\n\n constructor(environment?: Environment) {\n if (environment) {\n this._log('ConsoleCollector', environment);\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const id = schemaUtil.getSchemaId(schema);\n\n if (!this._shouldLog(id)) {\n return;\n }\n\n if (id === lightningLoggerSchemaId) {\n this._logCustom(data);\n return;\n }\n\n let label, color, bgColor;\n if (schemaUtil.isInternal(schema)) {\n label = schema.name;\n color = colorMap[schema.name] || defaultColor;\n bgColor = bgColorMap[schema.name] || defaultBgColor;\n } else {\n label = id;\n }\n\n this._log(label, data, logMeta, color, bgColor);\n }\n\n private _shouldLog(schemaId: string): boolean {\n if (this._simpleFilters.size == 0 && this._regexFilters.length == 0) {\n return true;\n }\n\n return (\n this._simpleFilters.has(schemaId) || this._regexFilters.some((r) => r.test(schemaId))\n );\n }\n\n addFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n this._regexFilters.push(filter);\n } else {\n this._simpleFilters.add(filter);\n }\n }\n\n removeFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n const index = this._regexFilters.findIndex((r) => r.source === filter.source);\n if (index >= 0) {\n this._regexFilters.splice(index, 1);\n }\n } else {\n this._simpleFilters.delete(filter);\n }\n }\n\n clearFilters(): void {\n this._simpleFilters.clear();\n this._regexFilters.splice(0, this._regexFilters.length);\n }\n\n getFilters(): (string | RegExp)[] {\n const filters: (string | RegExp)[] = Array.from(this._simpleFilters);\n return filters.concat(this._regexFilters).sort();\n }\n\n private _log(\n label: string,\n first?: unknown,\n second?: unknown,\n color: string = defaultColor,\n bgColor: string = defaultBgColor\n ): void {\n const css = `color:${color};background-color:${bgColor}`;\n // eslint-disable-next-line no-console\n console.log(\n `%cO11Y%c ${label}`,\n 'color:white;background-color:#FF6600;font-weight:bold',\n css,\n first || '',\n second || ''\n );\n }\n\n private _logCustom(data?: unknown): void {\n // eslint-disable-next-line no-console\n console.log(\n '%clightning/logger',\n 'color:white;background-color:#00a1e0;font-weight:bold',\n data || ''\n );\n }\n}\n","// auto-generated\nexport const version = '252.3.0';\n","// This is the file that exports all `o11y` module level exports.\nimport { idleDetectorReportSchema } from 'o11y_schema/sf_instrumentation';\nimport { IdleDetector, IdleDetectorReport } from './interfaces';\nimport { IdleDetectorImpl } from './library/IdleDetectorImpl';\nimport { time, Index } from './index';\n\nexport const idleDetector: IdleDetector = new IdleDetectorImpl({\n logThreshold: 300,\n reportListener: (report: IdleDetectorReport) => {\n idleDetectorInstr?.log(idleDetectorReportSchema, report);\n },\n errorListener: (e: unknown, text?: string) => {\n idleDetectorInstr?.error(e, text);\n }\n});\nconst index = new Index(idleDetector); // singleton\nconst registerInstrumentedApp = index.registerInstrumentedApp.bind(index);\nconst getInstrumentation = index.getInstrumentation.bind(index);\n\nconst idleDetectorInstr = getInstrumentation('IdleDetector');\n\nexport { registerInstrumentedApp, getInstrumentation, time };\nexport { ConsoleCollector } from './console-collector/ConsoleCollector';\nexport { version as _version } from './version';\n"],"names":["navigationTimingSchema","resourceTimingSchema"],"mappings":";;;MAIa,UAAU,CAAA;AAInB,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC;KACvD;AAED,IAAA,WAAA,CACoB,IAAY,EAC5B,YAAoB,EACH,aAA+B,EAC/B,iBAAmC,EAAA;QAHpC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAEX,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QAXhD,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AAYjB,QAAA,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;KAClC;IAED,GAAG,GAAA;QACC,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AACxB,SAAA;KACJ;IACD,IAAI,GAAA;QACA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,aAAA;AACJ,SAAA;KACJ;AACJ;;AC3BD,MAAM,mBAAmB,GAAG,GAAG,CAAC;MAanB,gBAAgB,CAAA;AAYzB,IAAA,WAAA,CAAY,OAA6B,EAAA;AAXxB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;QACjD,IAAa,CAAA,aAAA,GAAW,mBAAmB,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,KAAK,EAAmB,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,KAAK,EAAuB,CAAC;AAOhE,QAAA,IACI,OAAO,CAAC,wBAAwB,CAC5B,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,EACrB,sBAAsB,EACtB,QAAQ,CACX,EACH;AACE,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AAC7C,SAAA;AAED,QAAA,IACI,OAAO,CAAC,wBAAwB,CAC5B,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,cAAc,EACvB,wBAAwB,EACxB,UAAU,CACb,EACH;AACE,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;AACjD,SAAA;AAED,QAAA,IACI,OAAO,CAAC,wBAAwB,CAC5B,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,aAAa,EACtB,uBAAuB,EACvB,UAAU,CACb,EACH;AACE,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,SAAA;KACJ;AAED,IAAA,2BAA2B,CAAC,QAA8B,EAAA;QACtD,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACpD,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAEO,IAAA,gBAAgB,CAAC,MAAkB,EAAA;AAEvC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,SAAA;KACJ;AAED,IAAA,yBAAyB,CAAC,IAAY,EAAA;QAClC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAExC,QAAA,MAAM,MAAM,GAAiB;AACzB,YAAA,IAAI,MAAM,GAAA;gBACN,OAAO,MAAM,CAAC,MAAM,CAAC;aACxB;YACD,IAAI,EAAE,MAAK;gBACP,MAAM,CAAC,IAAI,EAAE,CAAC;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAChC;SACJ,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,wBAAwB,CAAC,IAAY,EAAE,iBAAiB,GAAG,CAAC,EAAA;QACxD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACjC,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YAE1E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE;AAC/D,gBAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC3E,aAAA;AACJ,SAAA;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAExD,QAAA,MAAM,MAAM,GAAgB;AACxB,YAAA,IAAI,MAAM,GAAA;gBACN,OAAO,MAAM,CAAC,MAAM,CAAC;aACxB;YACD,GAAG,EAAE,MAAK;AACN,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACpC,oBAAA,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;AACxB,iBAAA;gBACD,MAAM,CAAC,GAAG,EAAE,CAAC;aAChB;YACD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;KACjB;IAED,wBAAwB,CAAC,IAAY,EAAE,aAA4B,EAAA;QAC/D,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KAC/C;IAEO,UAAU,CAAC,IAAY,EAAE,iBAAyB,EAAA;QACtD,MAAM,MAAM,GAAG,IAAI,UAAU,CACzB,IAAI,EACJ,iBAAiB,EACjB,MAAK;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACvD,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB,EACD,MAAK;;YAED,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAA,UAAA,EAAa,MAAM,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;YAClD,OAAO,CAAC,WAAW,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAA2B,yBAAA,CAAA,CAAC,CAAC;AAC3E,SAAC,CACJ,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,IAAI;AACJ,YAAA,KAAK,EAAE,iBAAiB,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,SAAS;AACjE,YAAA,GAAG,EAAE,SAAS;AACjB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,oBAAoB,GAAA;QACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;KAClE;IAEO,qBAAqB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;;AACxD,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI;gBACA,OAAO,aAAa,EAAE,CAAC;AAC1B,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAC,EAAE,CAAe,YAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AAChD,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvB,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;KACvC;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAEvB,OAAO;AACV,SAAA;QAKD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAU7B,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;AACrC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;oBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB,EAAE,EAAE,CAAC,CAAC;aACV,EAAE,CAAC,CAAC,CAAC;AACT,SAAA;KACJ;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AAEnC,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC7B,YAAA,MAAM,YAAY,GAAW,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC1D,IAAI,YAAY,KAAK,SAAS,EAAE;AAE5B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;oBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB,EAAE,EAAE,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AAEH,gBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAKrE,gBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAExB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEtD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AACpE,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,oBAAoB,CAAC,IAAY,EAAA;AACrC,QAAA,MAAM,SAAS,GAAwB,IAAI,CAAC,eAAe,CAAC,MAAM;AAC9D,cAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;cACrD,SAAS,CAAC;QAEhB,IAAI,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,IAAI,MAAK,IAAI,EAAE;AAC1B,YAAA,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;AACxB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACtB,IAAI;AACJ,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAEO,IAAA,OAAO,CACX,SAAiC,EACjC,WAAmB,EACnB,UAAkC,EAClC,cAA0C,EAAA;;QAE1C,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;AAC3D,YAAA,MAAM,OAAO,GAAuB,IAAI,CAAC,UAAU,CAC/C,WAAW,EACX,SAAS,CAAC,MAAM,EAChB,UAAU,EACV,cAAc,CACjB,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACjC,SAAA;QACD,SAAS,CAAC,OAAO,EAAE,CAAC;QAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACnC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YACjD,IAAI;gBACA,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnB,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAC,EAAE,CAAa,UAAA,EAAA,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAA,CAAE,CAAC,CAAC;AACtE,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAA;AACJ,SAAA;KACJ;IAED,SAAS,GAAA;QACL,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;AACvC,QAAA,MAAM,WAAW,GACb,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;AAEhF,QAAA,MAAM,YAAY,GAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC3E,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1B,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM;AACT,YAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACf,YAAA,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACjB,YAAA,GAAG,EAAE,OAAO;AACf,SAAA,CAAC,CAAC,CAAC;QACR,OAAO,IAAI,CAAC,UAAU,CAClB,WAAW,EACX,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,EACrC,IAAI,CAAC,eAAe,CACvB,CAAC;KACL;AAEO,IAAA,UAAU,CACd,WAAmB,EACnB,aAAqB,EACrB,UAAkC,EAClC,cAA0C,EAAA;QAE1C,MAAM,aAAa,GAAG,UAAU;AAC3B,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM;YACT,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,YAAA,QAAQ,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK;AAC5B,SAAA,CAAC,CAAC;AACF,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW;YACX,aAAa;AACb,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;AACtC,YAAA,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC3C,YAAA,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACnD,YAAA,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC5C,YAAA,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;SACjD,CAAC;KACL;AACJ;;ACzUM,MAAM,iBAAiB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACjgB,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzf,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACpgB,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACzhB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACJvY,MAAM,eAAe,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3f,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACzf,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9f,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;MCQ3e,WAAW,CAAA;AAGpB,IAAA,WAAA,CAA6B,cAAsB,EAAA;QAAtB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAQ;AAFlC,QAAA,IAAA,CAAA,IAAI,GAA8B,IAAI,GAAG,EAAE,CAAC;QAGzD,OAAO,CAAC,eAAe,CAAC,cAAc,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;KACvE;AAED,IAAA,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,KAAQ,EAAA;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C,SAAA;KACJ;IACD,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,MAAM,KAAI,CAAC,EAAE;AACxB,YAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxC,YAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;AAClB,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACnD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC;gBAClD,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,QAAQ,GAAG,QAAQ,EAAE;oBACxD,QAAQ,GAAG,QAAQ,CAAC;oBACpB,QAAQ,GAAG,KAAK,CAAC;AACpB,iBAAA;AAEJ,aAAA;YACD,IAAI,QAAQ,IAAI,CAAC,EAAE;AACf,gBAAA,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;AACJ;;AC1BD,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;MAE3C,wBAAwB,CAAA;IAUjC,WACqB,CAAA,MAAuB,EACxC,aAAqB,EACJ,SAA8B,EAC9B,2BAAoC,EACrD,QAAiB,EAAA;QAJA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAEvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqB;QAC9B,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAAS;QAPjD,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAUvB,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClE,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,CAAC,wBAAwB,CAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,QAAQ,CACX,CAAC;QACF,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,QAAQ;YACT,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,mBAAmB,KAAK,UAAU,CAAC;QAEpF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YAChD,IAAI,CAAC,SAAS,GAAA,CAAgB,CAAC;AAClC,SAAA;aAAM,IAAI,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,WAAW,EAAE,MAAK,OAAO,EAAE;YAC5C,IAAI,CAAC,SAAS,GAAA,CAAiB,CAAC;AACnC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAA,CAAE,CAAC,CAAC;AACrD,SAAA;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;KACtD;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,SAAA;KACJ;IAED,IAAI,GAAA;QACA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACtC,SAAA;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACxC,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;AAID,IAAA,QAAQ,CAAC,WAAmB,EAAE,QAAgB,EAAE,IAAqB,EAAA;QACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KACtD;AAEO,IAAA,8BAA8B,CAClC,GAA8B,EAAA;;AAE9B,QAAA,MAAM,EAAE,GAGJ;YACA,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,eAAe,EAAE,GAAG,CAAC,eAAe;YAEpC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;YAC9C,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;YAChD,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;YAEhC,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;YACxD,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,eAAe,EAAE,GAAG,CAAC,eAAe;YAEpC,cAAc,EAAE,GAAG,CAAC,cAAc;SACrC,CAAC;AAEF,QAAA,MAAM,GAAG,GAA2C,GAAG,CAAC,YAAY,CAAC;AACrE,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACpB,EAAE,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC;YAC7D,EAAE,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC;AAEpE,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACb;AAEO,IAAA,cAAc,CAAC,KAAgC,EAAA;;AACnD,QAAA,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,CAAC,OAAO,KAAI;YAChD,IAAI,OAAO,YAAY,MAAM,EAAE;gBAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,KAAA,CAAkB,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,QACI,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACrD,YAAA,KAAK,CAAC,SAAS,KAAK,YAAY,EAClC;KACL;AAEO,IAAA,YAAY,CAChB,MAAc,EACd,OAAgC,EAChC,UAAmB,EACnB,UAAmB,EAAA;AAEnB,QAAA,MAAM,YAAY,GAA4B;AAC1C,YAAA,EAAE,EAAE,UAAU;SACjB,CAAC;AACF,QAAA,MAAM,WAAW,GAAwB;YACrC,iBAAiB,EAAE,OAAO,CAAC,SAAS;AACpC,YAAA,gBAAgB,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ;YACtD,UAAU;SACb,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM;AACN,aAAA,aAAa,CAAC,IAAI,CAAC,2BAA2B,EAAE,YAAY,CAAC;AAC7D,aAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;KAC3C;AAEO,IAAA,sBAAsB,CAAC,IAAkC,EAAA;QAC7D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;YACrD,MAAM,EAAE,GAAgC,KAAoC,CAAC;AAE7E,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AACzB,gBAAA,IAAI,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE;AACxB,oBAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;oBAErB,MAAM,OAAO,GACT,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;AAE5C,oBAAA,MAAM,OAAO,GAAyB;wBAClC,WAAW,EAAE,EAAE,CAAC,WAAW;wBAC3B,0BAA0B,EAAE,EAAE,CAAC,0BAA0B;wBACzD,wBAAwB,EAAE,EAAE,CAAC,wBAAwB;wBACrD,cAAc,EAAE,EAAE,CAAC,cAAc;wBACjC,cAAc,EAAE,EAAE,CAAC,cAAc;wBACjC,YAAY,EAAE,EAAE,CAAC,YAAY;wBAC7B,aAAa,EAAE,EAAE,CAAC,aAAa;wBAC/B,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;wBACrC,cAAc,EAAE,EAAE,CAAC,cAAc;qBACpC,CAAC;AAEF,oBAAA,IAAI,CAAC,YAAY,CAACA,iBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9E,iBAAA;gBACD,MAAM;AACT,aAAA;AACJ,SAAA;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,EAAE,GAA8B,KAAkC,CAAC;AAGzE,YAAA,MAAM,WAAW,GAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;AAElF,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;gBACzB,MAAM,OAAO,GAA4B,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;AAEjF,gBAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,oBAAA,QAAQ,EAAE,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,SAAS;AAChC,oBAAA,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC,gBAAgB,GAAG,EAAE,CAAC,QAAQ,GAAG,SAAS;AACjF,iBAAA,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CACbC,eAAoB,EACpB,OAAO,EACP,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,UAAU,EACvB,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,UAAU,CAC1B,CAAC;AACL,aAAA;AACJ,SAAA;KACJ;AACJ;;AC3MD,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAG/B,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAGxC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAC/C,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAC5C,MAAM,6BAA6B,GAAG,UAAU,CAAC;AACjD,MAAM,yBAAyB,GAAG,aAAa,CAAC;AAChD,MAAM,oBAAoB,GAAG,EAAE,CAAC;MAEnB,OAAO,CAAA;IAWhB,WACqB,CAAA,MAAuB,EACvB,aAA2B,EAAA;QAD3B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;QAE5C,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;KACrE;IAEO,OAAO,mBAAmB,CAC9B,OAAe,EACf,MAAc,EACd,SAAmB,EACnB,YAAqB,EAAA;AAKrB,QAAA,IAAI,EAAE,GAAG,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;AAEhC,QAAA,IAAI,SAAS,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;YACvD,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;YAC9B,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,gBAAA,EAAE,IAAI,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE,CAAC;AAC5B,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;AAEO,IAAA,OAAO,mBAAmB,CAC9B,OAAe,EACf,MAAc,EACd,SAAkB,EAAA;AAIlB,QAAA,OAAO,CAAM,GAAA,EAAA,OAAO,CAAI,CAAA,EAAA,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;KAC/D;AAEO,IAAA,OAAO,gBAAgB,CAAC,IAAY,EAAE,QAAgB,EAAA;AAE1D,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1B,QAAA,MAAM,GAAG,GAAW,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,IAAI,CAAwC,qCAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACjF,aAAA;AACJ,SAAA;QAED,IAAI,GAAG,GAAG,QAAQ,EAAE;YAEhB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;AACtC,SAAA;QACD,IAAI,GAAG,GAAG,QAAQ,EAAE;YAEhB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,UAAU,CACpB,OAAe,EACf,MAAc,EACd,SAAmB,EACnB,OAA+B,EAAA;QAE/B,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtD,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAY,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,YAAY,CAAC;AAEpD,QAAA,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAC3B,OAAO,EACP,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB,MAAK,SAAS;cACvC,OAAO,CAAC,sBAAsB;AAChC,cAAE,YAAY;AACd,kBAAE,sBAAsB;kBACtB,sBAAsB,CAC/B,CAAC;QACF,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAE5D,MAAM,YAAY,GACd,CAAC,OAAO;YACJ,OAAO,CAAC,YAAY,KAAK,SAAS;YAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC;AACpE,YAAA,SAAS,CAAC;QAEd,MAAM,OAAO,GAAiB,EAAE,CAAC;AAEjC,QAAA,IAAI,YAAY,EAAE;YAEd,MAAM,SAAS,GAAY,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,gBAAgB,CAAC;AACrD,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,mBAAmB,CACxC,OAAO,EACP,MAAM,EACN,SAAS,EACT,YAAY,CACf,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;AACjC,gBAAA,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;gBAC/B,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,oBAAA,OAAO,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAAC;AAC9C,iBAAA;gBACD,IAAI,SAAS,KAAK,SAAS,EAAE;AACzB,oBAAA,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;IAEO,8BAA8B,GAAA;QAClC,IAAI,OAAO,CAAC,gCAAgC,EAAE;YAC1C,IAAI,OAAO,CAAC,cAAc,EAAE;gBACxB,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;AAC/C,gBAAA,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;AACtC,aAAA;YACD,IAAI,OAAO,CAAC,YAAY,EAAE;gBACtB,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;AACtD,gBAAA,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;AACpC,aAAA;YACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACzE,gBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACxC,aAAA;YACD,IAAI,OAAO,CAAC,4BAA4B,EAAE;AACtC,gBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB;oBACrD,OAAO,CAAC,4BAA4B,CAAC;AACzC,gBAAA,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC;AACpD,aAAA;YACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACzE,gBAAA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACxC,aAAA;YACD,IAAI,OAAO,CAAC,yBAAyB,EAAE;AACnC,gBAAA,OAAO,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AACzC,gBAAA,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;AACjD,aAAA;AACD,YAAA,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;AACpD,SAAA;KACJ;AAEO,IAAA,6BAA6B,CACjC,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,OAA8B,EAC9B,MAAmB,EACnB,cAAgC,EAChC,0BAAkC,EAClC,QAA6B,EAC7B,aAAqB,EAAA;QAErB,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACjF,YAAA,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;AACnD,SAAA;QAED,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;AACtD,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/E,YAAA,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,cAAc,EAAE;YAChB,OAAO,CAAC,yBAAyB,GAAG,IAAI,wBAAwB,CAC5D,KAAK,EACL,aAAa,EACb,QAAQ,EACR,0BAA0B,EAC1B,cAAc,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CACpD,CAAC;AACF,YAAA,OAAO,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;AAC1C,YAAA,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;AACnD,SAAA;KACJ;IAEO,OAAO,gBAAgB,CAC3B,QAA8B,EAC9B,OAA0C,EAC1C,MAAc,EACd,GAAW,EAAA;AAEX,QAAA,IAAI,YAAY,GAAiB,CAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,eAAe,CAAC,OAAO,CAAC,KAAI,EAAE,CAAC;AAC1E,QAAA,IAAI,QAAO,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,eAAe,CAAA,KAAK,UAAU,EAAE;AAChD,YAAA,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;gBACnC,MAAM;gBACN,GAAG;AACH,gBAAA,cAAc,EAAE,YAAY;AAC/B,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAEnC,YAAA,IAAI,MAAM,CAAC;YACX,IAAI;AACA,gBAAA,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,aAAA;YAAC,OAAM,EAAA,EAAA;AAEP,aAAA;YAED,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAChD,YAAY,GAAG,SAAS,CAAC;AAC5B,aAAA;AACJ,SAAA;QACD,OAAO,YAAY,IAAI,EAAE,CAAC;KAC7B;AAEO,IAAA,OAAO,cAAc,CACzB,UAAkB,EAClB,KAAwB,EACxB,IAAkB,EAAA;QAElB,IAAI,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,aAAY,OAAO,EAAE;YAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAC,EAAE;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;YACrE,OAAO,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAG,CAAC,CAAC,CAAC;AACtB,SAAA;AACD,QAAA,IAAI,QAAO,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAA,KAAK,QAAQ,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnC,SAAA;QACD,IAAI,KAAK,YAAY,OAAO,EAAE;YAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,cAAc,CAClB,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,qBAA4C,EAC5C,MAAmB,EAAA;QAEnB,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/C,MAAM,SAAS,GAAkB,OAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAI;;AAItE,YAAA,IAAI,QAAkB,CAAC;AACvB,YAAA,IAAI,GAAW,CAAC;AAChB,YAAA,IAAI,WAAmB,CAAC;AACxB,YAAA,IAAI,MAAc,CAAC;AACnB,YAAA,IAAI,SAAiB,CAAC;YACtB,IAAI;AACA,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,GAAG,EAAE,CAAC;gBACd,MAAM,GAAG,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;gBACzB,MAAM,GAAG,GAAqB,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;gBAE5C,IAAI,EAAC,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,SAAS,CAAA,EAAE;oBACjB,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,2BAA2B,CAAC,CAAC;AAC/E,iBAAA;AAAM,qBAAA;AACH,oBAAA,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;oBACvB,IAAI;wBAEA,IAAI,QAAQ,YAAY,GAAG,EAAE;AACzB,4BAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtE,yBAAA;AAAM,6BAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACrC,4BAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjC,4BAAA,MAAM,EAAE,GAAG,CAAA,KAAA,EAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;4BACvC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAI,CAAA,EAAA,EAAE,EAAE,GAAG,EAAE,CAAC;AAC/D,4BAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,yBAAA;AACJ,qBAAA;AAAC,oBAAA,OAAA,EAAA,EAAM,GAAE;AACb,iBAAA;AACM,gBAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,IAAA,GAAA,OAAP,OAAO,CAAE,IAAI,CAAC;gBAErB,GAAG,GAAG,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAA,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAE7C,gBAAA,IAAI,UAAU,EAAE;oBACZ,IAAI,QAAQ,YAAY,OAAO,EAAE;wBAC7B,IAAI,CAAC,MAAM,EAAE;AAET,4BAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC5B,yBAAA;AACD,wBAAA,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACnB,wBAAA,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChD,qBAAA;AAED,oBAAA,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CACzC,QAAQ,EACR,qBAAqB,EACrB,MAAM,EACN,WAAW,CACd,CAAC;oBAEF,IACI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC;wBACzD,OAAO,KAAK,SAAS,EACvB;AACE,wBAAA,OAAO,GAAG;AACN,4BAAA,OAAO,EAAE,YAAY;yBACxB,CAAC;AACL,qBAAA;AACJ,iBAAA;AAED,gBAAA,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,gBAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CACpC,OAAO,CAAC,OAAO,EACf,QAAQ,EACR,OAAO,EACP,GAAG,QAAQ,CACd,CAAC;AACL,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACT,gBAAA,IAAI,SAAS,EAAE;AACX,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtB,qBAAA;AAAM,yBAAA;AACH,wBAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnB,qBAAA;AACJ,iBAAA;AACD,gBAAA,MAAM,EAAE,CAAC;AACZ,aAAA;AAAS,oBAAA;gBACN,IAAI;AACA,oBAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACrE,oBAAA,IAAI,MAAA,OAAO,CAAC,yBAAyB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,EAAE;AAC9C,wBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CACpC,eAAe,EACf,QAAQ,EACR,OAAO,CACV,CAAC;wBAEF,OAAO,CAAC,yBAAyB,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE;4BAC/D,SAAS;4BACT,gBAAgB;4BAChB,UAAU,EAAE,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE;4BAC7B,UAAU,EAAE,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,aAAa,EAAE;AACxC,yBAAA,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;AAAS,wBAAA;AACN,oBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AAClB,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;KACrC;AAEO,IAAA,OAAO,YAAY,CAAC,QAAkB,EAAE,GAAW,EAAE,MAAc,EAAA;;AACvE,QAAA,IAAI,QAAQ,EAAE;AAKV,YAAA,IAAI,MAAA,OAAO,CAAC,yBAAyB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,EAAE;gBAC9C,QAAQ,CAAC,OAAO,EAAE,CAAC;AACtB,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,oBAAA,GAAG,EAAE,MAAM;oBACX,GAAG;AACN,iBAAA,CAAC,CAAC;AACN,aAAA;YACD,OAAO,QAAQ,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AACnE,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,YAAY,CAChB,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,OAA8B,EAC9B,MAAmB,EAAA;QAEnB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;QACtD,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;QAC/D,OAAO,CAAC,4BAA4B,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACvF,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;AAE/D,QAAA,SAAS,WAAW,CAAC,GAAY,EAAE,YAAsB,EAAA;;YACrD,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,QAAQ,GAAa,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CACzC,QAAQ,EACR,GAAG,CAAC,KAAK,CAAC,GAAG,EACb,GAAG,CAAC,KAAK,CAAC,MAAM,CACnB,CAAC;gBACF,IAAI,CAAC,YAAY,KAAI,CAAA,EAAA,GAAA,OAAO,CAAC,yBAAyB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAA,EAAE;AAC/D,oBAAA,OAAO,CAAC,yBAAyB,CAAC,QAAQ,CACtC,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB,GAAG,CAAC,KAAK,CAAC,QAAQ,EAClB;AACI,wBAAA,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;wBAC9B,gBAAgB;wBAChB,UAAU,EAAE,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE;wBAC7B,UAAU,EAAE,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,aAAa,EAAE;AACxC,qBAAA,CACJ,CAAC;AACL,iBAAA;AACJ,aAAA;SACJ;AAED,QAAA,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,UAElC,MAAc,EACd,GAAiB,EACjB,KAAe,EACf,QAAwB,EACxB,QAAwB,EAAA;YAExB,IAAI,CAAC,KAAK,GAAG;gBACT,MAAM;gBACN,GAAG,EAAE,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAE;aACvB,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnE,YAAA,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChF,SAAC,CAAC;QAEF,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAE9C,IAAY,EACZ,KAAa,EAAA;;AAEb,YAAA,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,WAAW,oDAAI,MAAK,eAAe,CAAC,WAAW,EAAE,EAAE;AACzD,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,aAAA;YACD,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjE,SAAC,CAAC;QAEF,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,UAAyB,GAAG,IAAI,EAAA;AAClE,YAAA,IAAI,QAAkB,CAAC;YAGvB,MAAM,GAAG,GAAY,IAAI,CAAC;YAC1B,IAAI;AACA,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,GAAG,EAAE,CAAC;gBACd,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,gBAAA,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,CAC/C,YAAY,IAAI,6BAA6B,CAChD,CAAC;AACF,gBAAA,IAAI,UAAU,EAAE;oBACZ,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CACzC,QAAQ,EACR,OAAO,EACP,GAAG,CAAC,KAAK,CAAC,MAAM,EAChB,GAAG,CAAC,KAAK,CAAC,WAAW,CACxB,CAAC;oBAEF,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC3C,wBAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,qBAAC,CAAC,CAAC;AACN,iBAAA;gBACD,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAChD,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACT,gBAAA,IAAI,SAAS,EAAE;AACX,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtB,qBAAA;AAAM,yBAAA;AACH,wBAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnB,qBAAA;AACJ,iBAAA;AACD,gBAAA,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AACf,gBAAA,MAAM,EAAE,CAAC;AACZ,aAAA;AACL,SAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAU,OAAO,CAAC,YAAY,EAAE;AACtD,YAAA,SAAS,CAAC,MAAe,EAAA;AACrB,gBAAA,MAAM,MAAM,GAAG,IAAI,MAAM,EAAa,CAAC;AAGvC,gBAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;oBACjC,WAAW,CAAC,MAAM,CAAC,CAAC;AACpB,oBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AACnB,iBAAC,CAAC,CAAC;gBACH,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,CAAC,KAA+C,KAAI;;oBAChD,IAAI;AACA,wBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACnD,wBAAA,IAAI,SAAS,EAAE;4BACX,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC;AACxC,4BAAA,IAAI,QAAQ,EAAE;AACV,gCAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,6BAAA;AAAM,iCAAA;AACH,gCAAA,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,6BAAA;AACJ,yBAAA;wBACD,WAAW,CAAC,MAAM,CAAC,CAAC;AACvB,qBAAA;AAAS,4BAAA;AACN,wBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AAClB,qBAAA;AACL,iBAAC,CACJ,CAAC;AACF,gBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;;oBAClC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,0CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAClC,oBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,EAAE,CAAC;AACnB,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,MAAM,CAAC;aACjB;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC;KAC7C;AAED,IAAA,sBAAsB,CAAC,OAAgD,EAAA;;AACnE,QAAA,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAGnE,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,cAAc,GAChB,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;YAE/C,IAAI,MAAM,GAAgB,SAAS,CAAC;YACpC,IAAI,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;gBAC/D,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,0CAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;AACzE,aAAA;YAED,IAAI,CAAC,6BAA6B,CAC9B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,EAC1E,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,EAC7D,cAAc,CAAC,YAAY,EAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,EAC9D,cAAc,CAAC,qBAAqB,EACpC,MAAM,EACN,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,EAClE,OAAO,CAAC,qBAAqB,CACzB,cAAc,CAAC,0BAA0B,EACzC,yBAAyB,CAC5B,EACD,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,EAC1D,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,aAAa,EAAE,oBAAoB,CAAC,CACpF,CAAC;AACL,SAAA;KACJ;IAED,mBAAmB,GAAA;AACf,QAAA,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;KACzB;AAGO,IAAA,kBAAkB,CACtB,QAA2B,EAC3B,OAAoB,EACpB,YAA0B,EAAA;QAE1B,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,OAAO,MAAK,SAAS,EAAE;AAIhC,YAAA,IAAI,OAAO,CAAC,OAAO,YAAY,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE;AACjF,gBAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;oBAGjD,OAAO,CAAC,OAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjD,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAChC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC1C,oBAAA,OAAO,CAAC,OAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;AACrC,gBAAA,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC/D,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;aAAM,IAAI,QAAQ,YAAY,OAAO,IAAI,QAAQ,CAAC,OAAO,YAAY,OAAO,EAAE;AAC3E,YAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;gBAElD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA,IAAI,OAAO,EAAE;YAChB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAClD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;;AA9kBc,OAAA,CAAA,OAAO,GAAsB,OAAO,CAAC,SAAS,EAAE,CAAC;AAMjD,OAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;AACzC,OAAS,CAAA,SAAA,GAAG,CAAC;;AC5EhC,IAAY,aAKX,CAAA;AALD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACR,CAAC,EALW,aAAa,KAAb,aAAa,GAKxB,EAAA,CAAA,CAAA;;ACMM,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,SAAS,GAAG,WAAW,CAAC;AAErC,MAAM,UAAU,GAAG;IACf,QAAQ;IACR,UAAU;IACV,SAAS;CACZ,CAAC;MAKW,YAAY,CAAA;AAerB,IAAA,WAAA,CACuB,KAAa,EACb,OAAe,EACjB,UAA0B,EAC1B,QAAyB,EAC1C,OAAgB,EAChB,EAAW,EACQ,UAAoB,EACvC,cAAuB,EACJ,YAAsB,EAAA;QARtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QAGvB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAU;QAEpB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAU;QAZrC,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAChB,QAAA,IAAA,CAAA,gBAAgB,GAAkB,aAAa,CAAC,IAAI,CAAC;QAazD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAE1C,QAAA,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAE5C,QAAA,IAAI,CAAC,QAAQ;YACT,OAAO,WAAW,KAAK,WAAW;AAClC,gBAAA,OAAO,WAAW,CAAC,IAAI,KAAK,UAAU;AACtC,gBAAA,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,EAAK,YAAY,CAAC,MAAM,CAAA,CAAE,CAAC;AACzD,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC;YAC3C,IAAI;AACA,gBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,aAAA;YAAC,OAAM,EAAA,EAAA;AACJ,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAEpC,IAAI,OAAO,GAAG,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAK;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC;gBAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;aACf,EAAE,OAAO,CAAC,CAAC;AACf,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,EAAE,GAAA;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,KAAK,GAAA;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;IAED,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,KAAK,CAAC,KAAc,EAAE,gBAAkC,EAAE,QAA0B,EAAA;AAChF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;AACvB,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;AACtB,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,gBAAA,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,aAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,CACA,gBAAkC,EAClC,QAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;AACvB,YAAA,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;gBACnE,QAAQ;gBACR,QAAQ;AACX,aAAA,CAAC,CAAC;YACH,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEjE,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,SAAS,GAAW,OAAO,CAAC,iBAAiB,CAAC;AACpD,gBAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CACvD,SAAS,EACT,2BAA2B,EAC3B,QAAQ,CACX,CAAC;AAEF,gBAAA,MAAM,QAAQ,GAAW,OAAO,CAAC,gBAAgB,CAAC;AAClD,gBAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,CACtD,QAAQ,EACR,0BAA0B,EAC1B,QAAQ,CACX,CAAC;AAEF,gBAAA,MAAM,UAAU,GAAW,OAAO,CAAC,UAAU,CAAC;gBAC9C,IAAI,OAAO,CAAC,wBAAwB,CAAC,UAAU,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE;AAC9E,oBAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AACjC,iBAAA;AAED,gBAAA,IAAI,kBAAkB,IAAI,SAAS,GAAG,CAAC,EAAE;AACrC,oBAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAClE,iBAAA;AAED,gBAAA,IACI,iBAAiB;qBAChB,QAAQ,GAAG,CAAC;AACT,wBAAA,QAAQ,IAAI,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;wBACjE,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,EAC9C;AACE,oBAAA,MAAM,IAAI,KAAK,CACX,wEAAwE,CAC3E,CAAC;AACL,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;KACN;IAEO,cAAc,CAAC,aAAsB,EAAE,YAAqB,EAAA;QAChE,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAC7B,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAC/D,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/C,SAAA;QAED,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAA;KACJ;AAEO,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC1C,QAAA,IACI,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI;YAC5C,IAAI,CAAC,gBAAgB,KAAK,KAAK;AAC/B,YAAA,KAAK,KAAK,aAAa,CAAC,IAAI,EAC9B;YACE,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB;AACjB,YAAA,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI,GAAG,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC;KACjF;AAEO,IAAA,aAAa,CACjB,gBAAiC,EACjC,QAAyB,EACzB,OAA6B,EAAA;AAG7B,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI;AAEA,gBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,SAAS,EAAE;oBAC3C,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,iBAAA;AACD,gBAAA,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,gBAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7C,aAAA;AAAC,YAAA,OAAA,EAAA,EAAM,GAAE;AACb,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC3B,SAAA;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAEhB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5E,SAAA;AAGD,QAAA,IAAI,CAAC,aAAa;AACd,YAAA,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,KAAK;AACzC,kBAAE,YAAY;AACd,kBAAE,IAAI,CAAC,aAAa,CAAC;QAE7B,MAAM,cAAc,GAAmB,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;KACnC;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;KAC3C;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,SAAS,CACL,gBAAkC,EAClC,QAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,UAAU,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACN;IAED,YAAY,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;KACnC;IAES,UAAU,CAChB,gBAAiC,EACjC,QAAyB,EAAA;QAEzB,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK;AAChB,YAAA,gBAAgB,EAAE,gBAAgB;YAClC,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,UAAU,EAAE,IAAI,CAAC,WAAW;AAC5B,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,WAAW,EAAE,IAAI,CAAC,YAAY;SACjC,CAAC;KACL;AAEM,IAAA,eAAe,CAAC,OAA8B,EAAA;AAIjD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;AAEvC,QAAA,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;KAC5E;IAED,iBAAiB,GAAA;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,aAAa,GAAA;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;AAhRgB,YAAM,CAAA,MAAA,GAAG,CAAC;;AC1B/B,MAAM,EAAE,GAAW,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,MAAM,YAAY,CAAA;IACd,KAAK,GAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;IACD,SAAS,GAAA;AACL,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,KAAK,MAAW;AAEhB,IAAA,IAAI,MAAW;AAEf,IAAA,OAAO,MAAW;AAElB,IAAA,SAAS,MAAW;IAEpB,YAAY,GAAA;AACR,QAAA,OAAO,KAAK,CAAC;KAChB;AACD,IAAA,eAAe,CAAC,SAAgC,EAAA;AAC5C,QAAA,OAAO,EAAE,CAAC;KACb;IACD,iBAAiB,GAAA;AACb,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,gBAAgB,GAAA;AACZ,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,eAAe,GAAA;AACX,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,aAAa,GAAA;AACT,QAAA,OAAO,CAAC,CAAC;KACZ;AACJ,CAAA;AAEM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;;MClChD,eAAe,CAAA;AACxB,IAAA,wBAAwB,CACpB,iBAAoC,EACpC,YAA0B,EAC1B,SAAsB,EACtB,WAA+B,EAAA;;AAE/B,QAAA,MAAM,iBAAiB,GAA0B;YAC7C,cAAc,EAAE,SAAS,CAAC,OAAO;YACjC,eAAe,EAAE,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,SAAS;AAC9D,YAAA,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC1C,CAAC;AAEF,QAAA,QAAQ,iBAAiB;AACrB,YAAA,KAAA,CAAA;AACI,gBAAA,iBAAiB,CAAC,SAAS,GAAG,YAAyB,CAAC;gBACxD,MAAM;AACV,YAAA,KAAA,CAAA;AACI,gBAAA,iBAAiB,CAAC,UAAU,GAAG,YAA8B,CAAC;gBAC9D,MAAM;AACb,SAAA;AAED,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,iBAAiB,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAClD,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,OAAO,EACnB,IAAI,CACP,CAAC;AACL,SAAA;AAED,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAED,IAAA,YAAY,CAAC,CAA+B,EAAA;QACxC,OAAO;YACH,IAAI,EAAE,CAAC,CAAC,IAAI;SACf,CAAC;KACL;AAED,IAAA,iBAAiB,CAAC,CAAa,EAAA;QAC3B,OAAO;YACH,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACvB,CAAC;KACL;AACJ,CAAA;AAED,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;AACjC,MAAM,eAAe,GAAG,SAAS;;MCxE3B,mBAAmB,CAAA;AAK5B,IAAA,WAAA,CACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB,EAClB,QAAkB,EACnC,SAAkB,EAClB,aAAsB,EACtB,MAAiB,EAAA;QAPA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAa;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAP/B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAU,CAAC;AAYlC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;QAC7E,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACvC,SAAA;QACD,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,SAAA;KACJ;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACvD;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrD;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;AAChB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC/D;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;MC9EY,aAAa,CAAA;AAKtB,IAAA,WAAA,CACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB,EACnC,SAAkB,EAClB,aAAsB,EACtB,KAAc,EAAA;QANG,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAa;QAN/B,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AAWf,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;QAC7E,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACvC,SAAA;QACD,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,SAAA;KACJ;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,SAAS,CAAC,KAAK,GAAG,CAAC,EAAA;QACf,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACrE;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACnB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;MCjEY,iBAAiB,CAAA;AAK1B,IAAA,WAAA,CACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB,EACnC,SAAkB,EAClB,aAAsB,EACtB,MAAiB,EAAA;QANA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAa;AAN/B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAU,CAAC;AAWlC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;QAC7E,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACvC,SAAA;QACD,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,SAAA;KAEJ;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrD;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;AAChB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC7D;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;MC1EY,cAAc,CAAA;AAIvB,IAAA,WAAA,CAAY,OAAe,EAAA;AAHV,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,GAAG,EAAQ,CAAC;QAIpC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO;AACV,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACxD;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAM,EAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;AAED,IAAA,GAAG,CAAC,GAAM,EAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAED,WAAW,GAAA;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACzC;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;AACJ;;AC/BD,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,IAAK,UAIJ,CAAA;AAJD,CAAA,UAAK,UAAU,EAAA;AACX,IAAA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe,CAAA;AACnB,CAAC,EAJI,UAAU,KAAV,UAAU,GAId,EAAA,CAAA,CAAA,CAAA;MAEY,WAAW,CAAA;IASpB,WACqB,CAAA,UAAkB,EAClB,gBAA8B,EAAA;QAD9B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAc;AAVlC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,cAAc,CAAwB,WAAW,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,cAAc,CACjD,iBAAiB,CACpB,CAAC;AACe,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,cAAc,CACnD,mBAAmB,CACtB,CAAC;KAKE;IAEJ,gBAAgB,CACZ,SAAiB,EACjB,SAAiB,EACjB,QAAQ,GAAG,KAAK,EAChB,IAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACzD;IAED,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAA,GAAoB,EAAE,EAAA;AACjF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtD;AAED,IAAA,WAAW,CACP,SAAiB,EACjB,KAAa,EACb,OAAiB,EACjB,QAAQ,GAAG,KAAK,EAChB,IAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjE;AAEO,IAAA,gBAAgB,CAAC,IAAY,EAAE,IAAiB,EAAE,OAAiB,EAAA;AACvE,QAAA,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CACjD,IAAI,EACJ,IAAI,EACJ,UAAU,CAAC,eAAe,CAC7B,CAAC;QACF,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,UAAU,GAAG,IAAI,mBAAmB,CAChC,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,EACV,OAAO,CACV,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;AAC9C,gBAAA,MAAM,IAAI,KAAK,CAAC,eAAe,mBAAmB,CAAA,8BAAA,CAAgC,CAAC,CAAC;AACvF,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;IAEO,UAAU,CAAC,IAAY,EAAE,IAAiB,EAAA;AAC9C,QAAA,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,UAAU,GAAG,IAAI,aAAa,CAC1B,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,CACb,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;AACxC,gBAAA,MAAM,IAAI,KAAK,CAAC,eAAe,WAAW,CAAA,wBAAA,CAA0B,CAAC,CAAC;AACzE,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;IAEO,cAAc,CAAC,IAAY,EAAE,IAAiB,EAAA;AAClD,QAAA,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACzF,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,UAAU,GAAG,IAAI,iBAAiB,CAC9B,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,CACb,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;AAC5C,gBAAA,MAAM,IAAI,KAAK,CAAC,eAAe,iBAAiB,CAAA,4BAAA,CAA8B,CAAC,CAAC;AACnF,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;IAED,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;KACzC;IAED,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;KAC7C;IAED,mBAAmB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;KAC/C;IAEO,SAAS,CAAC,IAAiB,EAAE,QAAiB,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;KACzD;AAEO,IAAA,oBAAoB,CACxB,SAAiB,EACjB,IAAiB,EACjB,UAAsB,EAAA;AAGtB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,aAAA,IAAI,EAAE;AACN,aAAA,MAAM,CAAC,CAAC,IAAiB,EAAE,IAAY,KAAI;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC;SACf,EAAE,EAAE,CAAC,CAAC;AACX,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,UAAU,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAClF,OAAO;YACH,GAAG;YACH,UAAU;SACb,CAAC;KACL;AACJ;;MCpJY,QAAQ,CAAA;AAArB,IAAA,WAAA,GAAA;QAEoB,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;KACjC;AAAA;;AC6CD,MAAM,wBAAwB,GAAW,SAAS,CAAC;AACnD,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,MAAM,mBAAmB,GAAG;AACxB,IAAA,aAAa,EAAE,YAAY;CAC9B,CAAC;AACF,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAE7E,mBAAmB,CAAA;IAU5B,WAA+B,CAAA,QAAqB,EAAmB,KAAa,EAAA;QAArD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QAAmB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAPnE,IAA0B,CAAA,0BAAA,GACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAwB,CAAA,wBAAA,GACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAKrC,QAAA,KAAK,MAAM,YAAY,IAAI,wBAAwB,EAAE;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACvC,gBAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,YAAY,CAAA,CAAA,CAAG,CAAC,CAAC;AACnF,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC;YAC5B,SAAS,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AAC5D,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpC,QAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,oBAAoB,GAAG,iBAAiB;AACzC,cAAE,iBAAiB,CAAC,mBAAmB,CAAC;cACtC,uBAAuB,CAAC;KACjC;IAES,YAAY,GAAA;QAClB,OAAO,IAAI,WAAW,CAClB,IAAI,CAAC,IAAI,EACT,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,mBAAmB,CAAC,cAAc,CACpE,CAAC;KACL;IAEO,eAAe,CAAC,SAAS,GAAG,CAAC,EAAA;AAEjC,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACtF;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAWS,IAAA,gBAAgB,CACtB,gBAAiC,EACjC,QAAyB,EACzB,UAAU,GAAG,KAAK,EAAA;AAElB,QAAA,IAAI,UAAkB,CAAC;AACvB,QAAA,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;YACtC,UAAU,GAAG,YAAY,CAAC;AAC1B,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,QAAQ,GAAG;oBACP,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC;iBACjE,CAAC;AACL,aAAA;AAAM,iBAAA;gBACH,QAAQ,GAAG,SAAS,CAAC;AACxB,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,UAAU,GAAG,gBAAgB,CAAC;AACjC,SAAA;QAED,OAAO,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;KACnE;AAEO,IAAA,mBAAmB,CAAC,OAAoB,EAAA;;QAC5C,QACI,MAAA,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MACvC,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,CAAC,MAAM,EACzD;KACL;AAQD,IAAA,GAAG,CAAC,gBAAiC,EAAE,QAA0B,EAAE,OAAoB,EAAA;AACnF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AACvC,YAAA,OAAO,CAAC,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAEtE,YAAA,IAAI,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE;gBACtB,IAAI,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,OAAO,EACnB,SAAS,EACT,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CACpC,CAAC;AACL,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAES,YAAY,CAClB,UAAkB,EAClB,MAAc,EACd,IAAqB,EACrB,SAAiB,EACjB,MAAe,EAAA;AAEf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACvB,MAAM,WAAW,GAAa,cAAc,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,kBAAkB,EAAE;AAC3C,oBAAA,MAAM,EAAE,WAAW;AACtB,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,KAAK,CACD,KAAc,EACd,gBAAkC,EAClC,QAA0B,EAC1B,OAAoB,EAAA;AAEpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;AAC9B,YAAA,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;gBACnE,QAAQ;gBACR,QAAQ;AACX,aAAA,CAAC,CAAC;YACH,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAW,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9E,SAAC,CAAC,CAAC;KACN;IAES,cAAc,CACpB,GAAY,EACZ,gBAAkC,EAClC,QAA0B,EAC1B,UAAmB,EACnB,cAAuB,EAAA;QAEvB,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAE7C,QAAA,IAAI,KAAY,CAAC;QACjB,IAAI,GAAG,YAAY,KAAK,EAAE;YACtB,KAAK,GAAG,GAAG,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,GAAW,CAAC;AAChB,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;gBACzE,GAAG,GAAG,SAAS,CAAC;AACnB,aAAA;AAAM,iBAAA;AACH,gBAAA,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,aAAA;AACD,YAAA,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAE5E,QAAA,MAAM,SAAS,GAAc;YACzB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW;YACX,UAAU;SACb,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,YAAY,CACpB,IAAI,CAAC,IAAI,EACT,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,CACjB,CAAC;KACL;IAED,aAAa,CAAC,IAAY,EAAE,OAAiC,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAK;;AACpC,YAAA,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE/D,YAAA,IAAI,OAA+B,CAAC;AACpC,YAAA,IAAI,WAAW,GAAG,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,iBAAiB,MAAK,SAAS,CAAC;AAC3D,YAAA,MAAM,MAAM,GAAW,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;AAC/D,YAAA,IAAI,MAAM,EAAE;gBACR,WAAW,GAAG,IAAI,CAAC;AACnB,gBAAA,OAAO,GAAG;oBACN,MAAM;AACN,oBAAA,qBAAqB,EAAE,OAAO,CAAC,sBAAsB,CAAC,qBAAqB;iBAC9E,CAAC;AACL,aAAA;AAAM,iBAAA;AAEH,gBAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,CAAC;AAC9D,aAAA;AACD,YAAA,MAAM,QAAQ,GAAa,IAAI,YAAY,CACvC,IAAI,EACJ,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,wBAAwB,EAC7B,wBAAwB,EACxB,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,EAAE,EACX,OAAO,CAAC,qBAAqB,EAC7B,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,iBAAiB,EAC1B,WAAW,CACd,CAAC;AACF,YAAA,OAAO,QAAQ,CAAC;SACnB,EAAE,YAAY,CAAC,CAAC;KACpB;AAES,IAAA,gBAAgB,CAAC,MAAsB,EAAA;AAC7C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1F,OAAO;YACH,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,QAAQ,EAAE,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa;YACpD,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW;YACX,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC;KACL;AAEO,IAAA,mBAAmB,CAAC,MAAsB,EAAA;AAC9C,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACvC,YAAA,MAAM,IAAI,GAA6B,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAClF,MAAM,CAAC,aAAa,CACvB,CAAC;YACF,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC/E,MAAM,CAAC,MAAM,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,EAAE,CAAC;AACzB,gBAAA,MAAM,CAAC,SAAS,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,SAAS,KAAI,KAAK,CAAC;AAC5C,gBAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAG5B,aAAA;AACJ,SAAA;QAED,MAAM,YAAY,GAAiB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KACzE;AAES,IAAA,YAAY,CAClB,YAA0B,EAC1B,cAAsB,EACtB,MAAe,EAAA;AAEf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;KACtF;IAEO,oBAAoB,CAAC,KAAc,EAAE,MAAsB,EAAA;QAC/D,IAAI,CAAC,cAAc,CACf,KAAK,EACL,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,MAAM,CAChB,CAAC;KACL;IAED,QAAQ,CACJ,KAAY,EACZ,SAAyC,EACzC,gBAAkC,EAClC,QAA0B,EAC1B,OAA4B,EAAA;AAE5B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAEnC,YAAA,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3D,YAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,YAAA,IAAI,WAAW,CAAC;YAChB,IAAI,SAAS,YAAY,WAAW,EAAE;gBAClC,WAAW,GAAG,SAAS,CAAC;AAC3B,aAAA;AAAM,iBAAA;gBACH,SAAS,GAAG,SAA6B,CAAC;gBAG1C,IAAI,CAAA,MAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,aAAY,WAAW,EAAE;AACjD,oBAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzC,iBAAA;AAAM,qBAAA;AACH,oBAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACnD,iBAAA;AACJ,aAAA;AAED,YAAA,MAAM,WAAW,GAAuB,IAAI,CAAC,gBAAgB,CACzD,gBAAgB,EAChB,QAAQ,EACR,IAAI,CACP,CAAC;YAEF,MAAM,MAAM,GAAW,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAEzD,QAAQ,KAAK,CAAC,IAAI;gBACd,KAAK,OAAO,EAAE;oBACV,MAAM,UAAU,GAAG,KAAmB,CAAC;oBAIvC,MAAM,GAAG,GAA0B,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;AACnE,oBAAA,IAAI,GAAG,EAAE;AACL,wBAAA,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACpC,qBAAA;oBAED,MAAM,YAAY,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,gBAAgB,CAAC;AAG/C,oBAAA,MAAM,iBAAiB,GACnB,eAAe,CAAC,wBAAwB,CACpC,YAAY;0BACP,CAAA;0BACA,CAA4B,EACjC,YAAY;AACR,0BAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAC/C,0BAAE,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,EAC9C,WAAW,EACX,WAAW,CACd,CAAC;oBACN,iBAAiB,CAAC,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;AAExC,oBAAA,IAAI,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,EACT,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,EACL,MAAM,CACT,CAAC;oBACF,MAAM;AACT,iBAAA;AACD,gBAAA;AACI,oBAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC/C,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,gBAAgB,CACZ,SAAiB,EACjB,SAAS,GAAG,CAAC,EACb,QAAQ,GAAG,KAAK,EAChB,IAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;AACZ,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzE,SAAC,CAAC,CAAC;KACN;IAED,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAA,GAAoB,EAAE,EAAA;AACjF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;AACZ,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/D,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CACP,SAAiB,EACjB,KAAa,EACb,OAAA,GAAoB,EAAE,EACtB,QAAQ,GAAG,KAAK,EAChB,OAAoB,EAAE,EAAA;AAEtB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAK;YACvB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAqB,kBAAA,EAAA,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;AACZ,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzE,SAAC,CAAC,CAAC;KACN;IAED,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC5E;IAED,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAChF;IAED,mBAAmB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAClF;AAED,IAAA,oBAAoB,CAAC,QAA2B,EAAA;QAC5C,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KAChD;AAED,IAAA,cAAc,CAAC,OAA4B,EAAA;AACvC,QAAA,OAAO,OAAO;AACV,cAAE,MAAM,CAAC,MAAM,CACT;AACI,gBAAA,sBAAsB,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB;aAC1D,EACD,OAAO,CAAC,YAAY,CACvB;cACD,SAAS,CAAC;KACnB;AAED,IAAA,QAAQ,CAAI,IAAY,EAAE,OAA6B,EAAE,OAA4B,EAAA;;QACjF,MAAM,UAAU,GAA4B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI;AACA,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC;AAC9E,YAAA,MAAM,GAAG,CAAC;AACb,SAAA;AAAS,gBAAA;AACN,YAAA,GAAG,CAAC,IAAI,CACJ,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAC5B,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,0CAAE,OAAO,EAC7B,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,CACvB,CAAC;AACL,SAAA;KACJ;AAED,IAAA,MAAM,aAAa,CACf,IAAY,EACZ,OAAsC,EACtC,OAA4B,EAAA;;QAE5B,MAAM,UAAU,GAA4B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI;AACA,YAAA,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC;AAC9E,YAAA,MAAM,GAAG,CAAC;AACb,SAAA;AAAS,gBAAA;AACN,YAAA,GAAG,CAAC,IAAI,CACJ,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAC5B,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,0CAAE,OAAO,EAC7B,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,CACvB,CAAC;AACL,SAAA;KACJ;;AA9eyB,mBAAc,CAAA,cAAA,GAAG,oBAAoB;;ACrDnE,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,aAAa,GAAG,EAAE,CAAC;MAEZ,uBAAuB,CAAA;AAMhC,IAAA,WAAA,CAAY,KAAc,EAAA;AALT,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAoC,CAAC;AAC1D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,KAAK,EAA4B,CAAC;QAKlE,IAAI,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;AAC5D,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACtD,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,KAAK,GAAG,aAAa,CAAC;AACzB,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAG1D,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;KAClD;AAED,IAAA,GAAG,CAAC,KAA+B,EAAA;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CACX,CAAA,8DAAA,EAAiE,KAAK,CAAC,EAAE,CAAE,CAAA,CAC9E,CAAC;AACL,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE;AAG9C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9D,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,SAAA;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;KACnC;AAED,IAAA,QAAQ,CAAC,MAAc,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACvC;AAED,IAAA,UAAU,CAAC,MAAc,EAAA;AACrB,QAAA,IAAI,OAAiC,CAAC;AACtC,QAAA,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AAInC,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AACnC,YAAA,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AAChD,YAAA,MAAM,YAAY,GACd,UAAU,IAAI,CAAC;AACf,iBAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACtE,YAAA,IAAI,YAAY,IAAI,UAAU,GAAG,WAAW,EAAE;gBAC1C,OAAO,GAAG,KAAK,CAAC;gBAChB,WAAW,GAAG,UAAU,CAAC;AAC5B,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AACJ;;AClEK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAC9C,IAAA,WAAA,CACI,IAAY,EACZ,SAAyB,EACzB,OAAwB,EACxB,MAAe,EACf,SAAmB,EACnB,aAAsB,EACtB,qBAA8B,EAAA;AAE9B,QAAA,KAAK,CACD,IAAI,EACJ,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,KAAA,IAAA,IAArB,qBAAqB,KAAA,KAAA,CAAA,GAArB,qBAAqB,GAAI,EAAE,CAAC,EAC/D,SAAS,EACT,aAAa,CAChB,CAAC;KACL;AAGD,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAES,UAAU,CAAC,UAAkB,EAAE,QAAyB,EAAA;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACtD,QAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;ACvCD,MAAM,MAAM,GAAW,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,gBAAgB,CAAA;IAClB,KAAK,GAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IACD,SAAS,GAAA;AACL,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,KAAK,MAAW;AAGhB,IAAA,IAAI,MAAW;AAGf,IAAA,OAAO,MAAW;AAGlB,IAAA,SAAS,MAAW;IAEpB,YAAY,GAAA;AACR,QAAA,OAAO,KAAK,CAAC;KAChB;AACD,IAAA,eAAe,CAAC,SAAgC,EAAA;AAC5C,QAAA,OAAO,EAAE,CAAC;KACb;IACD,iBAAiB,GAAA;AACb,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,gBAAgB,GAAA;AACZ,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,eAAe,GAAA;AACX,QAAA,OAAO,SAAS,CAAC;KACpB;IACD,aAAa,GAAA;AACT,QAAA,OAAO,CAAC,CAAC;KACZ;AACJ,CAAA;AAEM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;;AC7B/D,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAO3D,IAAA,WAAA,CAAY,QAAqB,EAAE,KAAa,EAAmB,WAAoB,EAAA;AACnF,QAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QADwC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAS;AAL/E,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAE5C,IAA8B,CAAA,8BAAA,GAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAI3C;AAED,IAAA,iBAAiB,CACb,IAAY,EACZ,MAAe,EACf,SAAmB,EACnB,OAA8B,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAK;AACpC,YAAA,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEtC,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,EAAE,MAAK,SAAS,EAAE;AAC3B,gBAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACvF,aAAA;AAED,YAAA,MAAM,eAAe,GAAG,IAAI,gBAAgB,CACxC,IAAI,EACJ,IAAI,CAAC,8BAA8B,EACnC,IAAI,CAAC,wBAAwB,EAC7B,MAAM,EACN,SAAS,EACT,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,iBAAiB,EAC1B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CACtC,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,gBAAA,MAAM,KAAK,GAA6B;AACpC,oBAAA,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE;oBAC3B,IAAI;AACJ,oBAAA,aAAa,EAAE,eAAe,CAAC,gBAAgB,EAAE;AACjD,oBAAA,SAAS,EAAE,eAAe,CAAC,YAAY,EAAE;iBAC5C,CAAC;AACF,gBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAErC,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE;oBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AACnD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;AACrC,oBAAA,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;AACzC,iBAAA;AACD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC;AAC9C,aAAA;AAED,YAAA,OAAO,eAA+B,CAAC;SAC1C,EAAE,gBAAgB,CAAC,CAAC;KACxB;AAEO,IAAA,uBAAuB,CAAC,MAAsB,EAAA;AAGlD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnE,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,YAAY,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEhD,YAAA,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,OAAO;AACV,SAAA;QAED,MAAM,YAAY,GAAiB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;KACxC;AAES,IAAA,gBAAgB,CAAC,MAAsB,EAAA;QAC7C,MAAM,YAAY,GAAiB,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClE,QAAA,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAA,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1C,QAAA,OAAO,YAAY,CAAC;KACvB;IAED,uBAAuB,GAAA;;AACnB,QAAA,OAAO,MAAA,IAAI,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;KAC5C;IAED,2BAA2B,GAAA;;AACvB,QAAA,OAAO,MAAA,IAAI,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,EAAE,CAAC;KACnD;IAES,YAAY,GAAA;AAClB,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;KACtD;AAED,IAAA,2BAA2B,CAAC,MAAc,EAAA;QACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACvD;AACJ;;AC3GD,MAAM,SAAS,GAAG,CAAC,CAAC;MAEP,qBAAqB,CAAA;IAK9B,WAA6B,CAAA,MAAuB,EAAmB,IAAc,EAAA;QAAxD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAAmB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAU;QAH7E,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QACT,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAGlE,QAAA,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACzC;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,SAAA;KACJ;IAED,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAEO,IAAA,cAAc,CAAC,KAAiB,EAAA;;AACpC,QAAA,IAAI,YAAY,GAAkB,CAAA,EAAA,GAAA,KAAK,CAAC,YAAY,qDAAI,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAEvC,YAAA,YAAY,GAAI,KAAa,CAAC,IAAI,CAAC;AACtC,SAAA;QACD,MAAM,SAAS,GAAgB,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAEvE,QAAA,IAAI,SAAS,EAAE;YAEX,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;AAC9B,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;AACzD,wBAAA,KAAK,EAAE,IAAI;AACd,qBAAA,CAAC,CAAC;AACN,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAEO,IAAA,oBAAoB,CAAC,IAAmB,EAAA;;QAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YAC9C,MAAM,OAAO,GAAG,CAAA,EAAA,GAAA,cAAc,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAE,CAAC;AACtD,YAAA,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,QAAQ,EAAE;AACzC,gBAAA,OAAO,cAAc,CAAC;AACzB,aAAA;YACD,IAAI,OAAO,KAAK,OAAO,EAAE;gBACrB,MAAM,YAAY,GAAG,cAAkC,CAAC;gBACxD,IAAI,CAAA,CAAA,EAAA,GAAA,YAAY,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,QAAQ,EAAE;AAC/C,oBAAA,OAAO,YAAY,CAAC;AACvB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AACJ;;AC5DM,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAWrD,IAAK,SAGJ,CAAA;AAHD,CAAA,UAAK,SAAS,EAAA;AACV,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACX,CAAC,EAHI,SAAS,KAAT,SAAS,GAGb,EAAA,CAAA,CAAA,CAAA;MAOY,iBAAiB,CAAA;AAG1B,IAAA,WAAA,CACqB,YAAyB,EACzB,gBAAiC,EACjC,kBAAqC,EAAA;QAFrC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;QACzB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AALlD,QAAA,IAAA,CAAA,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;QAOxD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QACvE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;KACtF;AAEM,IAAA,SAAS,CAAC,MAAoB,EAAA;QACjC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAE5C,YAAA,MAAM,MAAM,GAAe;gBACvB,KAAK,EAAE,SAAS,CAAC,OAAO;gBACxB,IAAI,EAAE,cAAc,CAAC,KAAK;aAC7B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElC,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEjE,YAAA,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtE,MAAM,CAAC,WAAW,CACd;AACI,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,IAAI,EAAE,sBAAsB;aAC/B,EACD,GAAG,EACH,CAAC,cAAc,CAAC,KAAK,CAAC,CACzB,CAAC;AACL,SAAA;KACJ;AAEM,IAAA,UAAU,CAAC,MAAoB,EAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChC,SAAA;KACJ;AAEO,IAAA,wBAAwB,CAAC,CAAmC,EAAA;AAChE,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAwB,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE;YAC7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAA4B,CAAC,CAAC;AAC9D,SAAA;KACJ;IAEO,wBAAwB,GAAA;QAE5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AACJ;;ACtFM,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAC3C,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,oBAAoB,GAAG,SAAS,CAAC;MAcjC,eAAe,CAAA;IAOxB,WACqB,CAAA,KAAmB,EACnB,eAAgC,EAAA;QADhC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QACnB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QARpC,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzE,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAU,CAAA,UAAA,GAAuB,EAAE,CAAC;QACpC,IAAc,CAAA,cAAA,GAA2B,EAAE,CAAC;QAMhD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO,CAAC,wBAAwB,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAG3E,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;KACzE;AAEO,IAAA,oBAAoB,CAAC,CAA8B,EAAA;AAEvD,QAAA,IACI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,qBAAqB;AACrC,YAAA,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB;AACtC,YAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,WAAW;YACjC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,EACzD;AACE,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;AAEM,IAAA,OAAO,CAAC,GAAqB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACxB,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,IAAI,EAAE,GAAG;AACZ,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAEM,IAAA,WAAW,CAAC,OAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACxB,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,IAAI,EAAE,OAAO;AAChB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;KACnC;AACJ;;MCvEY,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACY,IAAW,CAAA,WAAA,GAAoB,EAAE,CAAC;QAClC,IAAe,CAAA,eAAA,GAAwB,EAAE,CAAC;QAC1C,IAAiB,CAAA,iBAAA,GAA0B,EAAE,CAAC;KA2EzD;AAzEG,IAAA,GAAG,CAAC,aAAmC,EAAA;;AACnC,QAAA,IAAI,MAAA,aAAa,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CACjB,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,CAC3B,CAAC,EAAa,KACV,IAAI,aAAa,CACb,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,YAAY,EACf,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EACtC,EAAE,CAAC,gBAAgB,EACnB,EAAE,CAAC,oBAAoB,EACvB,EAAE,CAAC,KAAK,CACX,CACR,CACJ,CAAC;AACL,SAAA;AAED,QAAA,IAAI,MAAA,aAAa,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,GAAG,aAAa,CAAC,cAAc,CAAC,GAAG,CAC/B,CAAC,EAAiB,KACd,IAAI,iBAAiB,CACjB,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,YAAY,EACf,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EACtC,EAAE,CAAC,gBAAgB,EACnB,EAAE,CAAC,oBAAoB,EACvB,EAAE,CAAC,MAAM,CACZ,CACR,CACJ,CAAC;AACL,SAAA;AAED,QAAA,IAAI,MAAA,aAAa,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACvB,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,CACjC,CAAC,EAAmB,KAChB,IAAI,mBAAmB,CACnB,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,YAAY,EACf,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EACtC,EAAE,CAAC,OAAO,EACV,EAAE,CAAC,gBAAgB,EACnB,EAAE,CAAC,oBAAoB,EACvB,EAAE,CAAC,MAAM,CACZ,CACR,CACJ,CAAC;AACL,SAAA;KACJ;IAED,aAAa,GAAA;QAET,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,SAAS,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,iBAAiB,GAAA;QAEb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAC9C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,SAAS,CAC5C,CAAC;QACF,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IACD,mBAAmB,GAAA;QAEf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAClD,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,SAAS,CAC5C,CAAC;QACF,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AACJ;;AC/EM,MAAM,qBAAqB,GAAG,IAAI,CAAC;MAE7B,eAAe,CAAA;IAIxB,WAA6B,CAAA,UAA2B,EAAE,aAAsB,EAAA;QAAnD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiB;QAHvC,IAAa,CAAA,aAAA,GAAW,qBAAqB,CAAC;QAI3D,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC5D,IACI,OAAO,CAAC,wBAAwB,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC;YAC1E,aAAa,GAAG,CAAC,EACnB;AACE,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACtC,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAgB,EAAA;AAC3D,QAAA,MAAM,GAAG,GAAqB;YAC1B,MAAM;YACN,IAAI;YACJ,OAAO;SACV,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAChC;AAED,IAAA,wBAAwB,CAAC,UAAmC,EAAA;AACxD,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QAGrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC3E;IAEO,sBAAsB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAyB;YAClC,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;YACpF,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAC5C,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CACjD;YACD,gBAAgB,EAAE,cAAc,CAAC,mBAAmB,CAChD,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CACnD;SACJ,CAAC;AAEF,QAAA,IACI,OAAO,CAAC,UAAU,CAAC,MAAM;YACzB,OAAO,CAAC,cAAc,CAAC,MAAM;AAC7B,YAAA,OAAO,CAAC,gBAAgB,CAAC,MAAM,EACjC;AACE,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,SAAA;KACJ;AACJ;;AC1BD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,uCAAuC,GAAG,wBAAwB,GAAG,aAAa,CAAC,MAAM,CAAC;AAGhG,SAAS,QAAQ,MAAW;MAEf,WAAW,CAAA;AAyBpB,IAAA,IAAI,qBAAqB,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAI,mBAAmB,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IACD,IAAI,mBAAmB,CAAC,QAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;KACxC;AAED,IAAA,IAAI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IACD,IAAI,kBAAkB,CAAC,QAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;KACvC;AAED,IAAA,WAAA,CAA6B,aAA2B,EAAA;QAA3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;AA1CvC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAgB,CAAC;AACzC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAwD,CAAC;AAC/E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AAMd,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,GAAG,EAAgB,CAAC;AACtD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,GAAG,EAAwB,CAAC;QAExD,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;AACnB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEhE,IAAO,CAAA,OAAA,GAAkB,SAAS,CAAC;QACnC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAGpB,IAAc,CAAA,cAAA,GAAkB,CAAC,CAAC;KAqBkB;IAE5D,WAAW,CAAC,IAAY,EAAE,OAAgC,EAAA;;QACtD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC/E,SAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAA,iBAAA,CAAmB,CAAC,CAAC;AACxE,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC;QAE/C,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,aAAa,MAAK,SAAS,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,qBAAqB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,mBAAmB,CAAC;QAEpF,IAAI,CAAC,gBAAgB,GAAG,CAAA,MAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,KAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAC3F,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,CACvC,IAAI,EACJ,IAAI,EACJ,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,2BAA2B,CACvC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,eAAe,GAAG,IAAI,eAAe,CACvC,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,sBAAsB,CAAC,EAC5D,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,4BAA4B,CACxC,CAAC;AACF,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;AAClD,SAAA;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;YAExC,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAC3C,CAAC,GAAqB,KAAI;gBACtB,GAAG,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC5D,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;AAEtE,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACvD,aAAC,EACD,CAAC,GAAyB,KAAI;AAC1B,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC/B,EACD,MAAK;gBACD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACpE,aAAC,CACJ,CAAC;AACL,SAAA;AAGD,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAI,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,CAAA,CAAC;AAEvE,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpF,OAAO;AACH,YAAA,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5C,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,YAAA,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAChE,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,YAAA,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACtE,YAAA,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1D,YAAA,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5D,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AACpE,YAAA,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9E,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,YAAA,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAEhE,YAAA,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACxE,YAAA,oBAAoB,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtF,wBAAwB,EAAE,IAAI,CAAC,SAAS;AACpC,kBAAE,QAAQ;kBACR,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAEtD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,cAAc,EAAE,IAAI,CAAC,WAAW;AAC5B,kBAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACjE,kBAAE,QAAQ;YACd,aAAa,EAAE,IAAI,CAAC,WAAW;AAC3B,kBAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAClE,kBAAE,QAAQ;SACjB,CAAC;KACL;AAED,IAAA,kBAAkB,CAAC,IAAY,EAAA;QAC3B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE;YAExC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,uCAAuC,CAAC,GAAG,aAAa,CAAC;AACrF,SAAA;QACD,IAAI,KAAK,GAAiD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAA,0BAAA,CAA4B,CAAC,CAAC;AACjF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,IAAI,OAAO,GAAA;;AACP,QAAA,OAAO,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;KAC/B;AAED,IAAA,iCAAiC,CAAC,MAAc,EAAA;;QAC5C,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;KAC9D;IAGD,MAAM,CACF,UAAkB,EAClB,MAAc,EACd,IAAqB,EACrB,SAAiB,EACjB,MAAc,EAAA;;AAEd,QAAA,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAGpB,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,UAAU,KAAI,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,CAAA,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;QACtF,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACpD,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1D,cAAc,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAEhD,QAAA,MAAM,OAAO,GAAY;YACrB,SAAS;YACT,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,cAAc;YACd,UAAU;AACV,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE,IAAI,CAAC,OAAO;AAC3B,YAAA,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE;YAC3C,eAAe,EAAE,IAAI,CAAC,gBAAgB;AAEtC,YAAA,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;SACjC,CAAC;AAEF,QAAA,MAAM,WAAW,GAAwB;YACrC,MAAM;YACN,IAAI;YACJ,OAAO;SACV,CAAC;AAMF,QAAA,OAAO,CAAC,WAAW,GAAG,cAAc,CAAC,sBAAsB,CACvD,IAAI,CAAC,mBAAmB,EACxB,WAAW,CACd,CAAC;AACF,QAAA,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,sBAAsB,CACtD,IAAI,CAAC,kBAAkB,EACvB,WAAW,CACd,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAGjB,YAAA,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACzC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxD,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,OAAO,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAChF,aAAA;AACD,YAAA,OAAO,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAChF,YAAA,OAAO,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAClF,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,MAAM,WAAW,GAAgB;gBAC7B,MAAM;gBACN,IAAI;gBACJ,OAAO;aACV,CAAC;AAEF,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAEO,IAAA,UAAU,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAgB,EAAA;AACtE,QAAA,MAAM,kBAAkB,GAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAC7E,CAAC,SAAuB,KAAI;;YACxB,OAAA,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC;AAChD,gBAAA,EAAC,CAAA,EAAA,GAAA,SAAS,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,CAAI,CAAA,CAAA;AAAA,SAAA,CAC1C,CAAC;AAEF,QAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE;AAExC,gBAAA,IAAI,QAAQ,GAAW,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAEtE,IAAI;oBACA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBAEzC,IAAI,QAAQ,GAAG,CAAC,EAAE;wBACd,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC3D,qBAAA;AACJ,iBAAA;AAAC,gBAAA,OAAO,GAAG,EAAE;oBACV,QAAQ,IAAI,CAAC,CAAC;AAEd,oBAAA,IAAI,QAAQ,IAAI,WAAW,CAAC,sBAAsB,EAAE;AAChD,wBAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,wBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,KAAK,CAAC,EAAE;AACrE,4BAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAGvD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAED,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IAED,gCAAgC,GAAA;;QAC5B,OAAO;AACH,YAAA,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,EAAE;AACjD,YAAA,qBAAqB,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,2BAA2B,EAAE;SACvE,CAAC;KACL;IAED,oBAAoB,GAAA;AAChB,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChF,aAAA;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;AACrC,SAAA;KACJ;IAED,sBAAsB,GAAA;QAClB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;AAEpC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACtC,SAAA;KACJ;IAED,oBAAoB,CAAC,SAAuB,EAAE,OAA6B,EAAA;AACvE,QAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACpC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7C,IACI,CAAC,CAAC,SAAS,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;AACrE,aAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,WAAW,CAAA,EACtB;AACE,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACxD,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,wBAAwB,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AACjE,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;YAC5C,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnD,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3D,sBAAsB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClE,SAAA,CAAC,CAAC;KACN;IAEO,iBAAiB,GAAA;;QACrB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,aAAa,EAAE,CACxB,CAAC;AACF,QAAA,OAAO,SAAS,CAAC,MAAM,CACnB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACzB,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE,KAAI,EAAE,CAC5C,CAAC;KACL;IAEO,qBAAqB,GAAA;;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,iBAAiB,EAAE,CAC5B,CAAC;AACF,QAAA,OAAO,SAAS,CAAC,MAAM,CACnB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACzB,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,EAAE,KAAI,EAAE,CAChD,CAAC;KACL;IAEO,uBAAuB,GAAA;;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,mBAAmB,EAAE,CAC9B,CAAC;AACF,QAAA,OAAO,SAAS,CAAC,MAAM,CACnB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACzB,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,EAAE,KAAI,EAAE,CAClD,CAAC;KACL;AAED,IAAA,oBAAoB,CAAC,QAA2B,EAAA;AAC5C,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC9C;AAED,IAAA,mBAAmB,CAAC,MAAc,EAAA;QAC9B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI;gBACA,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpB,aAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACV,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACvB,oBAAA,MAAM,GAAG,CAAC;AACb,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAED,kBAAkB,GAAA;QACd,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAEO,IAAA,WAAW,CAAC,MAA6C,EAAA;AAC7D,QAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;YAC9B,MAAM,GAAG,MAAM,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAEpD,MAAM,GAAG,SAAS,CAAC;AACtB,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAA,CAAE,CAAC,CAAC;AACxD,SAAA;KACJ;IAED,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;;AAnZc,WAAsB,CAAA,sBAAA,GAAG,CAAC;;MCjDhC,KAAK,CAAA;AAId,IAAA,IAAY,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvD,SAAA;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,WAAA,CAA6B,aAA2B,EAAA;QAA3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;AACpD,QAAA,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;KAC3D;IAEM,uBAAuB,CAC1B,IAAY,EACZ,OAAgC,EAAA;AAEhC,QAAA,MAAM,MAAM,GAA2B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpF,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;AACnE,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,kBAAkB,CAAC,IAAa,EAAA;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KACrD;AACJ,CAAA;AAEM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;;ACvC7C,MAAM,uBAAuB,GAAG,qCAAqC,CAAC;AAItE,MAAM,UAAU,GAAa;AACzB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,iBAAiB,EAAE,gBAAgB;AACnC,IAAA,UAAU,EAAE,YAAY;CAC3B,CAAC;AACF,MAAM,QAAQ,GAAa;AACvB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,iBAAiB,EAAE,OAAO;AAC1B,IAAA,UAAU,EAAE,OAAO;CACtB,CAAC;AACF,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,cAAc,GAAG,WAAW,CAAC;MAEtB,gBAAgB,CAAA;AAIzB,IAAA,WAAA,CAAY,WAAyB,EAAA;AAHpB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAa,CAAA,aAAA,GAAa,EAAE,CAAC;AAG1C,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAC9C,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAgB,EAAA;QAC3D,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAE1C,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YACtB,OAAO;AACV,SAAA;QAED,IAAI,EAAE,KAAK,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;AAC1B,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC/B,YAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;YACpB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;YAC9C,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;AACvD,SAAA;AAAM,aAAA;YACH,KAAK,GAAG,EAAE,CAAC;AACd,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KACnD;AAEO,IAAA,UAAU,CAAC,QAAgB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;AACjE,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,QACI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EACvF;KACL;AAED,IAAA,SAAS,CAAC,MAAuB,EAAA;QAC7B,IAAI,MAAM,YAAY,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,SAAA;KACJ;AAED,IAAA,YAAY,CAAC,MAAuB,EAAA;QAChC,IAAI,MAAM,YAAY,MAAM,EAAE;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9E,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,SAAA;KACJ;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;KAC3D;IAED,UAAU,GAAA;QACN,MAAM,OAAO,GAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;KACpD;IAEO,IAAI,CACR,KAAa,EACb,KAAe,EACf,MAAgB,EAChB,KAAgB,GAAA,YAAY,EAC5B,OAAA,GAAkB,cAAc,EAAA;AAEhC,QAAA,MAAM,GAAG,GAAG,CAAA,MAAA,EAAS,KAAK,CAAqB,kBAAA,EAAA,OAAO,EAAE,CAAC;AAEzD,QAAA,OAAO,CAAC,GAAG,CACP,YAAY,KAAK,CAAA,CAAE,EACnB,uDAAuD,EACvD,GAAG,EACH,KAAK,IAAI,EAAE,EACX,MAAM,IAAI,EAAE,CACf,CAAC;KACL;AAEO,IAAA,UAAU,CAAC,IAAc,EAAA;QAE7B,OAAO,CAAC,GAAG,CACP,oBAAoB,EACpB,uDAAuD,EACvD,IAAI,IAAI,EAAE,CACb,CAAC;KACL;AACJ;;ACxHM,MAAM,OAAO,GAAG;;ACKV,MAAA,YAAY,GAAiB,IAAI,gBAAgB,CAAC;AAC3D,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,cAAc,EAAE,CAAC,MAA0B,KAAI;QAC3C,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;KAC5D;AACD,IAAA,aAAa,EAAE,CAAC,CAAU,EAAE,IAAa,KAAI;QACzC,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACrC;AACJ,CAAA,EAAE;AACH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,MAAA,uBAAuB,GAAG,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE;AACpE,MAAA,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE;AAEhE,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,cAAc,CAAC;;;;"}