@codefilm/recorder 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1553 -0
- package/dist/code-film.css +1 -0
- package/dist/core/FilmRecorder.d.ts +192 -0
- package/dist/core/FilmRecorder.d.ts.map +1 -0
- package/dist/core/FilmRecorder.js +1504 -0
- package/dist/core/agent.d.ts +27 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +258 -0
- package/dist/core/app-script.d.ts +232 -0
- package/dist/core/app-script.d.ts.map +1 -0
- package/dist/core/app-script.js +916 -0
- package/dist/core/iframe-bridge.d.ts +34 -0
- package/dist/core/iframe-bridge.d.ts.map +1 -0
- package/dist/core/iframe-bridge.js +97 -0
- package/dist/core/recording-overlays.d.ts +12 -0
- package/dist/core/recording-overlays.d.ts.map +1 -0
- package/dist/core/recording-overlays.js +237 -0
- package/dist/core/types.d.ts +256 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.umd.cjs +156 -0
- package/dist/react/RegionRecorder.d.ts +7 -0
- package/dist/react/RegionRecorder.d.ts.map +1 -0
- package/dist/react/RegionRecorder.js +190 -0
- package/dist/react/useFilmRecorder.d.ts +11 -0
- package/dist/react/useFilmRecorder.d.ts.map +1 -0
- package/dist/react/useFilmRecorder.js +61 -0
- package/dist/vanilla/RegionRecorderUI.d.ts +21 -0
- package/dist/vanilla/RegionRecorderUI.d.ts.map +1 -0
- package/dist/vanilla/RegionRecorderUI.js +128 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--cfr-bg: rgba(255, 255, 255, .9);--cfr-fg: #18181b;--cfr-border: #e4e4e7;--cfr-primary: #18181b;--cfr-primary-fg: #f4f4f5;--cfr-secondary: #f4f4f5;--cfr-secondary-fg: #18181b;--cfr-ghost-hover: #f4f4f5;--cfr-destructive: #ef4444;--cfr-destructive-fg: #ffffff;--cfr-muted-fg: #71717a;--cfr-outline: #f43f5e;--cfr-backdrop: rgba(0, 0, 0, .18);--cfr-glass-blur: 12px}@media(prefers-color-scheme:dark){:root{--cfr-bg: rgba(9, 9, 11, .9);--cfr-fg: #f4f4f5;--cfr-border: rgba(255, 255, 255, .1);--cfr-primary: #f4f4f5;--cfr-primary-fg: #09090b;--cfr-secondary: #27272a;--cfr-secondary-fg: #f4f4f5;--cfr-ghost-hover: #27272a;--cfr-destructive: #ef4444;--cfr-destructive-fg: #ffffff;--cfr-muted-fg: #a1a1aa;--cfr-backdrop: rgba(0, 0, 0, .3)}}.cfr-settings-bar,.cfr-settings-bar *{box-sizing:border-box;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}.cfr-settings-bar{position:fixed;top:0;left:0;right:0;z-index:2147483640;height:56px;padding:0 16px;background-color:var(--cfr-bg);backdrop-filter:blur(var(--cfr-glass-blur));-webkit-backdrop-filter:blur(var(--cfr-glass-blur));border-bottom:1px solid var(--cfr-border);display:flex;align-items:center;overflow-x:auto;scrollbar-width:none}.cfr-settings-bar::-webkit-scrollbar{display:none}.cfr-settings-bar-content{display:flex;align-items:center;gap:12px;flex-wrap:nowrap}.cfr-divider{height:20px;width:1px;background-color:var(--cfr-border);margin:0 4px}.cfr-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:500;height:32px;padding:0 12px;border-radius:6px;border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background-color .15s,border-color .15s,opacity .15s;-webkit-user-select:none;user-select:none}.cfr-btn:disabled{opacity:.5;cursor:not-allowed}.cfr-btn-default{background-color:var(--cfr-primary);color:var(--cfr-primary-fg)}.cfr-btn-default:hover:not(:disabled){opacity:.9}.cfr-btn-secondary{background-color:var(--cfr-secondary);color:var(--cfr-secondary-fg);border-color:var(--cfr-border)}.cfr-btn-secondary:hover:not(:disabled){opacity:.9}.cfr-btn-destructive{background-color:var(--cfr-destructive);color:var(--cfr-destructive-fg)}.cfr-btn-destructive:hover:not(:disabled){opacity:.9}.cfr-btn-ghost{background-color:transparent;color:var(--cfr-fg)}.cfr-btn-ghost:hover:not(:disabled){background-color:var(--cfr-ghost-hover)}.cfr-kbd{font-family:monospace;font-size:10px;background-color:#80808026;color:var(--cfr-muted-fg);padding:1px 4px;border-radius:4px;margin-left:4px;text-transform:uppercase}.cfr-select-wrapper{position:relative}.cfr-select{appearance:none;-webkit-appearance:none;height:32px;width:200px;padding:0 24px 0 10px;font-size:12px;background-color:transparent;color:var(--cfr-fg);border:1px solid var(--cfr-border);border-radius:6px;cursor:pointer;outline:none;transition:border-color .15s}.cfr-select:focus{border-color:var(--cfr-fg)}.cfr-select:disabled{opacity:.5;cursor:not-allowed}.cfr-select-wrapper:after{content:"";position:absolute;right:10px;top:50%;transform:translateY(-50%);border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid var(--cfr-fg);pointer-events:none;opacity:.7}.cfr-checkbox-container{display:flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.cfr-label{font-size:12px;color:var(--cfr-fg);cursor:pointer;white-space:nowrap}.cfr-checkbox{appearance:none;-webkit-appearance:none;width:14px;height:14px;border:1px solid var(--cfr-border);border-radius:4px;outline:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s}.cfr-checkbox:checked{background-color:var(--cfr-fg);border-color:var(--cfr-fg)}.cfr-checkbox:checked:after{content:"✓";font-size:10px;color:var(--cfr-bg);font-weight:700}.cfr-checkbox:disabled{opacity:.5;cursor:not-allowed}.cfr-grid-overlay{position:fixed;left:0;right:0;bottom:0;pointer-events:none;z-index:40}.cfr-crop-box{position:fixed;pointer-events:none;z-index:50;box-shadow:0 0 0 9999px var(--cfr-backdrop);transition:none}.cfr-simulated-pointer{position:fixed;width:24px;height:30px;margin:0;padding:0;border:0;border-radius:0;outline:0;background-color:transparent;box-shadow:none;background-position:center;background-repeat:no-repeat;background-size:contain;filter:drop-shadow(0 2px 2px rgba(0,0,0,.35));z-index:2147483647;pointer-events:none;transform:translate(-2px,-2px);display:none;transition:transform .15s ease}.cfr-simulated-pointer.cfr-holding{transform:translate(-2px,-2px) scale(.88)}.cfr-simulated-pointer:after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;border:2px solid var(--cfr-pointer-ripple-color, #64748b);box-shadow:0 0 0 5px color-mix(in srgb,var(--cfr-pointer-ripple-color, #64748b) 38%,transparent),0 0 0 10px color-mix(in srgb,var(--cfr-pointer-ripple-color, #64748b) 16%,transparent);transform:translate(-50%,-50%) scale(1);opacity:0;pointer-events:none}.cfr-simulated-pointer.cfr-holding:after{animation:cfr-ripple 1s infinite}.cfr-simulated-pointer.cfr-ripple-disabled:after{display:none;animation:none}.cfr-recording-overlay,.cfr-recording-overlay *{box-sizing:border-box}.cfr-recording-overlay{-webkit-user-select:none;user-select:none}.cfr-camera-overlay video,.cfr-camera-overlay-fallback{position:absolute;inset:0}.cfr-camera-overlay-fallback{display:flex;align-items:center;justify-content:center;padding:14px;color:#f8fafc;background:radial-gradient(circle at 35% 25%,rgba(148,163,184,.35),transparent 42%),linear-gradient(135deg,#111827,#020617);font:600 12px/1.25 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;text-align:center}.cfr-recording-overlay-resize{position:absolute;right:8px;bottom:8px;width:18px;height:18px;border-right:2px solid rgba(255,255,255,.86);border-bottom:2px solid rgba(255,255,255,.86);cursor:nwse-resize;filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))}@keyframes cfr-ripple{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(3);opacity:0}}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Resolution, RecorderState, FilmRecorderOptions, RecordingArtifact, StateChangeListener, TypingOptions, FilmScriptScene, FilmScriptExecutionOptions, FilmScriptReadyCallback, FilmScriptRunOptions, FilmScriptValidationResult, FixedRecordingRegion, FinishRecordingOptions, CameraRecordingOverlayOptions, CustomRecordingOverlayOptions, RecordingOverlayHandle, RecordingOverlayDefinition } from './types';
|
|
2
|
+
export declare const DEFAULT_RESOLUTIONS: Resolution[];
|
|
3
|
+
export declare const COLS = 24;
|
|
4
|
+
export declare const MIN_BOX_COLS = 6;
|
|
5
|
+
export declare const HOLD_MS = 1000;
|
|
6
|
+
export declare const HOLD_RADIUS_PX = 12;
|
|
7
|
+
export declare const LERP = 0.12;
|
|
8
|
+
export declare const LERP_IN = 0.08;
|
|
9
|
+
export declare const LERP_OUT = 0.015;
|
|
10
|
+
export declare const ZOOM_OUT_AFTER_MOVE_MS = 3000;
|
|
11
|
+
export declare const SCROLL_PAUSE_MS = 500;
|
|
12
|
+
export declare const HEADER_PX = 56;
|
|
13
|
+
export declare const OUTLINE_PX = 2;
|
|
14
|
+
export declare const SHORTCUT_KEY = "j";
|
|
15
|
+
export declare const DEFAULT_COMPLETION_TIMEOUT_MS = 120000;
|
|
16
|
+
export declare const DEFAULT_SELECTOR_TIMEOUT_MS = 3000;
|
|
17
|
+
export declare const SDK_TYPING_DEFAULTS: Readonly<Required<TypingOptions>>;
|
|
18
|
+
export declare const HUMAN_TYPING_PRESET: Readonly<Required<TypingOptions>>;
|
|
19
|
+
export declare class FilmRecorder {
|
|
20
|
+
private options;
|
|
21
|
+
private listeners;
|
|
22
|
+
private state;
|
|
23
|
+
private videoEl;
|
|
24
|
+
private canvasEl;
|
|
25
|
+
private recorder;
|
|
26
|
+
private stream;
|
|
27
|
+
private chunks;
|
|
28
|
+
private lastRecording;
|
|
29
|
+
private lastRecordingError;
|
|
30
|
+
private recordingStartedAt;
|
|
31
|
+
private timelineMetadata;
|
|
32
|
+
private activeFilmTitle;
|
|
33
|
+
private destroyed;
|
|
34
|
+
private cameraRafId;
|
|
35
|
+
private renderRafId;
|
|
36
|
+
private targetRect;
|
|
37
|
+
private liveRect;
|
|
38
|
+
private mousePosGlobal;
|
|
39
|
+
private holdTimer;
|
|
40
|
+
private zoomOutTimer;
|
|
41
|
+
private scrollPausedUntil;
|
|
42
|
+
private anchorX;
|
|
43
|
+
private anchorY;
|
|
44
|
+
private pointerEl;
|
|
45
|
+
private pointerX;
|
|
46
|
+
private pointerY;
|
|
47
|
+
private tourRafId;
|
|
48
|
+
private tourAbortController;
|
|
49
|
+
private activeFilmScriptContext;
|
|
50
|
+
private activeFilmScriptOptions;
|
|
51
|
+
private activeExecutionPromise;
|
|
52
|
+
private finalizationPromise;
|
|
53
|
+
private pendingActionGates;
|
|
54
|
+
private activeTypingRandom;
|
|
55
|
+
private ignoredElements;
|
|
56
|
+
private overlays;
|
|
57
|
+
constructor(options?: FilmRecorderOptions);
|
|
58
|
+
computeGrid(vw: number, vh: number): {
|
|
59
|
+
cellW: number;
|
|
60
|
+
cellH: number;
|
|
61
|
+
rows: number;
|
|
62
|
+
};
|
|
63
|
+
private getAspectBox;
|
|
64
|
+
private getRecordingRegionBox;
|
|
65
|
+
private clampRect;
|
|
66
|
+
private centeredRectOnPoint;
|
|
67
|
+
private setupEventListeners;
|
|
68
|
+
private cleanupEventListeners;
|
|
69
|
+
private handleResize;
|
|
70
|
+
private handleMouseMove;
|
|
71
|
+
private handleScrollOrWheel;
|
|
72
|
+
private handleKeyDown;
|
|
73
|
+
private armHold;
|
|
74
|
+
private scheduleIdleZoomOut;
|
|
75
|
+
private calculateElementRect;
|
|
76
|
+
private startCameraLoop;
|
|
77
|
+
zoomToMouse(): void;
|
|
78
|
+
private getFullFrameRect;
|
|
79
|
+
private setFullFrameRect;
|
|
80
|
+
zoomTop(immediate?: boolean): void;
|
|
81
|
+
zoomCenter(immediate?: boolean): void;
|
|
82
|
+
zoomBottom(immediate?: boolean): void;
|
|
83
|
+
zoomBottomFold(): void;
|
|
84
|
+
zoomTopFold(immediate?: boolean): void;
|
|
85
|
+
resetFullScreen(): void;
|
|
86
|
+
zoomTopFullFrame(immediate?: boolean): void;
|
|
87
|
+
private getRecordingElapsedMs;
|
|
88
|
+
private beginTimelineMetadata;
|
|
89
|
+
private finishTimelineMetadata;
|
|
90
|
+
private recordTimelineMarker;
|
|
91
|
+
private recordOverlayEvent;
|
|
92
|
+
private renderRecordingOverlays;
|
|
93
|
+
createCameraOverlay(options: CameraRecordingOverlayOptions): RecordingOverlayHandle;
|
|
94
|
+
registerOverlay(options: CustomRecordingOverlayOptions): RecordingOverlayHandle;
|
|
95
|
+
getOverlay(id: string): RecordingOverlayHandle | null;
|
|
96
|
+
removeOverlay(id: string): void;
|
|
97
|
+
setOverlays(overlays: RecordingOverlayDefinition[]): void;
|
|
98
|
+
private startTimelineScene;
|
|
99
|
+
private endTimelineScene;
|
|
100
|
+
private startTimelineAction;
|
|
101
|
+
private endTimelineAction;
|
|
102
|
+
getLastRecording(): RecordingArtifact | null;
|
|
103
|
+
clearLastRecording(): void;
|
|
104
|
+
getLastRecordingError(): Error | null;
|
|
105
|
+
private normalizeRecordingError;
|
|
106
|
+
private handleRecordingError;
|
|
107
|
+
private requestCaptureStream;
|
|
108
|
+
private attachCaptureStream;
|
|
109
|
+
private waitForCaptureVideoFrame;
|
|
110
|
+
private stopCaptureStream;
|
|
111
|
+
private hideIgnoredElements;
|
|
112
|
+
private restoreIgnoredElements;
|
|
113
|
+
private getActiveCaptureStream;
|
|
114
|
+
prepareCapture(): Promise<boolean>;
|
|
115
|
+
startRecording(): Promise<boolean>;
|
|
116
|
+
stopRecording(): void;
|
|
117
|
+
captureBitmap(): void;
|
|
118
|
+
private ensurePointerEl;
|
|
119
|
+
private applyPointerClassName;
|
|
120
|
+
private validatePointerColor;
|
|
121
|
+
private applyPointerColors;
|
|
122
|
+
private resetPointerEntryPosition;
|
|
123
|
+
private getTargetElement;
|
|
124
|
+
animatePointerTo(target: string | Element, durationMs?: number, signal?: AbortSignal, selectorTimeoutMs?: number): Promise<void>;
|
|
125
|
+
private dispatchPointerHover;
|
|
126
|
+
simulateClick(target: string | Element, signal?: AbortSignal, selectorTimeoutMs?: number): Promise<void>;
|
|
127
|
+
private isFormTypingTarget;
|
|
128
|
+
private isContentEditableTypingTarget;
|
|
129
|
+
private dispatchKeyboardInputEvents;
|
|
130
|
+
private typeChar;
|
|
131
|
+
private typeContentEditableChar;
|
|
132
|
+
private simulateBackspace;
|
|
133
|
+
private simulateContentEditableBackspace;
|
|
134
|
+
private focusTypingTarget;
|
|
135
|
+
simulateType(target: string | Element, text: string, options?: number | TypingOptions, signal?: AbortSignal): Promise<void>;
|
|
136
|
+
private simulateTypeWithRandom;
|
|
137
|
+
private getPlausibleTypo;
|
|
138
|
+
playPointerTour(selector: string, options?: {
|
|
139
|
+
moveDuration?: number;
|
|
140
|
+
holdDuration?: number;
|
|
141
|
+
}): Promise<void>;
|
|
142
|
+
getState(): RecorderState;
|
|
143
|
+
onStateChange(listener: StateChangeListener): () => boolean;
|
|
144
|
+
private updateState;
|
|
145
|
+
setResolution(resolution: Resolution): void;
|
|
146
|
+
setAutoZoom(autoZoom: boolean): void;
|
|
147
|
+
setPauseDuringScroll(pauseDuringScroll: boolean): void;
|
|
148
|
+
setShowGrid(showGrid: boolean): void;
|
|
149
|
+
setShowOutline(showOutline: boolean): void;
|
|
150
|
+
setMousePaused(mousePaused: boolean): void;
|
|
151
|
+
setElementSelector(selector: string | null): void;
|
|
152
|
+
setElementPadding(padding: number): void;
|
|
153
|
+
setFixedRecordingRegion(fixedRecordingRegion: FixedRecordingRegion | null): void;
|
|
154
|
+
setMovePointerToSelector(selector: string | null): void;
|
|
155
|
+
setPointerClassName(className: string): void;
|
|
156
|
+
setPointerFillColor(hexColor: string): void;
|
|
157
|
+
setPointerBorderColor(hexColor: string): void;
|
|
158
|
+
setPointerRippleColor(hexColor: string): void;
|
|
159
|
+
setDisableRipple(disableRipple: boolean): void;
|
|
160
|
+
setIgnoreSelector(selector: string | null): void;
|
|
161
|
+
setTypingDefaults(options: TypingOptions): void;
|
|
162
|
+
private resolveSelectorTimeoutMs;
|
|
163
|
+
private resolveTypingOptions;
|
|
164
|
+
private validateTypingOptions;
|
|
165
|
+
private delay;
|
|
166
|
+
private findElementByText;
|
|
167
|
+
private findElementByTextAsync;
|
|
168
|
+
clickText(text: string, signal?: AbortSignal): Promise<void>;
|
|
169
|
+
focusText(text: string, signal?: AbortSignal): Promise<void>;
|
|
170
|
+
private createSelectorError;
|
|
171
|
+
validateFilmScript(script: string): FilmScriptValidationResult;
|
|
172
|
+
private createScriptValidationError;
|
|
173
|
+
private updateTourState;
|
|
174
|
+
stopTour(): Promise<void>;
|
|
175
|
+
stopAll(): Promise<void>;
|
|
176
|
+
finishRecording(options?: FilmScriptReadyCallback | FinishRecordingOptions): Promise<void>;
|
|
177
|
+
private finalizeRecording;
|
|
178
|
+
executeFilmScript(script: string, options?: FilmScriptExecutionOptions): Promise<void>;
|
|
179
|
+
private executeFilmScriptScenes;
|
|
180
|
+
runFilmScript(script: string, options?: FilmScriptRunOptions): Promise<void>;
|
|
181
|
+
private awaitActionGates;
|
|
182
|
+
private waitForCompletion;
|
|
183
|
+
private throwIfAborted;
|
|
184
|
+
private createSeededRandom;
|
|
185
|
+
private isAbortError;
|
|
186
|
+
private completeActiveFilmScript;
|
|
187
|
+
private failActiveFilmScript;
|
|
188
|
+
private linkAbortSignals;
|
|
189
|
+
destroy(): void;
|
|
190
|
+
}
|
|
191
|
+
export declare function parseFilmScript(script: string): FilmScriptScene[];
|
|
192
|
+
//# sourceMappingURL=FilmRecorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilmRecorder.d.ts","sourceRoot":"","sources":["../../src/core/FilmRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAEV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EAKjB,mBAAmB,EACnB,aAAa,EAEb,eAAe,EACf,0BAA0B,EAE1B,uBAAuB,EACvB,oBAAoB,EAGpB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,EAC7B,6BAA6B,EAC7B,sBAAsB,EACtB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAOjB,eAAO,MAAM,mBAAmB,EAAE,UAAU,EAM3C,CAAC;AAEF,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,OAAO,OAAO,CAAC;AAC5B,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,IAAI,OAAO,CAAC;AACzB,eAAO,MAAM,OAAO,OAAO,CAAC;AAC5B,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,6BAA6B,SAAU,CAAC;AACrD,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAKhE,CAAC;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAKhE,CAAC;AAEH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,SAAS,CAAuC;IAExD,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAoB;IAEpC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAa;IAEhC,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,QAAQ,CAAO;IAEvB,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,uBAAuB,CAA2C;IAC1E,OAAO,CAAC,uBAAuB,CAA2C;IAC1E,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,kBAAkB,CAKlB;IACR,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,eAAe,CAAoE;IAC3F,OAAO,CAAC,QAAQ,CAA8C;gBAElD,OAAO,GAAE,mBAAwB;IA4ItC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;;;;IAQzC,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,YAAY,CAelB;IAEF,OAAO,CAAC,eAAe,CAYrB;IAEF,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,aAAa,CAyBnB;IAEF,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,oBAAoB;IA8D5B,OAAO,CAAC,eAAe;IAgChB,WAAW;IAWlB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,gBAAgB;IASjB,OAAO,CAAC,SAAS,GAAE,OAAe;IAIlC,UAAU,CAAC,SAAS,GAAE,OAAe;IAIrC,UAAU,CAAC,SAAS,GAAE,OAAe;IAIrC,cAAc;IAId,WAAW,CAAC,SAAS,GAAE,OAAe;IAItC,eAAe;IAIf,gBAAgB,CAAC,SAAS,GAAE,OAAe;IAKlD,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,uBAAuB;IAOxB,mBAAmB,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB;IAYnF,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB;IAY/E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI;IAIrD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAO/B,WAAW,CAAC,QAAQ,EAAE,0BAA0B,EAAE,GAAG,IAAI;IAUhE,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,iBAAiB;IAalB,gBAAgB,IAAI,iBAAiB,GAAG,IAAI;IAI5C,kBAAkB,IAAI,IAAI;IAO1B,qBAAqB,IAAI,KAAK,GAAG,IAAI;IAI5C,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,oBAAoB;YAQd,oBAAoB;YASpB,mBAAmB;YAOnB,wBAAwB;IAgCtC,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,sBAAsB;IAOjB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAclC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IA2JxC,aAAa;IAwBb,aAAa;IAapB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,yBAAyB;YAUnB,gBAAgB;IA6BjB,gBAAgB,CAC3B,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,UAAU,GAAE,MAAY,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,iBAAiB,GAAE,MAAuC,GACzD,OAAO,CAAC,IAAI,CAAC;IAwEhB,OAAO,CAAC,oBAAoB;IAcf,aAAa,CACxB,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,iBAAiB,GAAE,MAAuC,GACzD,OAAO,CAAC,IAAI,CAAC;IAqEhB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,6BAA6B;IAIrC,OAAO,CAAC,2BAA2B;IAkCnC,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,gCAAgC;YAgC1B,iBAAiB;IAwBlB,YAAY,CACvB,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;YAWF,sBAAsB;IAyGpC,OAAO,CAAC,gBAAgB;IAejB,eAAe,CACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,IAAI,CAAC;IA+FT,QAAQ,IAAI,aAAa;IAIzB,aAAa,CAAC,QAAQ,EAAE,mBAAmB;IAOlD,OAAO,CAAC,WAAW;IAMZ,aAAa,CAAC,UAAU,EAAE,UAAU;IAepC,WAAW,CAAC,QAAQ,EAAE,OAAO;IAI7B,oBAAoB,CAAC,iBAAiB,EAAE,OAAO;IAI/C,WAAW,CAAC,QAAQ,EAAE,OAAO;IAI7B,cAAc,CAAC,WAAW,EAAE,OAAO;IAInC,cAAc,CAAC,WAAW,EAAE,OAAO;IAInC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAa1C,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAWjC,uBAAuB,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI;IAiBzE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKhD,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAMrC,mBAAmB,CAAC,QAAQ,EAAE,MAAM;IAMpC,qBAAqB,CAAC,QAAQ,EAAE,MAAM;IAMtC,qBAAqB,CAAC,QAAQ,EAAE,MAAM;IAMtC,gBAAgB,CAAC,aAAa,EAAE,OAAO;IAMvC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASzC,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAItD,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,qBAAqB;IA+B7B,OAAO,CAAC,KAAK;IAyBb,OAAO,CAAC,iBAAiB;YA0BX,sBAAsB;IAwBvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,OAAO,CAAC,mBAAmB;IAQpB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,0BAA0B;IAiErE,OAAO,CAAC,2BAA2B;IAanC,OAAO,CAAC,eAAe;IAKV,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,eAAe,CACpB,OAAO,CAAC,EAAE,uBAAuB,GAAG,sBAAsB,GACzD,OAAO,CAAC,IAAI,CAAC;YAeF,iBAAiB;IAuCxB,iBAAiB,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC;YAkCF,uBAAuB;IA8JxB,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC;YAmCF,gBAAgB;YAoBhB,iBAAiB;IAoC/B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,YAAY;YASN,wBAAwB;YAsBxB,oBAAoB;IAiClC,OAAO,CAAC,gBAAgB;IAqBjB,OAAO;CAoCf;AAQD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAqCjE"}
|